summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS179
-rw-r--r--NEWS.html48
-rw-r--r--NEWS.xml176
-rw-r--r--README8
-rw-r--r--RELEASE-NOTES-TMP.xml773
-rw-r--r--RELEASE-NOTES.html501
-rw-r--r--RELEASE-NOTES.txt731
-rw-r--r--RELEASE-NOTES.xml647
-rw-r--r--REVISION2
-rw-r--r--VERSION8
-rw-r--r--VERSION.xsl8
-rw-r--r--assembly/assemble.xsl80
-rw-r--r--catalog.xml6
-rw-r--r--common/af.xml24
-rw-r--r--common/am.xml24
-rw-r--r--common/ar.xml24
-rw-r--r--common/as.xml24
-rw-r--r--common/ast.xml24
-rw-r--r--common/az.xml24
-rw-r--r--common/bg.xml24
-rw-r--r--common/bn.xml24
-rw-r--r--common/bn_in.xml24
-rw-r--r--common/bs.xml24
-rw-r--r--common/ca.xml24
-rw-r--r--common/cs.xml24
-rw-r--r--common/cy.xml24
-rw-r--r--common/da.xml24
-rw-r--r--common/de.xml24
-rw-r--r--common/el.xml24
-rw-r--r--common/en.xml24
-rw-r--r--common/eo.xml24
-rw-r--r--common/es.xml24
-rw-r--r--common/et.xml24
-rw-r--r--common/eu.xml24
-rw-r--r--common/fa.xml24
-rw-r--r--common/fi.xml24
-rw-r--r--common/fr.xml24
-rw-r--r--common/ga.xml24
-rw-r--r--common/gentext.xsl11
-rw-r--r--common/gl.xml24
-rw-r--r--common/gu.xml24
-rw-r--r--common/he.xml24
-rw-r--r--common/hi.xml24
-rw-r--r--common/hr.xml24
-rw-r--r--common/hu.xml24
-rw-r--r--common/id.xml24
-rw-r--r--common/is.xml24
-rw-r--r--common/it.xml24
-rw-r--r--common/ja.xml24
-rw-r--r--common/ka.xml24
-rw-r--r--common/kn.xml24
-rw-r--r--common/ko.xml24
-rw-r--r--common/ky.xml24
-rw-r--r--common/l10n.xsl82
-rw-r--r--common/la.xml24
-rw-r--r--common/labels.xsl27
-rw-r--r--common/lt.xml24
-rw-r--r--common/lv.xml24
-rw-r--r--common/ml.xml24
-rw-r--r--common/mn.xml24
-rw-r--r--common/mr.xml24
-rw-r--r--common/nb.xml104
-rw-r--r--common/nds.xml24
-rw-r--r--common/nl.xml24
-rw-r--r--common/nn.xml106
-rw-r--r--common/olink.xsl52
-rw-r--r--common/or.xml24
-rw-r--r--common/pa.xml24
-rw-r--r--common/pl.xml24
-rw-r--r--common/pt.xml24
-rw-r--r--common/pt_br.xml24
-rw-r--r--common/ro.xml24
-rw-r--r--common/ru.xml24
-rw-r--r--common/sk.xml24
-rw-r--r--common/sl.xml24
-rw-r--r--common/sq.xml24
-rw-r--r--common/sr.xml24
-rw-r--r--common/sr_Latn.xml24
-rw-r--r--common/sv.xml24
-rw-r--r--common/ta.xml24
-rw-r--r--common/te.xml24
-rw-r--r--common/th.xml24
-rw-r--r--common/titles.xsl20
-rw-r--r--common/tl.xml24
-rw-r--r--common/tr.xml24
-rw-r--r--common/uk.xml24
-rw-r--r--common/vi.xml24
-rw-r--r--common/xh.xml24
-rw-r--r--common/zh.xml24
-rw-r--r--common/zh_cn.xml24
-rw-r--r--common/zh_tw.xml24
-rw-r--r--docsrc/reference.xml4
-rw-r--r--docsrc/reference.xml.included1922
-rw-r--r--eclipse/profile-eclipse.xsl10
-rw-r--r--epub3/epub3-chunk-mods.xsl13
-rw-r--r--epub3/epub3-element-mods.xsl155
-rw-r--r--extensions/webhelpindexer.jarbin236607 -> 237885 bytes
-rw-r--r--fo/admon.xsl5
-rw-r--r--fo/autoidx.xsl41
-rw-r--r--fo/autotoc.xsl4
-rw-r--r--fo/callout.xsl73
-rw-r--r--fo/component.xsl18
-rw-r--r--fo/division.xsl26
-rw-r--r--fo/docbook.xsl3
-rw-r--r--fo/ebnf.xsl6
-rw-r--r--fo/fo.xsl6
-rw-r--r--fo/graphics.xsl21
-rw-r--r--fo/htmltbl.xsl5
-rw-r--r--fo/inline.xsl52
-rw-r--r--fo/lists.xsl54
-rw-r--r--fo/math.xsl69
-rw-r--r--fo/pagesetup.xsl107
-rw-r--r--fo/param.xml163
-rw-r--r--fo/param.xsl13
-rw-r--r--fo/profile-docbook.xsl3
-rw-r--r--fo/refentry.xsl10
-rw-r--r--fo/sections.xsl10
-rw-r--r--fo/spaces.xsl23
-rw-r--r--fo/table.xml2
-rw-r--r--fo/table.xsl26
-rw-r--r--fo/titlepage.templates.xml9
-rw-r--r--fo/titlepage.templates.xsl14
-rw-r--r--fo/verbatim.xsl4
-rw-r--r--fo/xref.xsl21
-rw-r--r--highlighting/bourne-hl.xml95
-rw-r--r--highlighting/c-hl.xml42
-rw-r--r--highlighting/cmake-hl.xml187
-rw-r--r--highlighting/cpp-hl.xml3
-rw-r--r--highlighting/csharp-hl.xml1
-rw-r--r--highlighting/css21-hl.xml176
-rw-r--r--highlighting/lua-hl.xml140
-rw-r--r--highlighting/php-hl.xml7
-rw-r--r--highlighting/sql1999-hl.xml496
-rw-r--r--highlighting/sql2003-hl.xml565
-rw-r--r--highlighting/sql92-hl.xml339
-rw-r--r--highlighting/upc-hl.xml133
-rw-r--r--highlighting/xslthl-config.xml12
-rw-r--r--html/admon.xsl6
-rw-r--r--html/autoidx.xsl4
-rw-r--r--html/autotoc.xsl32
-rw-r--r--html/block.xsl19
-rw-r--r--html/chunk-common.xsl64
-rw-r--r--html/chunker.xsl10
-rw-r--r--html/component.xsl3
-rw-r--r--html/docbook.xsl139
-rw-r--r--html/ebnf.xsl6
-rw-r--r--html/footnote.xsl23
-rw-r--r--html/formal.xsl34
-rw-r--r--html/glossary.xsl12
-rw-r--r--html/graphics.xsl53
-rw-r--r--html/highlight.xsl12
-rw-r--r--html/htmltbl.xsl5
-rw-r--r--html/inline.xsl22
-rw-r--r--html/param.xml187
-rw-r--r--html/param.xsl10
-rw-r--r--html/profile-chunk-code.xsl6
-rw-r--r--html/profile-docbook.xsl114
-rw-r--r--html/verbatim.xsl4
-rw-r--r--html/xref.xsl118
-rw-r--r--htmlhelp/profile-htmlhelp-common.xsl24
-rw-r--r--javahelp/profile-javahelp.xsl4
-rw-r--r--log10
-rw-r--r--manpages/lists.xsl13
-rw-r--r--manpages/utility.xsl10
-rwxr-xr-xparams/activate.external.olinks.xml69
-rw-r--r--params/article.appendix.title.properties.xml3
-rw-r--r--params/disable.collapsible.xml28
-rw-r--r--params/disable.incremental.xml28
-rw-r--r--params/double.sided.xml18
-rw-r--r--params/foil.footer.properties.xml27
-rw-r--r--params/foil.header.properties.xml36
-rw-r--r--params/foil.master.properties.xml46
-rw-r--r--params/foil.page-sequence.properties.xml31
-rw-r--r--params/foil.properties.xml1
-rw-r--r--params/foil.region-after.properties.xml32
-rw-r--r--params/foil.region-before.properties.xml34
-rw-r--r--params/foil.region-body.properties.xml37
-rw-r--r--params/foil.title.properties.xml31
-rw-r--r--params/footnote.properties.xml1
-rwxr-xr-xparams/force.blank.pages.xml46
-rw-r--r--params/generate.copyright.xml28
-rw-r--r--params/generate.foilgroup.numbered.toc.xml29
-rw-r--r--params/generate.foilgroup.toc.xml28
-rw-r--r--params/generate.handoutnotes.xml28
-rw-r--r--params/generate.page.number.xml58
-rw-r--r--params/generate.pubdate.xml28
-rw-r--r--params/generate.speakernotes.xml28
-rw-r--r--params/generate.titlepage.xml28
-rw-r--r--params/handoutnotes.properties.xml28
-rw-r--r--params/mml.embedding.mode.fo.xml54
-rw-r--r--params/mml.embedding.mode.xml78
-rw-r--r--params/page.height.portrait.xml2
-rw-r--r--params/page.margin.inner.xml2
-rw-r--r--params/page.margin.outer.xml2
-rw-r--r--params/page.width.portrait.xml3
-rw-r--r--params/passivetex.extensions.xml17
-rw-r--r--params/s5.controls.xml28
-rw-r--r--params/s5.defaultview.xml30
-rw-r--r--params/s5.opera.css.xml28
-rw-r--r--params/s5.outline.css.xml27
-rw-r--r--params/s5.path.prefix.xml29
-rw-r--r--params/s5.print.css.xml27
-rw-r--r--params/s5.slides.css.xml27
-rw-r--r--params/s5.slides.js.xml28
-rw-r--r--params/slides.titlepage.author.properties.xml32
-rw-r--r--params/slides.titlepage.authorgroup.properties.xml28
-rw-r--r--params/slides.titlepage.corpauthor.properties.xml32
-rw-r--r--params/slides.titlepage.master.properties.xml46
-rw-r--r--params/slides.titlepage.pubdate.properties.xml32
-rw-r--r--params/slides.titlepage.region-body.properties.xml33
-rw-r--r--params/slides.titlepage.subtitle.properties.xml34
-rw-r--r--params/slides.titlepage.title.properties.xml40
-rw-r--r--params/slidy.duration.xml29
-rw-r--r--params/slidy.path.prefix.xml29
-rw-r--r--params/slidy.slidy.css.xml27
-rw-r--r--params/slidy.slidy.js.xml27
-rw-r--r--params/slidy.user.css.xml27
-rw-r--r--params/speakernotes.properties.xml28
-rw-r--r--params/svg.embedding.mode.fo.xml53
-rw-r--r--params/svg.embedding.mode.xml78
-rw-r--r--params/user.css.xml29
-rw-r--r--params/webhelp.include.search.tab.xml2
-rw-r--r--params/wrap.slidecontent.xml28
-rw-r--r--params/writing.mode.xml2
-rw-r--r--profiling/xsl2profile.xsl2
-rw-r--r--roundtrip/dbk2wordml.xsl28
-rw-r--r--slides/README11
-rw-r--r--slides/RELEASE-NOTES.xml135
-rw-r--r--slides/browser/CTOCWidget.js169
-rw-r--r--slides/browser/overlay.js142
-rw-r--r--slides/browser/slides-default.css9
-rw-r--r--slides/browser/slides-frames.css73
-rw-r--r--slides/browser/slides-plain.css1
-rw-r--r--slides/browser/slides-table.css41
-rw-r--r--slides/browser/slides-w3c.css1
-rw-r--r--slides/browser/slides.css119
-rw-r--r--slides/browser/slides.js120
-rw-r--r--slides/browser/ua.js135
-rw-r--r--slides/browser/xbCollapsibleLists.js537
-rw-r--r--slides/browser/xbDOM.js374
-rw-r--r--slides/browser/xbDebug.js311
-rw-r--r--slides/browser/xbLibrary.js80
-rw-r--r--slides/browser/xbStyle-css.js791
-rw-r--r--slides/browser/xbStyle-nn4.js485
-rw-r--r--slides/browser/xbStyle-not-supported.js77
-rw-r--r--slides/browser/xbStyle.js295
-rw-r--r--slides/common/common.xsl19
-rw-r--r--slides/doc/slides.xml1371
-rw-r--r--slides/doc/user.css6
-rw-r--r--slides/fo/param.xml989
-rw-r--r--slides/fo/param.xsl177
-rw-r--r--slides/fo/plain-titlepage.xml44
-rw-r--r--slides/fo/plain-titlepage.xsl67
-rw-r--r--slides/fo/plain.xsl743
-rw-r--r--slides/graphics/active/arr-next.pngbin122 -> 0 bytes
-rw-r--r--slides/graphics/active/arr-prev.pngbin118 -> 0 bytes
-rw-r--r--slides/graphics/active/but-fforward.pngbin575 -> 0 bytes
-rw-r--r--slides/graphics/active/but-info.pngbin587 -> 0 bytes
-rw-r--r--slides/graphics/active/but-next.pngbin557 -> 0 bytes
-rw-r--r--slides/graphics/active/but-prev.pngbin563 -> 0 bytes
-rw-r--r--slides/graphics/active/but-rewind.pngbin595 -> 0 bytes
-rw-r--r--slides/graphics/active/nav-home.pngbin372 -> 0 bytes
-rw-r--r--slides/graphics/active/nav-next.pngbin406 -> 0 bytes
-rw-r--r--slides/graphics/active/nav-prev.pngbin405 -> 0 bytes
-rw-r--r--slides/graphics/active/nav-toc.pngbin220 -> 0 bytes
-rw-r--r--slides/graphics/active/nav-up.pngbin422 -> 0 bytes
-rw-r--r--slides/graphics/active/w3c-next.pngbin163 -> 0 bytes
-rw-r--r--slides/graphics/active/w3c-prev.pngbin159 -> 0 bytes
-rw-r--r--slides/graphics/active/w3c-toc.pngbin232 -> 0 bytes
-rw-r--r--slides/graphics/arrow.gifbin144 -> 0 bytes
-rw-r--r--slides/graphics/blank.gifbin123 -> 0 bytes
-rw-r--r--slides/graphics/blank.pngbin100 -> 0 bytes
-rw-r--r--slides/graphics/hidetoc.gifbin922 -> 0 bytes
-rw-r--r--slides/graphics/inactive/but-fforward.pngbin573 -> 0 bytes
-rw-r--r--slides/graphics/inactive/but-info.pngbin301 -> 0 bytes
-rw-r--r--slides/graphics/inactive/but-next.pngbin560 -> 0 bytes
-rw-r--r--slides/graphics/inactive/but-prev.pngbin569 -> 0 bytes
-rw-r--r--slides/graphics/inactive/but-rewind.pngbin594 -> 0 bytes
-rw-r--r--slides/graphics/inactive/nav-home.pngbin365 -> 0 bytes
-rw-r--r--slides/graphics/inactive/nav-next.pngbin384 -> 0 bytes
-rw-r--r--slides/graphics/inactive/nav-prev.pngbin420 -> 0 bytes
-rw-r--r--slides/graphics/inactive/nav-toc.pngbin226 -> 0 bytes
-rw-r--r--slides/graphics/inactive/nav-up.pngbin232 -> 0 bytes
-rw-r--r--slides/graphics/inactive/w3c-next.pngbin251 -> 0 bytes
-rw-r--r--slides/graphics/inactive/w3c-prev.pngbin257 -> 0 bytes
-rw-r--r--slides/graphics/inactive/w3c-toc.pngbin246 -> 0 bytes
-rw-r--r--slides/graphics/plus.gifbin137 -> 0 bytes
-rw-r--r--slides/graphics/pointer.pngbin172 -> 0 bytes
-rw-r--r--slides/graphics/showtoc.gifbin922 -> 0 bytes
-rw-r--r--slides/graphics/toc/bullet.pngbin167 -> 0 bytes
-rw-r--r--slides/graphics/toc/closed.pngbin157 -> 0 bytes
-rw-r--r--slides/graphics/toc/open.pngbin146 -> 0 bytes
-rw-r--r--slides/html/css.xsl46
-rw-r--r--slides/html/default.xsl261
-rw-r--r--slides/html/flat.xsl70
-rw-r--r--slides/html/frames.xsl2016
-rw-r--r--slides/html/graphics.xsl151
-rw-r--r--slides/html/jscript.xsl127
-rw-r--r--slides/html/param.xml1376
-rw-r--r--slides/html/param.xsl69
-rw-r--r--slides/html/plain.xsl472
-rw-r--r--slides/html/slides-common.xsl1541
-rw-r--r--slides/html/tables.xsl336
-rw-r--r--slides/html/vslides.xsl667
-rw-r--r--slides/html/w3c.xsl376
-rw-r--r--slides/htmlhelp/htmlhelp.xsl89
-rw-r--r--slides/images/callouts/1.pngbin0 -> 1154 bytes
-rw-r--r--slides/images/callouts/1.svg6
-rw-r--r--slides/images/callouts/10.pngbin0 -> 1756 bytes
-rw-r--r--slides/images/callouts/10.svg6
-rw-r--r--slides/images/callouts/11.pngbin0 -> 1280 bytes
-rw-r--r--slides/images/callouts/11.svg6
-rw-r--r--slides/images/callouts/12.pngbin0 -> 1662 bytes
-rw-r--r--slides/images/callouts/12.svg6
-rw-r--r--slides/images/callouts/13.pngbin0 -> 1720 bytes
-rw-r--r--slides/images/callouts/13.svg6
-rw-r--r--slides/images/callouts/14.pngbin0 -> 1544 bytes
-rw-r--r--slides/images/callouts/14.svg6
-rw-r--r--slides/images/callouts/15.pngbin0 -> 1758 bytes
-rw-r--r--slides/images/callouts/15.svg6
-rw-r--r--slides/images/callouts/16.pngbin0 -> 1797 bytes
-rw-r--r--slides/images/callouts/16.svg6
-rw-r--r--slides/images/callouts/17.pngbin0 -> 1472 bytes
-rw-r--r--slides/images/callouts/17.svg6
-rw-r--r--slides/images/callouts/18.pngbin0 -> 1815 bytes
-rw-r--r--slides/images/callouts/18.svg6
-rw-r--r--slides/images/callouts/19.pngbin0 -> 1827 bytes
-rw-r--r--slides/images/callouts/19.svg6
-rw-r--r--slides/images/callouts/2.pngbin0 -> 1561 bytes
-rw-r--r--slides/images/callouts/2.svg6
-rw-r--r--slides/images/callouts/20.pngbin0 -> 2033 bytes
-rw-r--r--slides/images/callouts/20.svg6
-rw-r--r--slides/images/callouts/21.pngbin0 -> 1638 bytes
-rw-r--r--slides/images/callouts/21.svg6
-rw-r--r--slides/images/callouts/22.pngbin0 -> 1923 bytes
-rw-r--r--slides/images/callouts/22.svg6
-rw-r--r--slides/images/callouts/23.pngbin0 -> 2006 bytes
-rw-r--r--slides/images/callouts/23.svg6
-rw-r--r--slides/images/callouts/24.pngbin0 -> 1785 bytes
-rw-r--r--slides/images/callouts/24.svg6
-rw-r--r--slides/images/callouts/25.pngbin0 -> 1991 bytes
-rw-r--r--slides/images/callouts/25.svg6
-rw-r--r--slides/images/callouts/26.pngbin0 -> 2058 bytes
-rw-r--r--slides/images/callouts/26.svg6
-rw-r--r--slides/images/callouts/27.pngbin0 -> 1815 bytes
-rw-r--r--slides/images/callouts/27.svg6
-rw-r--r--slides/images/callouts/28.pngbin0 -> 2082 bytes
-rw-r--r--slides/images/callouts/28.svg6
-rw-r--r--slides/images/callouts/29.pngbin0 -> 2087 bytes
-rw-r--r--slides/images/callouts/29.svg6
-rw-r--r--slides/images/callouts/3.pngbin0 -> 1655 bytes
-rw-r--r--slides/images/callouts/3.svg6
-rw-r--r--slides/images/callouts/30.pngbin0 -> 2108 bytes
-rw-r--r--slides/images/callouts/30.svg6
-rw-r--r--slides/images/callouts/4.pngbin0 -> 1363 bytes
-rw-r--r--slides/images/callouts/4.svg6
-rw-r--r--slides/images/callouts/5.pngbin0 -> 1560 bytes
-rw-r--r--slides/images/callouts/5.svg6
-rw-r--r--slides/images/callouts/6.pngbin0 -> 1655 bytes
-rw-r--r--slides/images/callouts/6.svg6
-rw-r--r--slides/images/callouts/7.pngbin0 -> 1333 bytes
-rw-r--r--slides/images/callouts/7.svg6
-rw-r--r--slides/images/callouts/8.pngbin0 -> 1741 bytes
-rw-r--r--slides/images/callouts/8.svg6
-rw-r--r--slides/images/callouts/9.pngbin0 -> 1718 bytes
-rw-r--r--slides/images/callouts/9.svg6
-rwxr-xr-xslides/images/callouts/gen.sh23
-rwxr-xr-xslides/images/face1.gifbin0 -> 5279 bytes
-rwxr-xr-xslides/images/face2.gifbin0 -> 2378 bytes
-rwxr-xr-xslides/images/face3.gifbin0 -> 800 bytes
-rwxr-xr-xslides/images/face4.gifbin0 -> 846 bytes
-rw-r--r--slides/keynote/default.xsl600
-rw-r--r--slides/keynote/xsltsl/cmp.xsl348
-rw-r--r--slides/keynote/xsltsl/date-time.xsl1524
-rw-r--r--slides/keynote/xsltsl/example.xsl90
-rw-r--r--slides/keynote/xsltsl/markup.xsl789
-rw-r--r--slides/keynote/xsltsl/math.xsl704
-rw-r--r--slides/keynote/xsltsl/node.xsl229
-rw-r--r--slides/keynote/xsltsl/stdlib.xsl340
-rw-r--r--slides/keynote/xsltsl/string.xsl1233
-rw-r--r--slides/keynote/xsltsl/svg.xsl177
-rw-r--r--slides/keynote/xsltsl/uri.xsl580
-rw-r--r--slides/locatingrules.xml31
-rwxr-xr-xslides/s5/index-osf.html200
-rwxr-xr-xslides/s5/index-xoxo.html201
-rwxr-xr-xslides/s5/pix/S501.jpgbin0 -> 10475 bytes
-rwxr-xr-xslides/s5/pix/S502.jpgbin0 -> 10063 bytes
-rwxr-xr-xslides/s5/pix/S503.jpgbin0 -> 9631 bytes
-rwxr-xr-xslides/s5/pix/S504.jpgbin0 -> 10068 bytes
-rwxr-xr-xslides/s5/pix/mememe01.pngbin0 -> 28065 bytes
-rwxr-xr-xslides/s5/pix/mememe02.pngbin0 -> 8701 bytes
-rwxr-xr-xslides/s5/pix/mememe03.pngbin0 -> 5223 bytes
-rwxr-xr-xslides/s5/pix/mememe04.pngbin0 -> 4548 bytes
-rwxr-xr-xslides/s5/pix/mememe05.pngbin0 -> 3423 bytes
-rwxr-xr-xslides/s5/pix/s5filemap.pngbin0 -> 61264 bytes
-rwxr-xr-xslides/s5/ui/bg-shade.pngbin0 -> 594 bytes
-rwxr-xr-xslides/s5/ui/default/blank.gifbin0 -> 49 bytes
-rwxr-xr-xslides/s5/ui/default/bodybg.gifbin0 -> 10119 bytes
-rwxr-xr-xslides/s5/ui/default/framing.css22
-rwxr-xr-xslides/s5/ui/default/iepngfix.htc42
-rwxr-xr-xslides/s5/ui/default/notes.css122
-rwxr-xr-xslides/s5/ui/default/opera.css7
-rwxr-xr-xslides/s5/ui/default/outline.css15
-rwxr-xr-xslides/s5/ui/default/pretty.css82
-rwxr-xr-xslides/s5/ui/default/print.css24
-rwxr-xr-xslides/s5/ui/default/s5-core.css9
-rwxr-xr-xslides/s5/ui/default/slides.css3
-rwxr-xr-xslides/s5/ui/default/slides.js764
-rwxr-xr-xslides/s5/ui/s5-notes.html64
-rw-r--r--slides/schema/relaxng/admonitions.rng174
-rw-r--r--slides/schema/relaxng/annotations.rng97
-rw-r--r--slides/schema/relaxng/bibliography.rng431
-rw-r--r--slides/schema/relaxng/callouts.rng503
-rw-r--r--slides/schema/relaxng/calstbl.rng918
-rw-r--r--slides/schema/relaxng/core.rng46
-rw-r--r--slides/schema/relaxng/docbook.rng34
-rw-r--r--slides/schema/relaxng/docbook1.rng63
-rw-r--r--slides/schema/relaxng/ebnf.rng267
-rw-r--r--slides/schema/relaxng/error.rng136
-rw-r--r--slides/schema/relaxng/glossary.rng513
-rw-r--r--slides/schema/relaxng/gui.rng292
-rw-r--r--slides/schema/relaxng/hier.rng730
-rw-r--r--slides/schema/relaxng/htmltbl.rng678
-rw-r--r--slides/schema/relaxng/index.rng773
-rw-r--r--slides/schema/relaxng/keyboard.rng320
-rw-r--r--slides/schema/relaxng/markup.rng304
-rw-r--r--slides/schema/relaxng/math.rng208
-rw-r--r--slides/schema/relaxng/mathml.rng122
-rw-r--r--slides/schema/relaxng/msgset.rng427
-rw-r--r--slides/schema/relaxng/os.rng513
-rw-r--r--slides/schema/relaxng/pool.rng6084
-rw-r--r--slides/schema/relaxng/product.rng250
-rw-r--r--slides/schema/relaxng/programming.rng1116
-rw-r--r--slides/schema/relaxng/qandaset.rng245
-rw-r--r--slides/schema/relaxng/refentry.rng488
-rw-r--r--slides/schema/relaxng/refsect1.rng192
-rw-r--r--slides/schema/relaxng/sect1.rng360
-rw-r--r--slides/schema/relaxng/slides.rnc206
-rw-r--r--slides/schema/relaxng/slides.rng362
-rw-r--r--slides/schema/relaxng/svg.rng112
-rw-r--r--slides/schema/relaxng/tasks.rng170
-rw-r--r--slides/schema/relaxng/technical.rng220
-rw-r--r--slides/schema/relaxng/toc.rng161
-rw-r--r--slides/schema/relaxng/topic.rng106
-rw-r--r--slides/schema/relaxng/xlink.rng182
-rw-r--r--slides/schema/xsd/admonitions.xsd134
-rw-r--r--slides/schema/xsd/annotations.xsd65
-rw-r--r--slides/schema/xsd/bibliography.xsd289
-rw-r--r--slides/schema/xsd/callouts.xsd406
-rw-r--r--slides/schema/xsd/calstbl.xsd1425
-rw-r--r--slides/schema/xsd/core.xsd36
-rw-r--r--slides/schema/xsd/db.xsd37
-rw-r--r--slides/schema/xsd/docbook.xsd37
-rw-r--r--slides/schema/xsd/docbook1.xsd37
-rw-r--r--slides/schema/xsd/ebnf.xsd183
-rw-r--r--slides/schema/xsd/error.xsd97
-rw-r--r--slides/schema/xsd/glossary.xsd319
-rw-r--r--slides/schema/xsd/gui.xsd218
-rw-r--r--slides/schema/xsd/hier.xsd606
-rw-r--r--slides/schema/xsd/htmltbl.xsd536
-rw-r--r--slides/schema/xsd/index.xsd537
-rw-r--r--slides/schema/xsd/keyboard.xsd350
-rw-r--r--slides/schema/xsd/markup.xsd284
-rw-r--r--slides/schema/xsd/math.xsd156
-rw-r--r--slides/schema/xsd/mathml.xsd82
-rw-r--r--slides/schema/xsd/msgset.xsd309
-rw-r--r--slides/schema/xsd/os.xsd369
-rw-r--r--slides/schema/xsd/pool.xsd4834
-rw-r--r--slides/schema/xsd/product.xsd255
-rw-r--r--slides/schema/xsd/programming.xsd749
-rw-r--r--slides/schema/xsd/qandaset.xsd188
-rw-r--r--slides/schema/xsd/refentry.xsd361
-rw-r--r--slides/schema/xsd/refsect1.xsd142
-rw-r--r--slides/schema/xsd/sect1.xsd252
-rw-r--r--slides/schema/xsd/slides.xsd362
-rw-r--r--slides/schema/xsd/svg.xsd82
-rw-r--r--slides/schema/xsd/tasks.xsd132
-rw-r--r--slides/schema/xsd/technical.xsd250
-rw-r--r--slides/schema/xsd/toc.xsd116
-rw-r--r--slides/schema/xsd/topic.xsd70
-rw-r--r--slides/schema/xsd/xlink.xsd67
-rw-r--r--slides/schema/xsd/xlink1.xsd103
-rw-r--r--slides/schema/xsd/xml.xsd35
-rwxr-xr-xslides/slidy/.htaccess28
-rwxr-xr-xslides/slidy/Overview.html911
-rwxr-xr-xslides/slidy/Overview.xhtml911
-rwxr-xr-xslides/slidy/blank.html30
-rwxr-xr-xslides/slidy/graphics/bullet-fold-dim.gifbin0 -> 161 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-fold-dim.pngbin0 -> 2905 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-fold.gifbin0 -> 163 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-fold.pngbin0 -> 2901 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-nofold-dim.gifbin0 -> 142 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-nofold-dim.pngbin0 -> 2892 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-nofold.gifbin0 -> 157 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-nofold.pngbin0 -> 2888 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-unfold-dim.gifbin0 -> 166 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-unfold-dim.pngbin0 -> 2913 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-unfold.gifbin0 -> 163 bytes
-rwxr-xr-xslides/slidy/graphics/bullet-unfold.pngbin0 -> 2909 bytes
-rwxr-xr-xslides/slidy/graphics/bullet.pngbin0 -> 167 bytes
-rwxr-xr-xslides/slidy/graphics/example.pngbin0 -> 6652 bytes
-rwxr-xr-xslides/slidy/graphics/example.svg223
-rwxr-xr-xslides/slidy/graphics/face1.gifbin0 -> 5279 bytes
-rwxr-xr-xslides/slidy/graphics/face2.gifbin0 -> 2378 bytes
-rwxr-xr-xslides/slidy/graphics/face3.gifbin0 -> 800 bytes
-rwxr-xr-xslides/slidy/graphics/face4.gifbin0 -> 846 bytes
-rwxr-xr-xslides/slidy/graphics/fold-bright.gifbin0 -> 145 bytes
-rwxr-xr-xslides/slidy/graphics/fold-dim.bmpbin0 -> 306 bytes
-rwxr-xr-xslides/slidy/graphics/fold-dim.gifbin0 -> 56 bytes
-rwxr-xr-xslides/slidy/graphics/fold.bmpbin0 -> 306 bytes
-rwxr-xr-xslides/slidy/graphics/fold.gifbin0 -> 56 bytes
-rwxr-xr-xslides/slidy/graphics/icon-blue.pngbin0 -> 204 bytes
-rwxr-xr-xslides/slidy/graphics/keys2.jpgbin0 -> 42807 bytes
-rwxr-xr-xslides/slidy/graphics/nofold-dim.bmpbin0 -> 306 bytes
-rwxr-xr-xslides/slidy/graphics/nofold-dim.gifbin0 -> 48 bytes
-rwxr-xr-xslides/slidy/graphics/nofold.bmpbin0 -> 306 bytes
-rwxr-xr-xslides/slidy/graphics/unfold-bright.gifbin0 -> 170 bytes
-rwxr-xr-xslides/slidy/graphics/unfold-dim.bmpbin0 -> 306 bytes
-rwxr-xr-xslides/slidy/graphics/unfold-dim.gifbin0 -> 59 bytes
-rwxr-xr-xslides/slidy/graphics/unfold.bmpbin0 -> 306 bytes
-rwxr-xr-xslides/slidy/graphics/unfold.gifbin0 -> 59 bytes
-rwxr-xr-xslides/slidy/graphics/w3c-logo-blue.gifbin0 -> 1791 bytes
-rwxr-xr-xslides/slidy/graphics/w3c-logo-blue.svg14
-rwxr-xr-xslides/slidy/graphics/w3c-logo-slanted.jpgbin0 -> 26539 bytes
-rwxr-xr-xslides/slidy/graphics/w3c-logo-white.gifbin0 -> 793 bytes
-rwxr-xr-xslides/slidy/graphics/w3c-logo-white.svg14
-rwxr-xr-xslides/slidy/help/.htaccess28
-rwxr-xr-xslides/slidy/help/help.html80
-rwxr-xr-xslides/slidy/help/help.html.ca52
-rwxr-xr-xslides/slidy/help/help.html.de96
-rwxr-xr-xslides/slidy/help/help.html.en81
-rwxr-xr-xslides/slidy/help/help.html.es52
-rwxr-xr-xslides/slidy/help/help.html.fr118
-rwxr-xr-xslides/slidy/help/help.html.hu98
-rwxr-xr-xslides/slidy/help/help.html.nl82
-rwxr-xr-xslides/slidy/help/help.html.pl76
-rwxr-xr-xslides/slidy/help/help.html.pt-br95
-rwxr-xr-xslides/slidy/help/help.html.pt_br95
-rwxr-xr-xslides/slidy/help/help.html.sv75
-rwxr-xr-xslides/slidy/help/help.pt-br.html95
-rwxr-xr-xslides/slidy/scripts/.htaccess28
-rwxr-xr-xslides/slidy/scripts/slidy.js2974
-rwxr-xr-xslides/slidy/scripts/slidy.js.gzbin0 -> 12874 bytes
-rwxr-xr-xslides/slidy/styles/.htaccess28
-rwxr-xr-xslides/slidy/styles/slidy.css405
-rwxr-xr-xslides/slidy/styles/w3c-blue.css497
-rw-r--r--slides/svg/default.xsl686
-rw-r--r--slides/tools/dbs3-upgrade.xsl180
-rw-r--r--slides/xhtml/css.xsl47
-rw-r--r--slides/xhtml/default.xsl246
-rw-r--r--slides/xhtml/flat.xsl71
-rw-r--r--slides/xhtml/frames.xsl1982
-rw-r--r--slides/xhtml/graphics.xsl152
-rw-r--r--slides/xhtml/jscript.xsl128
-rw-r--r--slides/xhtml/param.xml824
-rw-r--r--slides/xhtml/param.xsl113
-rw-r--r--slides/xhtml/plain-titlepage.xml26
-rw-r--r--slides/xhtml/plain-titlepage.xsl140
-rw-r--r--slides/xhtml/plain.xsl979
-rw-r--r--slides/xhtml/s5.xsl95
-rw-r--r--slides/xhtml/slides-common.xsl1534
-rw-r--r--slides/xhtml/slidy.xsl85
-rw-r--r--slides/xhtml/tables.xsl334
-rw-r--r--slides/xhtml/vslides.xsl652
-rw-r--r--slides/xhtml/w3c.xsl358
-rw-r--r--template/titlepage.xml2
-rw-r--r--template/titlepage.xsl12
-rwxr-xr-xtools/bin/docbook-xsl-update4
-rw-r--r--webhelp/Makefile.sample111
-rw-r--r--webhelp/build.properties9
-rw-r--r--webhelp/build.xml41
-rw-r--r--webhelp/docs/ch01.html148
-rw-r--r--webhelp/docs/ch02.html139
-rw-r--r--webhelp/docs/ch02s01.html (renamed from webhelp/docs/content/ch02s01.html)106
-rw-r--r--webhelp/docs/ch02s02.html150
-rw-r--r--webhelp/docs/ch02s02s01.html177
-rw-r--r--webhelp/docs/ch02s03.html157
-rw-r--r--webhelp/docs/ch02s04.html139
-rw-r--r--webhelp/docs/ch02s05.html149
-rw-r--r--webhelp/docs/ch03.html134
-rw-r--r--webhelp/docs/ch03s01.html155
-rw-r--r--webhelp/docs/ch03s02.html178
-rw-r--r--webhelp/docs/ch03s02s01.html (renamed from webhelp/docs/content/ch03s02s01.html)82
-rw-r--r--webhelp/docs/ch04.html144
-rw-r--r--webhelp/docs/ch05.html130
-rw-r--r--webhelp/docs/ch05s01.html132
-rw-r--r--webhelp/docs/ch05s02.html132
-rw-r--r--webhelp/docs/common/css/ie.css2
-rw-r--r--webhelp/docs/common/css/positioning.css62
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/1.pngbin396 -> 396 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/10.pngbin524 -> 524 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/11.pngbin397 -> 397 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/12.pngbin517 -> 517 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/13.pngbin520 -> 520 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/14.pngbin474 -> 474 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/15.pngbin522 -> 522 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/16.pngbin539 -> 539 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/17.pngbin475 -> 475 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/18.pngbin542 -> 542 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/19.pngbin539 -> 539 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/2.pngbin475 -> 475 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/20.pngbin588 -> 588 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/21.pngbin517 -> 517 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/22.pngbin503 -> 503 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/23.pngbin589 -> 589 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/24.pngbin542 -> 542 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/25.pngbin564 -> 564 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/26.pngbin596 -> 596 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/27.pngbin547 -> 547 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/28.pngbin594 -> 594 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/29.pngbin594 -> 594 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/3.pngbin506 -> 506 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/30.pngbin597 -> 597 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/4.pngbin425 -> 425 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/5.pngbin490 -> 490 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/6.pngbin526 -> 526 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/7.pngbin437 -> 437 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/8.pngbin509 -> 509 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/callouts/9.pngbin537 -> 537 bytes
-rwxr-xr-x[-rw-r--r--]webhelp/docs/common/images/header-bg.pngbin201 -> 201 bytes
-rw-r--r--webhelp/docs/common/jquery/jquery-1.4.2.min.js154
-rw-r--r--webhelp/docs/common/jquery/jquery-1.7.2.min.js4
-rw-r--r--webhelp/docs/common/jquery/jquery.ui.all.js418
-rw-r--r--webhelp/docs/common/jquery/layout/jquery.layout.js5449
-rw-r--r--webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css304
-rw-r--r--webhelp/docs/common/main.js2
-rw-r--r--webhelp/docs/common/splitterInit.js40
-rw-r--r--webhelp/docs/content/ch01.html109
-rw-r--r--webhelp/docs/content/ch02.html93
-rw-r--r--webhelp/docs/content/ch02s02.html112
-rw-r--r--webhelp/docs/content/ch02s02s01.html135
-rw-r--r--webhelp/docs/content/ch02s03.html119
-rw-r--r--webhelp/docs/content/ch02s04.html101
-rw-r--r--webhelp/docs/content/ch02s05.html111
-rw-r--r--webhelp/docs/content/ch03.html96
-rw-r--r--webhelp/docs/content/ch03s01.html117
-rw-r--r--webhelp/docs/content/ch03s02.html130
-rw-r--r--webhelp/docs/content/ch04.html104
-rw-r--r--webhelp/docs/content/ch05.html88
-rw-r--r--webhelp/docs/content/ch05s01.html90
-rw-r--r--webhelp/docs/content/ch05s02.html88
-rw-r--r--webhelp/docs/content/index.html135
-rw-r--r--webhelp/docs/content/search/htmlFileList.js18
-rwxr-xr-x[-rw-r--r--]webhelp/docs/favicon.icobin5686 -> 5686 bytes
-rw-r--r--webhelp/docs/images/sample.jpg (renamed from webhelp/docs/content/images/sample.jpg)bin78931 -> 78931 bytes
-rw-r--r--webhelp/docs/index.html189
-rw-r--r--webhelp/docs/ix01.html128
-rw-r--r--webhelp/docs/search/default.props (renamed from webhelp/template/content/search/default.props)0
-rw-r--r--webhelp/docs/search/en-us.props (renamed from webhelp/template/content/search/en-us.props)0
-rw-r--r--webhelp/docs/search/es-es.props (renamed from webhelp/template/content/search/es-es.props)0
-rw-r--r--webhelp/docs/search/htmlFileInfoList.js (renamed from webhelp/docs/content/search/htmlFileInfoList.js)12
-rw-r--r--webhelp/docs/search/index-1.js (renamed from webhelp/docs/content/search/index-1.js)150
-rw-r--r--webhelp/docs/search/index-2.js (renamed from webhelp/docs/content/search/index-2.js)96
-rw-r--r--webhelp/docs/search/index-3.js (renamed from webhelp/docs/content/search/index-3.js)148
-rw-r--r--webhelp/docs/search/ja-jp.props (renamed from webhelp/template/content/search/ja-jp.props)0
-rw-r--r--webhelp/docs/search/l10n.js (renamed from webhelp/docs/content/search/l10n.js)0
-rw-r--r--webhelp/docs/search/nwSearchFnt.js (renamed from webhelp/template/content/search/nwSearchFnt.js)7
-rw-r--r--webhelp/docs/search/punctuation.props (renamed from webhelp/template/content/search/punctuation.props)0
-rw-r--r--webhelp/docs/search/stemmers/de_stemmer.js (renamed from webhelp/template/content/search/stemmers/de_stemmer.js)0
-rw-r--r--webhelp/docs/search/stemmers/en_stemmer.js (renamed from webhelp/docs/content/search/stemmers/en_stemmer.js)0
-rw-r--r--webhelp/docs/search/stemmers/fr_stemmer.js (renamed from webhelp/template/content/search/stemmers/fr_stemmer.js)0
-rw-r--r--webhelp/docsrc/readme.xml263
-rw-r--r--webhelp/template/common/css/ie.css2
-rw-r--r--webhelp/template/common/css/positioning.css62
-rw-r--r--webhelp/template/common/jquery/jquery-1.4.2.min.js154
-rw-r--r--webhelp/template/common/jquery/jquery-1.7.2.min.js4
-rw-r--r--webhelp/template/common/jquery/jquery.ui.all.js418
-rw-r--r--webhelp/template/common/jquery/layout/jquery.layout.js5449
-rw-r--r--webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css304
-rw-r--r--webhelp/template/common/main.js2
-rw-r--r--webhelp/template/common/splitterInit.js40
-rw-r--r--webhelp/template/search/default.props1
-rw-r--r--webhelp/template/search/en-us.props45
-rw-r--r--webhelp/template/search/es-es.props179
-rw-r--r--webhelp/template/search/ja-jp.props1
-rw-r--r--webhelp/template/search/nwSearchFnt.js (renamed from webhelp/docs/content/search/nwSearchFnt.js)7
-rw-r--r--webhelp/template/search/punctuation.props31
-rw-r--r--webhelp/template/search/stemmers/de_stemmer.js247
-rw-r--r--webhelp/template/search/stemmers/en_stemmer.js (renamed from webhelp/template/content/search/stemmers/en_stemmer.js)0
-rw-r--r--webhelp/template/search/stemmers/fr_stemmer.js299
-rw-r--r--webhelp/xsl/webhelp-common.xsl164
-rw-r--r--xhtml-1_1/autoidx.xsl95
-rw-r--r--xhtml-1_1/autotoc.xsl43
-rw-r--r--xhtml-1_1/block.xsl46
-rw-r--r--xhtml-1_1/chunk-common.xsl60
-rw-r--r--xhtml-1_1/chunker.xsl17
-rw-r--r--xhtml-1_1/component.xsl3
-rw-r--r--xhtml-1_1/docbook.xsl108
-rw-r--r--xhtml-1_1/ebnf.xsl15
-rw-r--r--xhtml-1_1/footnote.xsl25
-rw-r--r--xhtml-1_1/formal.xsl34
-rw-r--r--xhtml-1_1/glossary.xsl19
-rw-r--r--xhtml-1_1/graphics.xsl60
-rw-r--r--xhtml-1_1/htmltbl.xsl5
-rw-r--r--xhtml-1_1/inline.xsl29
-rw-r--r--xhtml-1_1/param.xsl16
-rw-r--r--xhtml-1_1/profile-chunk-code.xsl6
-rw-r--r--xhtml-1_1/profile-chunk.xsl10
-rw-r--r--xhtml-1_1/profile-docbook.xsl114
-rw-r--r--xhtml-1_1/profile-onechunk.xsl10
-rw-r--r--xhtml-1_1/verbatim.xsl4
-rw-r--r--xhtml-1_1/xref.xsl121
-rw-r--r--xhtml/admon.xsl6
-rw-r--r--xhtml/autoidx.xsl4
-rw-r--r--xhtml/autotoc.xsl32
-rw-r--r--xhtml/block.xsl19
-rw-r--r--xhtml/chunk-common.xsl55
-rw-r--r--xhtml/chunk.xsl2
-rw-r--r--xhtml/chunker.xsl10
-rw-r--r--xhtml/component.xsl3
-rw-r--r--xhtml/docbook-no-doctype.xsl538
-rw-r--r--xhtml/docbook.xsl108
-rw-r--r--xhtml/ebnf.xsl6
-rw-r--r--xhtml/footnote.xsl20
-rw-r--r--xhtml/formal.xsl34
-rw-r--r--xhtml/glossary.xsl12
-rw-r--r--xhtml/graphics.xsl53
-rw-r--r--xhtml/highlight.xsl10
-rw-r--r--xhtml/htmltbl.xsl5
-rw-r--r--xhtml/inline.xsl22
-rw-r--r--xhtml/param.xsl10
-rw-r--r--xhtml/profile-chunk-code.xsl6
-rw-r--r--xhtml/profile-chunk.xsl12
-rw-r--r--xhtml/profile-docbook.xsl114
-rw-r--r--xhtml/profile-onechunk.xsl10
-rwxr-xr-xxhtml/titlepage.templates.xml739
-rw-r--r--xhtml/verbatim.xsl4
-rw-r--r--xhtml/xref.xsl112
-rw-r--r--xhtml5/html5-element-mods.xsl37
-rw-r--r--xhtml5/xhtml-docbook.xsl108
730 files changed, 75895 insertions, 30507 deletions
diff --git a/NEWS b/NEWS
index 7aa707e..960bc8c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,6 @@
-Changes since the 1.77.0 release
+Changes since the 1.78.0 release
-Note: This document lists changes only since the 1.77.0 release. If you instead
+Note: This document lists changes only since the 1.78.0 release. If you instead
want a record of the complete list of changes for the codebase over its entire
history, you can obtain one by running the following commands:
@@ -11,141 +11,166 @@ history, you can obtain one by running the following commands:
Table of Contents
-Release Notes: 1.77.1
+Release Notes: 1.78.1
+ Common
FO
HTML
- Roundtrip
- Slides
- Website
+ Manpages
Webhelp
- Template
+ Params
+ Highlighting
-Release Notes: 1.77.1
+Release Notes: 1.78.1
-The following is a list of changes that have been made since the 1.77.0
+The following is a list of changes that have been made since the 1.78.0
release.
+Common
+
+The following changes have been made to the common code since the 1.78.0
+release.
+
+ • Robert Stayton: titles.xsl
+
+ Make sure part and set titleabbrev are used in mode="titleabbrev.markup"
+
+ • Robert Stayton: titles.xsl
+
+ Add empty default template for titleabbrev since it is always processed in a mode.
+
+ • Robert Stayton: gentext.xsl
+
+ Make consistent handling of titleabbrev in xrefs.
+
+ • Robert Stayton: titles.xsl
+
+ for missing title in xref, provide parent information of target to help locate problem element.
+ Process bridgehead in mode="title.markup", not normal mode.
+
+ • Jirka Kosek: l10n.xsl
+
+ Fixed bug #3598963
+
+ • Robert Stayton: gentext.xsl; labels.xsl
+
+ Make sure bridgeheads are not numbered in all contexts, including html title attributes.
+
FO
-The following changes have been made to the fo code since the 1.77.0 release.
+The following changes have been made to the fo code since the 1.78.0 release.
+
+ • Robert Stayton: division.xsl
- • Robert Stayton: docbook.xsl
+ Fix bug where part TOC not generated when partintro is present.
- Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
- from the filename.
+ • Jirka Kosek: xref.xsl
- • Robert Stayton: block.xsl
+ Footnotes can't be placed into fo:float
- In sidebar, turn off space before first para if there is no title.
+ • Robert Stayton: titlepage.templates.xml
- • Robert Stayton: math.xsl
+ Remove margin-left when start-indent is used because they interfere
+ with each other.
- Restored templates for mml:* elements that were accidentally deleted.
+ • Robert Stayton: fo.xsl; pagesetup.xsl
+
+ Use dingbat.fontset rather than dingbat.font.family so it falls
+ back to symbol font if glyph not found, like other font properties.
+
+ • Robert Stayton: inline.xsl
+
+ Change last instance of inline.charseq in inline glossterm to
+ inline.italicseq so it is consistent with the others.
+
+ • Robert Stayton: xref.xsl
+
+ Make consistent handling of titleabbrev in xrefs.
HTML
-The following changes have been made to the html code since the 1.77.0 release.
+The following changes have been made to the html code since the 1.78.0 release.
- • Robert Stayton: docbook.xsl
+ • Robert Stayton: admon.xsl
- Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
- from the filename.
+ Turn off $admon.style if $make.clean.html is set to non-zero.
- • Robert Stayton: sections.xsl
+ • Jirka Kosek: highlight.xsl
- Use $div.element variable in place of div to support html5 section element.
- output
+ Added new definitions for syntax highlighting
- • Robert Stayton: autoidx.xsl
+ • Robert Stayton: chunk-common.xsl
- Fix bug 3528673, missing "separator" param on template with
- match="indexterm" mode="reference". That param is passed
- for endofrange processing to output the range separator.
+ Make active.olink.hrefs param work for chunked output too.
-Roundtrip
+ • Robert Stayton: xref.xsl
-The following changes have been made to the roundtrip code since the 1.77.0
-release.
+ Make consistent handling of titleabbrev in xrefs.
- • Robert Stayton: dbk2ooo.xsl; dbk2pages.xsl; dbk2wordml.xsl; dbk2wp.xsl
+ • Robert Stayton: graphics.xsl
- Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
- from the filename.
+ Add round() function when pixel counts are used for image width and height.
-Slides
+ • Robert Stayton: glossary.xsl
-The following changes have been made to the slides code since the 1.77.0
-release.
+ fix missing class and id attributes on glossterm and glossdef.
- • Robert Stayton: html/slides-common.xsl
+ • Robert Stayton: autoidx.xsl
- Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
- from the filename.
+ Fix bug where prefer.index.titleabbrev ignored info/titleabbrev.
-Website
+Manpages
-The following changes have been made to the website code since the 1.77.0
+The following changes have been made to the manpages code since the 1.78.0
release.
- • Robert Stayton: website-common.xsl
+ • Robert Stayton: utility.xsl
- Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
- from the filename.
+ Fix bug 3599520: spurious newline in para when starts with
+ whitespace and inline element.
Webhelp
-The following changes have been made to the webhelp code since the 1.77.0
+The following changes have been made to the webhelp code since the 1.78.0
release.
• David Cramer: xsl/webhelp-common.xsl
- Webhelp: Increase default value for chunk.section.depth
-
- • kasunbg: docsrc/readme.xml
+ Webhelp: Fix test for webhelp.include.search.tab param
- updated webhelp documentation
+ • David Cramer: Makefile.sample
- • kasunbg: template/content/search/nwSearchFnt.js; xsl/webhelp-common.xsl
+ Webhelp: Fix order of args to xsltproc
- Removed the script htmlFileList.js since it's content is in htmlFileInfoList.js
-
- • Robert Stayton: xsl/webhelp-common.xsl
+ • David Cramer: docsrc/readme.xml
- In the <h1> output, replace call to 'get.doc.title' with
- mode="title.markup" because get.doc.title returns only
- the string value of the title, losing any markup such
- as <trademark> or <superscript>.
+ Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality
- • kasunbg: template/common/css/positioning.css; template/content/search/
- nwSearchFnt.js
+ • David Cramer: Makefile; Makefile.sample
- Remove unnecessary bits of code from webhelp
+ Webhelp: In Makefiles, do xinclude in first pass at document
- • David Cramer: docsrc/readme.xml
+Params
- Webhelp: Minor edits to the readme
+The following changes have been made to the params code since the 1.78.0
+release.
- • David Cramer: xsl/webhelp.xsl; xsl/titlepage.templates.xsl; xsl/
- titlepage.templates.xml
+ • David Cramer: webhelp.include.search.tab.xml
- Webhelp: Suppress abstracts from titlepages. These are used to create the search result summary sentence and should not be shown
+ Webhelp: Fix test for webhelp.include.search.tab param
- • David Cramer: build.xml
+ • Robert Stayton: article.appendix.title.properties.xml
- Webhelp: calculate path to profile.xsl from main build.xml file
+ Remove unneeded margin-left property from article appendix title.
+ It interferes with the start-indent property.
-Template
+Highlighting
-The following changes have been made to the template code since the 1.77.0
+The following changes have been made to the highlighting code since the 1.78.0
release.
- • Robert Stayton: titlepage.xsl
-
- Undo last change because not implemented correctly.
-
- • Robert Stayton: titlepage.xsl
+ • Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml;
+ bourne-hl.xml; ⋯
- Fix xsl:element to not overwrite the incoming fo: namespace
- if the $ns param is not set.
+ Added new definitions for syntax highlighting
diff --git a/NEWS.html b/NEWS.html
index 589d7d8..8cac5d6 100644
--- a/NEWS.html
+++ b/NEWS.html
@@ -1,36 +1,30 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Changes since the 1.77.0 release</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"><meta name="description" content="Note: This document lists changes only since the 1.77.0 release. If you instead want a record of the complete list of changes for the codebase over its entire history, you can obtain one by running the following commands: svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl svn log --xml --verbose xsl &gt; ChangeHistory.xml"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="id548516"></a>Changes since the 1.77.0 release</h2></div><div><div class="abstract"><p><span class="strong"><strong>Note:</strong></span> This
- document lists changes only since the 1.77.0 release.
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Changes since the 1.78.0 release</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><meta name="description" content="Note: This document lists changes only since the 1.78.0 release. If you instead want a record of the complete list of changes for the codebase over its entire history, you can obtain one by running the following commands: svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl svn log --xml --verbose xsl &gt; ChangeHistory.xml"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="idp12912"></a>Changes since the 1.78.0 release</h2></div><div><div class="abstract"><p><span class="strong"><strong>Note:</strong></span> This
+ document lists changes only since the 1.78.0 release.
If you instead want a record of the complete list of
changes for the codebase over its entire history, you
can obtain one by running the following commands:
</p><pre class="screen"> <code class="code">svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl</code>
- <code class="code">svn log --xml --verbose xsl &gt; ChangeHistory.xml</code></pre></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#V1.77.1">Release Notes: 1.77.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.77.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.77.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.77.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.77.1_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#V1.77.1_Website">Website</a></span></dt><dt><span class="sect2"><a href="#V1.77.1_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#V1.77.1_Template">Template</a></span></dt></dl></dd></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.77.1"></a>Release Notes: 1.77.1</h2></div></div></div><p>The following is a list of changes that have been made
- since the 1.77.0 release.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_FO"></a>FO</h3></div></div></div><p>The following changes have been made to the
+ <code class="code">svn log --xml --verbose xsl &gt; ChangeHistory.xml</code></pre></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="#V1.78.1">Release Notes: 1.78.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.78.1_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Highlighting">Highlighting</a></span></dt></dl></dd></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.78.1"></a>Release Notes: 1.78.1</h2></div></div></div><p>The following is a list of changes that have been made
+ since the 1.78.0 release.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Common"></a>Common</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Make sure part and set <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> are used in mode="titleabbrev.markup"</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Add empty default template for <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> since it is always processed in a mode.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: gentext.xsl</code></p><pre class="screen"><span class="commit-message">Make consistent handling of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in xrefs.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">for missing <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a>, provide parent information of target to help locate problem element.
+Process <a href="http://docbook.org/tdg5/en/html/bridgehead.html"><code class="sgmltag-element">bridgehead</code></a> in mode="title.markup", not normal mode.</span></pre></li><li class="listitem"><p><code class="literal">Jirka Kosek: l10n.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug #3598963</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: gentext.xsl; labels.xsl</code></p><pre class="screen"><span class="commit-message">Make sure bridgeheads are not numbered in all contexts, including html <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attributes.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_FO"></a>FO</h3></div></div></div><p>The following changes have been made to the
<code class="filename">fo</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: block.xsl</code></p><pre class="screen"><span class="commit-message">In <a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a>, turn off space before first <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> if there is no <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: math.xsl</code></p><pre class="screen"><span class="commit-message">Restored templates for mml:* elements that were accidentally deleted.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_HTML"></a>HTML</h3></div></div></div><p>The following changes have been made to the
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: division.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug where part <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a> not generated when <a href="http://docbook.org/tdg5/en/html/partintro.html"><code class="sgmltag-element">partintro</code></a> is present.</span></pre></li><li class="listitem"><p><code class="literal">Jirka Kosek: xref.xsl</code></p><pre class="screen"><span class="commit-message">Footnotes can't be placed into fo:float</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: titlepage.templates.xml</code></p><pre class="screen"><span class="commit-message">Remove margin-left when start-indent is used because they interfere
+with each other.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: fo.xsl; pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Use dingbat.fontset rather than <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/dingbat.font.family.html"><em class="parameter"><code>dingbat.font.family</code></em></a> so it falls
+back to <a href="http://docbook.org/tdg5/en/html/symbol.html"><code class="sgmltag-element">symbol</code></a> font if glyph not found, like other font properties.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Change last instance of inline.charseq in inline <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> to
+inline.italicseq so it is consistent with the others.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Make consistent handling of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in xrefs.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_HTML"></a>HTML</h3></div></div></div><p>The following changes have been made to the
<code class="filename">html</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: sections.xsl</code></p><pre class="screen"><span class="commit-message">Use $div.element variable in place of div to support html5 <a href="http://docbook.org/tdg5/en/html/section.html"><code class="sgmltag-element">section</code></a> element.
-output</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 3528673, missing "separator" param on template with
-match="<a href="http://docbook.org/tdg5/en/html/indexterm.html"><code class="sgmltag-element">indexterm</code></a>" mode="<a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a>". That param is passed
-for endofrange processing to output the range separator.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_Roundtrip"></a>Roundtrip</h3></div></div></div><p>The following changes have been made to the
- <code class="filename">roundtrip</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: dbk2ooo.xsl; dbk2pages.xsl; dbk2wordml.xsl; dbk2wp.xsl</code></p><pre class="screen"><span class="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_Slides"></a>Slides</h3></div></div></div><p>The following changes have been made to the
- <code class="filename">slides</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: html/slides-common.xsl</code></p><pre class="screen"><span class="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_Website"></a>Website</h3></div></div></div><p>The following changes have been made to the
- <code class="filename">website</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: website-common.xsl</code></p><pre class="screen"><span class="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <a href="http://docbook.org/tdg5/en/html/filename.html"><code class="sgmltag-element">filename</code></a>.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_Webhelp"></a>Webhelp</h3></div></div></div><p>The following changes have been made to the
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: admon.xsl</code></p><pre class="screen"><span class="commit-message">Turn off $admon.style if $make.clean.html is set to non-zero.</span></pre></li><li class="listitem"><p><code class="literal">Jirka Kosek: highlight.xsl</code></p><pre class="screen"><span class="commit-message">Added new definitions for syntax highlighting</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: chunk-common.xsl</code></p><pre class="screen"><span class="commit-message">Make active.olink.hrefs param work for chunked output too.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Make consistent handling of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in xrefs.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Add round() <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> when pixel counts are used for image width and height.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: glossary.xsl</code></p><pre class="screen"><span class="commit-message">fix missing class and id attributes on <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> and <a href="http://docbook.org/tdg5/en/html/glossdef.html"><code class="sgmltag-element">glossdef</code></a>.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug where prefer.index.titleabbrev ignored <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a>.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Manpages"></a>Manpages</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: utility.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 3599520: spurious newline in <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> when starts with
+whitespace and inline element.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Webhelp"></a>Webhelp</h3></div></div></div><p>The following changes have been made to the
<code class="filename">webhelp</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Increase default value for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/chunk.section.depth.html"><em class="parameter"><code>chunk.section.depth</code></em></a></span></pre></li><li class="listitem"><p><code class="literal">kasunbg: docsrc/readme.xml</code></p><pre class="screen"><span class="commit-message">updated webhelp documentation</span></pre></li><li class="listitem"><p><code class="literal">kasunbg: template/content/search/nwSearchFnt.js; xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Removed the script htmlFileList.js since it's content is in htmlFileInfoList.js</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">In the &lt;h1&gt; output, replace call to 'get.doc.title' with
-mode="title.markup" because get.doc.title returns only
-the string value of the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>, losing any markup such
-as &lt;<a href="http://docbook.org/tdg5/en/html/trademark.html"><code class="sgmltag-element">trademark</code></a>&gt; or &lt;<a href="http://docbook.org/tdg5/en/html/superscript.html"><code class="sgmltag-element">superscript</code></a>&gt;.</span></pre></li><li class="listitem"><p><code class="literal">kasunbg: template/common/css/positioning.css; template/content/search/nwSearchFnt.js</code></p><pre class="screen"><span class="commit-message">Remove unnecessary bits of code from webhelp</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: docsrc/readme.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Minor edits to the readme</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: xsl/webhelp.xsl; xsl/titlepage.templates.xsl; xsl/titlepage.templates.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Suppress abstracts from titlepages. These are used to create the search result summary sentence and should not be shown</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: build.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: calculate path to profile.xsl from main build.xml file</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.77.1_Template"></a>Template</h3></div></div></div><p>The following changes have been made to the
- <code class="filename">template</code> code
- since the 1.77.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Robert Stayton: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Undo last change because not implemented correctly.</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Fix xsl:element to not overwrite the incoming fo: namespace
-if the $ns param is not set.</span></pre></li></ul></div></div></div></div></body></html>
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix test for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/webhelp.include.search.tab.html"><em class="parameter"><code>webhelp.include.search.tab</code></em></a> param</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: Makefile.sample</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix order of args to xsltproc</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: docsrc/readme.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality</span></pre></li><li class="listitem"><p><code class="literal">David Cramer: Makefile; Makefile.sample</code></p><pre class="screen"><span class="commit-message">Webhelp: In Makefiles, do xinclude in first pass at document</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Params"></a>Params</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">David Cramer: webhelp.include.search.tab.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix test for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/webhelp.include.search.tab.html"><em class="parameter"><code>webhelp.include.search.tab</code></em></a> param</span></pre></li><li class="listitem"><p><code class="literal">Robert Stayton: article.appendix.title.properties.xml</code></p><pre class="screen"><span class="commit-message">Remove unneeded margin-left property from <a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a> <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.
+It interferes with the start-indent property.</span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Highlighting"></a>Highlighting</h3></div></div></div><p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.78.0 release.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml; bourne-hl.xml; &#8943;</code></p><pre class="screen"><span class="commit-message">Added new definitions for syntax highlighting</span></pre></li></ul></div></div></div></div></body></html>
diff --git a/NEWS.xml b/NEWS.xml
index 9fec1e1..1d8f5c0 100644
--- a/NEWS.xml
+++ b/NEWS.xml
@@ -4,7 +4,7 @@
<info>
<abstract>
<para><emphasis role="strong">Note:</emphasis> This
- document lists changes only since the 1.77.0 release.
+ document lists changes only since the 1.78.0 release.
If you instead want a record of the complete list of
changes for the codebase over its entire history, you
can obtain one by running the following commands:
@@ -12,144 +12,162 @@
<screen> <code>svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl</code>
<code>svn log --xml --verbose xsl &gt; ChangeHistory.xml</code></screen></para>
</abstract>
-</info><title>Changes since the 1.77.0 release</title>
+</info><title>Changes since the 1.78.0 release</title>
-<sect1 xml:id="V1.77.1">
-<title>Release Notes: 1.77.1</title>
+<sect1 xml:id="V1.78.1">
+<title>Release Notes: 1.78.1</title>
<para>The following is a list of changes that have been made
- since the 1.77.0 release.</para>
+ since the 1.78.0 release.</para>
-<sect2 xml:id="V1.77.1_FO">
-<title>FO</title>
+<sect2 xml:id="V1.78.1_Common">
+<title>Common</title>
<para>The following changes have been made to the
- <filename>fo</filename> code
- since the 1.77.0 release.</para>
+ <filename>common</filename> code
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Make sure part and set <tag>titleabbrev</tag> are used in mode="titleabbrev.markup"</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: block.xsl</literal></para><screen><phrase role="commit-message">In <tag>sidebar</tag>, turn off space before first <tag>para</tag> if there is no <tag>title</tag>.</phrase></screen>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Add empty default template for <tag>titleabbrev</tag> since it is always processed in a mode.</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: math.xsl</literal></para><screen><phrase role="commit-message">Restored templates for mml:* elements that were accidentally deleted.</phrase></screen>
+<para><literal>Robert Stayton: gentext.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
</listitem>
-</itemizedlist>
-</sect2><!--end of FO changes for 1.77.1-->
-
-<sect2 xml:id="V1.77.1_HTML">
-<title>HTML</title>
-<para>The following changes have been made to the
- <filename>html</filename> code
- since the 1.77.0 release.</para>
-<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">for missing <tag>title</tag> in <tag>xref</tag>, provide parent information of target to help locate problem element.
+Process <tag>bridgehead</tag> in mode="title.markup", not normal mode.</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: sections.xsl</literal></para><screen><phrase role="commit-message">Use $div.element variable in place of div to support html5 <tag>section</tag> element.
-output</phrase></screen>
+<para><literal>Jirka Kosek: l10n.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #3598963</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3528673, missing "separator" param on template with
-match="<tag>indexterm</tag>" mode="<tag>reference</tag>". That param is passed
-for endofrange processing to output the range separator.</phrase></screen>
+<para><literal>Robert Stayton: gentext.xsl; labels.xsl</literal></para><screen><phrase role="commit-message">Make sure bridgeheads are not numbered in all contexts, including html <tag>title</tag> attributes.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><!--end of HTML changes for 1.77.1-->
+</sect2><!--end of Common changes for 1.78.1-->
-<sect2 xml:id="V1.77.1_Roundtrip">
-<title>Roundtrip</title>
+<sect2 xml:id="V1.78.1_FO">
+<title>FO</title>
<para>The following changes have been made to the
- <filename>roundtrip</filename> code
- since the 1.77.0 release.</para>
+ <filename>fo</filename> code
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: dbk2ooo.xsl; dbk2pages.xsl; dbk2wordml.xsl; dbk2wp.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: division.xsl</literal></para><screen><phrase role="commit-message">Fix bug where part <tag>TOC</tag> not generated when <tag>partintro</tag> is present.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: xref.xsl</literal></para><screen><phrase role="commit-message">Footnotes can't be placed into fo:float</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Remove margin-left when start-indent is used because they interfere
+with each other.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: fo.xsl; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Use dingbat.fontset rather than <parameter>dingbat.font.family</parameter> so it falls
+back to <tag>symbol</tag> font if glyph not found, like other font properties.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Change last instance of inline.charseq in inline <tag>glossterm</tag> to
+inline.italicseq so it is consistent with the others.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><!--end of Roundtrip changes for 1.77.1-->
+</sect2><!--end of FO changes for 1.78.1-->
-<sect2 xml:id="V1.77.1_Slides">
-<title>Slides</title>
+<sect2 xml:id="V1.78.1_HTML">
+<title>HTML</title>
<para>The following changes have been made to the
- <filename>slides</filename> code
- since the 1.77.0 release.</para>
+ <filename>html</filename> code
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: html/slides-common.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: admon.xsl</literal></para><screen><phrase role="commit-message">Turn off $admon.style if $make.clean.html is set to non-zero.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: highlight.xsl</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Make active.olink.hrefs param work for chunked output too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Add round() <tag>function</tag> when pixel counts are used for image width and height.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl</literal></para><screen><phrase role="commit-message">fix missing class and id attributes on <tag>glossterm</tag> and <tag>glossdef</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fix bug where prefer.index.titleabbrev ignored <tag>info</tag>/<tag>titleabbrev</tag>.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><!--end of Slides changes for 1.77.1-->
+</sect2><!--end of HTML changes for 1.78.1-->
-<sect2 xml:id="V1.77.1_Website">
-<title>Website</title>
+<sect2 xml:id="V1.78.1_Manpages">
+<title>Manpages</title>
<para>The following changes have been made to the
- <filename>website</filename> code
- since the 1.77.0 release.</para>
+ <filename>manpages</filename> code
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: website-common.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3599520: spurious newline in <tag>para</tag> when starts with
+whitespace and inline element.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><!--end of Website changes for 1.77.1-->
+</sect2><!--end of Manpages changes for 1.78.1-->
-<sect2 xml:id="V1.77.1_Webhelp">
+<sect2 xml:id="V1.78.1_Webhelp">
<title>Webhelp</title>
<para>The following changes have been made to the
<filename>webhelp</filename> code
- since the 1.77.0 release.</para>
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Increase default value for <parameter>chunk.section.depth</parameter></phrase></screen>
-</listitem>
-<listitem>
-<para><literal>kasunbg: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">updated webhelp documentation</phrase></screen>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
</listitem>
<listitem>
-<para><literal>kasunbg: template/content/search/nwSearchFnt.js; xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Removed the script htmlFileList.js since it's content is in htmlFileInfoList.js</phrase></screen>
+<para><literal>David Cramer: Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: Fix order of args to xsltproc</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">In the &lt;h1&gt; output, replace call to 'get.doc.title' with
-mode="title.markup" because get.doc.title returns only
-the string value of the <tag>title</tag>, losing any markup such
-as &lt;<tag>trademark</tag>&gt; or &lt;<tag>superscript</tag>&gt;.</phrase></screen>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality</phrase></screen>
</listitem>
<listitem>
-<para><literal>kasunbg: template/common/css/positioning.css; template/content/search/nwSearchFnt.js</literal></para><screen><phrase role="commit-message">Remove unnecessary bits of code from webhelp</phrase></screen>
-</listitem>
-<listitem>
-<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Minor edits to the readme</phrase></screen>
+<para><literal>David Cramer: Makefile; Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: In Makefiles, do xinclude in first pass at document</phrase></screen>
</listitem>
+</itemizedlist>
+</sect2><!--end of Webhelp changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
<listitem>
-<para><literal>David Cramer: xsl/webhelp.xsl; xsl/titlepage.templates.xsl; xsl/titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Webhelp: Suppress abstracts from titlepages. These are used to create the search result summary sentence and should not be shown</phrase></screen>
+<para><literal>David Cramer: webhelp.include.search.tab.xml</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
</listitem>
<listitem>
-<para><literal>David Cramer: build.xml</literal></para><screen><phrase role="commit-message">Webhelp: calculate path to profile.xsl from main build.xml file</phrase></screen>
+<para><literal>Robert Stayton: article.appendix.title.properties.xml</literal></para><screen><phrase role="commit-message">Remove unneeded margin-left property from <tag>article</tag> <tag>appendix</tag> <tag>title</tag>.
+It interferes with the start-indent property.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><!--end of Webhelp changes for 1.77.1-->
+</sect2><!--end of Params changes for 1.78.1-->
-<sect2 xml:id="V1.77.1_Template">
-<title>Template</title>
+<sect2 xml:id="V1.78.1_Highlighting">
+<title>Highlighting</title>
<para>The following changes have been made to the
- <filename>template</filename> code
- since the 1.77.0 release.</para>
+ <filename>highlighting</filename> code
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: titlepage.xsl</literal></para><screen><phrase role="commit-message">Undo last change because not implemented correctly.</phrase></screen>
-</listitem>
-<listitem>
-<para><literal>Robert Stayton: titlepage.xsl</literal></para><screen><phrase role="commit-message">Fix xsl:element to not overwrite the incoming fo: namespace
-if the $ns param is not set.</phrase></screen>
+<para><literal>Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml; bourne-hl.xml; ⋯</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><!--end of Template changes for 1.77.1-->
+</sect2><!--end of Highlighting changes for 1.78.1-->
</sect1>
</article>
diff --git a/README b/README
index 539bdd6..bb0a512 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
----------------------------------------------------------------------
README file for the DocBook XSL Stylesheets
----------------------------------------------------------------------
-$Id: README 9397 2012-06-02 22:35:07Z bobstayton $
+$Id: README 9731 2013-03-17 05:01:54Z bobstayton $
These are XSL stylesheets for transforming DocBook XML document
instances into various output formats.
@@ -74,13 +74,14 @@ schema/DTD, use one of the following stylesheets:
- converts a DocBook document into an assembly
with topic files.
+ webhelp/build.xml - Ant script to generate webhelp output.
+ webhelp/Makefile - Makefile to generate webhelp output.
+
To transform documents created with the DocBook Slides schema/DTD,
use one of the following stylesheets:
- slides/html/*.xsl - for HTML slides of various kinds
slides/xhtml/*.xsl - for XHTML slides of various kinds
slides/fo/plain.xsl - for XSL-FO slides
- slides/htmlhelp/... - for HTML Help slides
To transform documents created with the DocBook Website
schema/DTD, use one of the following stylesheets:
@@ -138,6 +139,7 @@ roundtrip/ for "round trip" conversion among DocBook and
slides/ for producing slides output (from Slides source)
template/ templates for building stylesheet customization layers
tools/ assorted supplementary tools
+webhelp/ templates and scripts for generating webhelp output
website/ for producing website output (from Website source)
xhtml/ for producing XHTML
xhtml-1_1/ for producing (stricter) XHTML 1.1
diff --git a/RELEASE-NOTES-TMP.xml b/RELEASE-NOTES-TMP.xml
index f6d1abf..00bddff 100644
--- a/RELEASE-NOTES-TMP.xml
+++ b/RELEASE-NOTES-TMP.xml
@@ -29,7 +29,7 @@ changes made over the entire history of the codebase.</para>
<para condition="snapshot">This is a pre-release &#x201C;snapshot&#x201D; of the
DocBook XSL Stylesheets. The change information in the first
section of this file
-(for &#x201C;Release Notes: 1.77.1&#x201D;) is
+(for &#x201C;Release Notes: 1.78.1&#x201D;) is
auto-generated from change descriptions stored in the project
source-code repository.</para>
<para condition="snapshot">That means the first section contains
@@ -42,127 +42,792 @@ public APIs (user-configurable parameters).</para>
</info>
<sect1 condition="snapshot" xml:id="current">
- <title>Release Notes: 1.77.1</title><para>The following is a list of changes that have been made
- since the 1.77.0 release.</para><sect2 xml:id="V1.77.1_FO">
+ <title>Release Notes: 1.78.1</title><para>The following is a list of changes that have been made
+ since the 1.78.0 release.</para><sect2 xml:id="V1.78.1_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Make sure part and set <tag>titleabbrev</tag> are used in mode="titleabbrev.markup"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Add empty default template for <tag>titleabbrev</tag> since it is always processed in a mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">for missing <tag>title</tag> in <tag>xref</tag>, provide parent information of target to help locate problem element.
+Process <tag>bridgehead</tag> in mode="title.markup", not normal mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: l10n.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #3598963</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl; labels.xsl</literal></para><screen><phrase role="commit-message">Make sure bridgeheads are not numbered in all contexts, including html <tag>title</tag> attributes.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><sect2 xml:id="V1.78.1_FO">
<title>FO</title>
<para>The following changes have been made to the
<filename>fo</filename> code
- since the 1.77.0 release.</para>
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: division.xsl</literal></para><screen><phrase role="commit-message">Fix bug where part <tag>TOC</tag> not generated when <tag>partintro</tag> is present.</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: block.xsl</literal></para><screen><phrase role="commit-message">In <tag>sidebar</tag>, turn off space before first <tag>para</tag> if there is no <tag>title</tag>.</phrase></screen>
+<para><literal>Jirka Kosek: xref.xsl</literal></para><screen><phrase role="commit-message">Footnotes can't be placed into fo:float</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: math.xsl</literal></para><screen><phrase role="commit-message">Restored templates for mml:* elements that were accidentally deleted.</phrase></screen>
+<para><literal>Robert Stayton: titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Remove margin-left when start-indent is used because they interfere
+with each other.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: fo.xsl; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Use dingbat.fontset rather than <parameter>dingbat.font.family</parameter> so it falls
+back to <tag>symbol</tag> font if glyph not found, like other font properties.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Change last instance of inline.charseq in inline <tag>glossterm</tag> to
+inline.italicseq so it is consistent with the others.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><sect2 xml:id="V1.77.1_HTML">
+</sect2><sect2 xml:id="V1.78.1_HTML">
<title>HTML</title>
<para>The following changes have been made to the
<filename>html</filename> code
- since the 1.77.0 release.</para>
+ since the 1.78.0 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: admon.xsl</literal></para><screen><phrase role="commit-message">Turn off $admon.style if $make.clean.html is set to non-zero.</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: sections.xsl</literal></para><screen><phrase role="commit-message">Use $div.element variable in place of div to support html5 <tag>section</tag> element.
-output</phrase></screen>
+<para><literal>Jirka Kosek: highlight.xsl</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3528673, missing "separator" param on template with
-match="<tag>indexterm</tag>" mode="<tag>reference</tag>". That param is passed
-for endofrange processing to output the range separator.</phrase></screen>
+<para><literal>Robert Stayton: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Make active.olink.hrefs param work for chunked output too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Add round() <tag>function</tag> when pixel counts are used for image width and height.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl</literal></para><screen><phrase role="commit-message">fix missing class and id attributes on <tag>glossterm</tag> and <tag>glossdef</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fix bug where prefer.index.titleabbrev ignored <tag>info</tag>/<tag>titleabbrev</tag>.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><sect2 xml:id="V1.78.1_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3599520: spurious newline in <tag>para</tag> when starts with
+whitespace and inline element.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><sect2 xml:id="V1.78.1_Webhelp">
+<title>Webhelp</title>
+<para>The following changes have been made to the
+ <filename>webhelp</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: Fix order of args to xsltproc</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile; Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: In Makefiles, do xinclude in first pass at document</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><sect2 xml:id="V1.78.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: webhelp.include.search.tab.xml</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: article.appendix.title.properties.xml</literal></para><screen><phrase role="commit-message">Remove unneeded margin-left property from <tag>article</tag> <tag>appendix</tag> <tag>title</tag>.
+It interferes with the start-indent property.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><sect2 xml:id="V1.78.1_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml; bourne-hl.xml; &#x22EF;</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2>
+</sect1>
+
+<sect1 xml:id="V1.78.1">
+<title>Release Notes: 1.78.1</title>
+<para>The following is a list of changes that have been made
+ since the 1.78.0 release.</para>
+
+<sect2 xml:id="V1.78.1_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Make sure part and set <tag>titleabbrev</tag> are used in mode="titleabbrev.markup"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Add empty default template for <tag>titleabbrev</tag> since it is always processed in a mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">for missing <tag>title</tag> in <tag>xref</tag>, provide parent information of target to help locate problem element.
+Process <tag>bridgehead</tag> in mode="title.markup", not normal mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: l10n.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #3598963</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl; labels.xsl</literal></para><screen><phrase role="commit-message">Make sure bridgeheads are not numbered in all contexts, including html <tag>title</tag> attributes.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: division.xsl</literal></para><screen><phrase role="commit-message">Fix bug where part <tag>TOC</tag> not generated when <tag>partintro</tag> is present.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: xref.xsl</literal></para><screen><phrase role="commit-message">Footnotes can't be placed into fo:float</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Remove margin-left when start-indent is used because they interfere
+with each other.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: fo.xsl; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Use dingbat.fontset rather than <parameter>dingbat.font.family</parameter> so it falls
+back to <tag>symbol</tag> font if glyph not found, like other font properties.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Change last instance of inline.charseq in inline <tag>glossterm</tag> to
+inline.italicseq so it is consistent with the others.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: admon.xsl</literal></para><screen><phrase role="commit-message">Turn off $admon.style if $make.clean.html is set to non-zero.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: highlight.xsl</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Make active.olink.hrefs param work for chunked output too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Add round() <tag>function</tag> when pixel counts are used for image width and height.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl</literal></para><screen><phrase role="commit-message">fix missing class and id attributes on <tag>glossterm</tag> and <tag>glossdef</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fix bug where prefer.index.titleabbrev ignored <tag>info</tag>/<tag>titleabbrev</tag>.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3599520: spurious newline in <tag>para</tag> when starts with
+whitespace and inline element.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Webhelp">
+<title>Webhelp</title>
+<para>The following changes have been made to the
+ <filename>webhelp</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: Fix order of args to xsltproc</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile; Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: In Makefiles, do xinclude in first pass at document</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Webhelp changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: webhelp.include.search.tab.xml</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: article.appendix.title.properties.xml</literal></para><screen><phrase role="commit-message">Remove unneeded margin-left property from <tag>article</tag> <tag>appendix</tag> <tag>title</tag>.
+It interferes with the start-indent property.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml; bourne-hl.xml; &#x22EF;</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.78.1-->
+
+</sect1>
+<sect1 xml:id="V1.78.0">
+<title>Release Notes: 1.78.0</title>
+<para>The following is a list of changes that have been made
+ since the 1.77.1 release.</para>
+
+<sect2 xml:id="V1.78.0_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+ <filename>gentext</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/nn.xml; locale/nb.xml</literal></para><screen><phrase role="commit-message">Bug #3556630: Updated nb and nn locale files.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/README</literal></para><screen><phrase role="commit-message">Bug #3556628: Updated information in README.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: locale/de.xml</literal></para><screen><phrase role="commit-message">Added <tag>keycap</tag> context from RFE#3540451 to support @function attribute</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: locale/en.xml</literal></para><screen><phrase role="commit-message">Added <tag>keycap</tag> context from RFE#3540451 to support @function attribute</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/en.xml</literal></para><screen><phrase role="commit-message">Add support for <tag>title</tag> element in <tag>screenshot</tag>, now allowed in DocBook 5.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Corrected template for <tag>bridgehead</tag> in mode="title.markup" to
+process its children in normal mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: labels.xsl</literal></para><screen><phrase role="commit-message">Convert hard wired xsl:number for <tag>production</tag> into a template
+with mode="label.markup" to be consistent with other element numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Remove all references and code for obsolete <tag>olink</tag> attributes
+@linkmode @targetdocent and @localinfo.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: pagesetup.xsl</literal></para><screen><phrase role="commit-message">Change initial page number for <tag>book</tag> from 1 to auto so front
+<tag>cover</tag> and <tag>title</tag> pages are sequential, and so that <tag>book</tag> inside
+set will continue numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Add missing closing <tag>tag</tag> for xsl:choose in new template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Add <parameter>force.blank.pages</parameter> parameter to allow turning off blank
+pages in <parameter>double.sided</parameter> output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl; callout.xsl</literal></para><screen><phrase role="commit-message">Implement active links between <tag>co</tag> and <tag>callout</tag> elements for
+PDF output, linking in both directions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Fix typo to replace "ro" with "<tag>row</tag>" in three places.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: ebnf.xsl</literal></para><screen><phrase role="commit-message">Convert hard wired xsl:number for <tag>production</tag> into a template
+with mode="label.markup" to be consistent with other element numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Make comma inserted after <tag>function</tag>/parameter or <tag>function</tag>/<tag>replaceable</tag>
+conditional on $function.parens to be consistent with the <tag>function</tag> template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: inline.xsl</literal></para><screen><phrase role="commit-message">Added new inline.sansseq template for consistency reasons.
+Makes it easier for customization layers: Just use
+ &lt;xsl:call-template name="inline.sansseq"/&gt;
+to change to sans serif font, but also takes into account
+XLinks and direction of text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Remove all references and code for obsolete <tag>olink</tag> attributes
+@linkmode @targetdocent and @localinfo.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Remove <parameter>passivetex.extensions</parameter> code.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: spaces.xsl; autotoc.xsl; docbook.xsl; division.xsl; table.xsl; sections.xs&#x22EF;</literal></para><screen><phrase role="commit-message">Remove all passivetex code because it is obsolete.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.xsl</literal></para><screen><phrase role="commit-message">Added support for keep-together PI on <tag>informaltable</tag>. Closes bug #3555609.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: verbatim.xsl</literal></para><screen><phrase role="commit-message">Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fixed typo: fole -&gt; role attribute for <tag>phrase</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: inline.xsl</literal></para><screen><phrase role="commit-message">Added support for @function attribute in <tag>keycap</tag> (uses <tag>keycap</tag> context
+from language files) =&gt; fixes RFE#3540451
+If @function is set and <tag>keycap</tag> is empty, then template will use the
+content from the <tag>keycap</tag> context, otherwise it will use just the given
+text</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>title</tag> element in <tag>screenshot</tag>, now allowed in DocBook 5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Restore formatting of <tag>figure</tag>/<tag>caption</tag> that was broken in 1.77.1.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><sect2 xml:id="V1.77.1_Roundtrip">
+</sect2><!--end of FO changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: autotoc.xsl</literal></para><screen><phrase role="commit-message">Fixing bug where toc.title.p and nodes params had not been declared inside manual-toc template</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autotoc.xsl</literal></para><screen><phrase role="commit-message">Add 'toc.list.attributes' template to insert class and other
+attributes on the top level list element in a <tag>table</tag> of contents.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: block.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3590039 <tag>abstract</tag>/<tag>title</tag> not rendered.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: chunk-common.xsl; footnote.xsl</literal></para><screen><phrase role="commit-message">Fixed positioning of <tag>footnote</tag> separate when CSS decoration is used.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: ebnf.xsl</literal></para><screen><phrase role="commit-message">Convert hard wired xsl:number for <tag>production</tag> into a template
+with mode="label.markup" to be consistent with other element numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Make comma inserted after <tag>function</tag>/parameter or <tag>function</tag>/<tag>replaceable</tag>
+conditional on $function.parens to be consistent with the <tag>function</tag> template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>mediaobject</tag>/<tag>alt</tag>, with precedence over
+<tag>mediaobject</tag>/<tag>textobject</tag>/<tag>phrase</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb</literal></para><screen><phrase role="commit-message">Remove src:fragref elements for deleted obsolete <tag>olink</tag> params.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunker.xsl</literal></para><screen><phrase role="commit-message">Fix bug #3563697 where template make-relative-filename was using a
+global param chunk.base.dir instead of its local param <parameter>base.dir</parameter>. Now it uses <parameter>base.dir</parameter>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; xref.xsl</literal></para><screen><phrase role="commit-message">Remove all references and code for obsolete <tag>olink</tag> attributes
+@linkmode @targetdocent and @localinfo.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: graphics.xsl</literal></para><screen><phrase role="commit-message">Add hook for customization.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: docbook.xsl</literal></para><screen><phrase role="commit-message">Splitting head.content into smaller chunks of templates.
+See https://lists.oasis-open.org/archives/docbook-apps/201209/msg00037.html</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: verbatim.xsl</literal></para><screen><phrase role="commit-message">Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: footnote.xsl</literal></para><screen><phrase role="commit-message">Fix bug in <tag>footnote</tag> <tag>link</tag> introduced in 1.77.1.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: formal.xsl; htmltbl.xsl</literal></para><screen><phrase role="commit-message">Resolve conflict of duplicate ids on html <tag>table</tag> with <tag>caption</tag>.
+Wrap a div with class and id attribute around html <tag>table</tag> without <tag>caption</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: component.xsl</literal></para><screen><phrase role="commit-message">Remove call to 'generate.id' template in &lt;h1&gt; in component.title because the
+id is already generated for the parent div element.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunker.xsl</literal></para><screen><phrase role="commit-message">Set omit-xml-declaration to 'yes' for write.text.chunk template, since a text
+file should never have an xml declaration.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: inline.xsl</literal></para><screen><phrase role="commit-message">Added support for @function attribute in <tag>keycap</tag> (uses <tag>keycap</tag> context
+from language files) =&gt; fixes RFE#3540451
+If @function is set and <tag>keycap</tag> is empty, then template will use the
+content from the <tag>keycap</tag> context, otherwise it will use just the given
+text</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docbook.xsl</literal></para><screen><phrase role="commit-message">Also set the <tag>title</tag> param in head.content since it's sometimes
+called without that param being passed in. Use the passed-in
+value in user.head.title.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Restore missing <tag>title</tag> param on 'head.content' template, and passed
+it along to user.head.title. That param
+is used for certain special chunkings such as Long Descriptions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>title</tag> in <tag>screenshot</tag>, available since DocBook 5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docbook.xsl</literal></para><screen><phrase role="commit-message">HTML: Add hook for easily customizing html/head/<tag>title</tag></phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Add a line break at start of <tag>variablelist</tag> to fix bug #3595156.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Better fix for bug #3545150 by putting the <tag>title</tag> with the step number
+rather than before it.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Add 'content' param to template name inline.monoseq to support
+<tag>email</tag> format, fixing bug #3524417.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Fix bug #3512473 where an inline <tag>synopsis</tag> element produced
+an extra line break in nroff output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3545150 where <tag>procedure</tag>/step/<tag>title</tag> not rendered in man pages.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Roundtrip">
<title>Roundtrip</title>
<para>The following changes have been made to the
<filename>roundtrip</filename> code
- since the 1.77.0 release.</para>
+ since the 1.77.1 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: dbk2ooo.xsl; dbk2pages.xsl; dbk2wordml.xsl; dbk2wp.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>Robert Stayton: dbk2wordml.xsl</literal></para><screen><phrase role="commit-message">Fix bug #3297553 error in Word metadata elements from including
+WordML markup instead of just text.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><sect2 xml:id="V1.77.1_Slides">
+</sect2><!--end of Roundtrip changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Slides">
<title>Slides</title>
<para>The following changes have been made to the
<filename>slides</filename> code
- since the 1.77.0 release.</para>
+ since the 1.77.1 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: html/slides-common.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Use real push-style processing in the foil/foilgroup page content, which
+ allows better customization in general (e.g. you can add PI templates)
+ and also let us render scattered speakernotes/handoutnotes if that is
+ desired</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/Makefile</literal></para><screen><phrase role="commit-message">- Titlepage markup belongs to the XHTML namespace</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Remove now unnecessary template redefinition</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Generate valid links from cross-references</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Do not add fallbacks for EXSLT extensions, the main DocBook XSL stylesheets
+ do not do that either</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: schema/relaxng/slides.rnc</literal></para><screen><phrase role="commit-message">Update the import path for docbook.rnc after the slides directory was moved.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">Add missing stylesheet.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: schema/xsd/Makefile; schema/Makefile; schema/relaxng/Makefile</literal></para><screen><phrase role="commit-message">Adjust Makefiles.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: locatingrules.xml; RELEASE-NOTES.xml; doc; images; locatingrules.xml; Makefile; im&#x22EF;</literal></para><screen><phrase role="commit-message">Moved many files from slides/ to xsl/slides/</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: fo/param.xweb; xhtml/Makefile; xhtml/param.xweb; fo/Makefile</literal></para><screen><phrase role="commit-message">Separate slides package.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: Makefile</literal></para><screen><phrase role="commit-message">A bit of cleanup...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: xhtml/Makefile; fo/Makefile</literal></para><screen><phrase role="commit-message">Add to 'clean' target.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Slides: Change html to xhtml passim.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xhtml</literal></para><screen><phrase role="commit-message">Adding items to svn ignore for slides</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: slidy</literal></para><screen><phrase role="commit-message">Import slidy from vendor branch.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: s5</literal></para><screen><phrase role="commit-message">Import s5 from vendor branch.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: Makefile; common/common.xsl; common; fo/param.ent; graphics; xhtml/Makefile.param;&#x22EF;</literal></para><screen><phrase role="commit-message">Merge Slides GSoC project to trunk.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><sect2 xml:id="V1.77.1_Website">
-<title>Website</title>
+</sect2><!--end of Slides changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Webhelp">
+<title>Webhelp</title>
<para>The following changes have been made to the
- <filename>website</filename> code
- since the 1.77.0 release.</para>
+ <filename>webhelp</filename> code
+ since the 1.77.1 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: website-common.xsl</literal></para><screen><phrase role="commit-message">Import the VERSION.xsl file instead of VERSION so mimetype is interpreted correctly
-from the <tag>filename</tag>.</phrase></screen>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: More doc updates</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Documentation updates.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/content; Makefile; Makefile.sample; build.xml; template/search</literal></para><screen><phrase role="commit-message">Webhelp: Improving sample Makefile to allow for profiling params and other params, removing content dir from template and making related adjustments in Makefile and build.xml</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile.sample</literal></para><screen><phrase role="commit-message">Attempting to include sample Makefile in webhelp output dir</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/css/positioning.css</literal></para><screen><phrase role="commit-message">Webhelp: Do not display <tag>sidebar</tag> if js is disabled in browser since it will not be functional</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: build.xml</literal></para><screen><phrase role="commit-message">Xerces must be on the classpath in order to XInclude work</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Adding generated files to various clean targets.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: build.properties</literal></para><screen><phrase role="commit-message">Webhelp: By default don't validate against dtd when using ant build</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Webhelp: By default only exclude ix01.html from search in Makefile</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js; template/common/jquery&#x22EF;</literal></para><screen><phrase role="commit-message">Webhelp: Reverting last commit</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js; template/common/jquery&#x22EF;</literal></para><screen><phrase role="commit-message">Webhelp: Removing two more unused jquery files</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-1.4.2.min.js</literal></para><screen><phrase role="commit-message">Webhelp: Removing old, unused jquery file</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix header logo <tag>link</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix bad <tag>link</tag> to favicon.ico</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-1.7.2.min.js; template/common/main.js; templat&#x22EF;</literal></para><screen><phrase role="commit-message">First part of the GSoC 2012 work by Arun and Visitha:
+
+Visitha Baddegama
+Remove content folder from Webhelp output
+Build Webhelp using GNU Make/without ant
+Support a parameterized list of files to exclude while indexing
+Improve information message for browser with JavaScript disabled
+Support searching for terms with punctuation like build.xml
+
+Arun Bharadwaj
+Make it possible to include the doc <tag>title</tag> in head/<tag>title</tag> and
+ not in the search results
+Improve performance in IE 8/9
+Expandable <tag>TOC</tag> pane
+Information message for browser with JavaScript disabled</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Use user.head.title to add <tag>title</tag> to webhelp pages,
+but do not yet add the <tag>book</tag> <tag>title</tag> to the page <tag>title</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Revert 9433. We need to fix the indexer before we can include the document <tag>title</tag> in the html/head/<tag>title</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Append document <tag>title</tag> to html/head/title</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: fix missing <tag>reference</tag> to ie.css</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><sect2 xml:id="V1.77.1_Webhelp">
-<title>Webhelp</title>
+</sect2><!--end of Webhelp changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Params">
+<title>Params</title>
<para>The following changes have been made to the
- <filename>webhelp</filename> code
- since the 1.77.0 release.</para>
+ <filename>params</filename> code
+ since the 1.77.1 release.</para>
<itemizedlist>
<listitem>
-<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Increase default value for <parameter>chunk.section.depth</parameter></phrase></screen>
+<para><literal>Robert Stayton: page.height.portrait.xml; page.width.portrait.xml</literal></para><screen><phrase role="commit-message">Add USlegal and USlegallandscape.</phrase></screen>
</listitem>
<listitem>
-<para><literal>kasunbg: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">updated webhelp documentation</phrase></screen>
+<para><literal>Robert Stayton: force.blank.pages.xml</literal></para><screen><phrase role="commit-message">Improve the description.</phrase></screen>
</listitem>
<listitem>
-<para><literal>kasunbg: template/content/search/nwSearchFnt.js; xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Removed the script htmlFileList.js since it's content is in htmlFileInfoList.js</phrase></screen>
+<para><literal>Robert Stayton: page.margin.outer.xml; writing.mode.xml; double.sided.xml; page.margin.inn&#x22EF;</literal></para><screen><phrase role="commit-message">Improve the description.</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">In the &lt;h1&gt; output, replace call to 'get.doc.title' with
-mode="title.markup" because get.doc.title returns only
-the string value of the <tag>title</tag>, losing any markup such
-as &lt;<tag>trademark</tag>&gt; or &lt;<tag>superscript</tag>&gt;.</phrase></screen>
+<para><literal>Robert Stayton: force.blank.pages.xml</literal></para><screen><phrase role="commit-message">New param to control generating blank even-numbered pages.</phrase></screen>
</listitem>
<listitem>
-<para><literal>kasunbg: template/common/css/positioning.css; template/content/search/nwSearchFnt.js</literal></para><screen><phrase role="commit-message">Remove unnecessary bits of code from webhelp</phrase></screen>
+<para><literal>Robert Stayton: passivetex.extensions.xml</literal></para><screen><phrase role="commit-message">Indicate that passivetex is no longer supported.</phrase></screen>
</listitem>
<listitem>
-<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Minor edits to the readme</phrase></screen>
+<para><literal>Robert Stayton: footnote.properties.xml</literal></para><screen><phrase role="commit-message">Fix bug #3555628 where a <tag>footnote</tag> inside a <tag>blockquote</tag> inherits the end-indent from the <tag>blockquote</tag>.</phrase></screen>
</listitem>
<listitem>
-<para><literal>David Cramer: xsl/webhelp.xsl; xsl/titlepage.templates.xsl; xsl/titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Webhelp: Suppress abstracts from titlepages. These are used to create the search result summary sentence and should not be shown</phrase></screen>
+<para><literal>stefan: foil.page-sequence.properties.xml; handoutnotes.properties.xml; slidy.duration.xml&#x22EF;</literal></para><screen><phrase role="commit-message">Merge Slides GSoC project to trunk.</phrase></screen>
</listitem>
<listitem>
-<para><literal>David Cramer: build.xml</literal></para><screen><phrase role="commit-message">Webhelp: calculate path to profile.xsl from main build.xml file</phrase></screen>
+<para><literal>Robert Stayton: activate.external.olinks.xml</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2><sect2 xml:id="V1.77.1_Template">
-<title>Template</title>
+</sect2><!--end of Params changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Profiling">
+<title>Profiling</title>
<para>The following changes have been made to the
- <filename>template</filename> code
- since the 1.77.0 release.</para>
+ <filename>profiling</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: xsl2profile.xsl</literal></para><screen><phrase role="commit-message">Test for @xml:id as well as @id for $rootid.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Tools">
+<title>Tools</title>
+<para>The following changes have been made to the
+ <filename>tools</filename> code
+ since the 1.77.1 release.</para>
<itemizedlist>
<listitem>
-<para><literal>Robert Stayton: titlepage.xsl</literal></para><screen><phrase role="commit-message">Undo last change because not implemented correctly.</phrase></screen>
+<para><literal>David Cramer: bin/docbook-xsl-update</literal></para><screen><phrase role="commit-message">s/VERSION/VERSION.xsl/ again.</phrase></screen>
</listitem>
<listitem>
-<para><literal>Robert Stayton: titlepage.xsl</literal></para><screen><phrase role="commit-message">Fix xsl:element to not overwrite the incoming fo: namespace
-if the $ns param is not set.</phrase></screen>
+<para><literal>David Cramer: xsl/build/xsl-param-link.xsl; xsl/build/make-xsl-params.xsl</literal></para><screen><phrase role="commit-message">Slides: Change html to xhtml passim.</phrase></screen>
</listitem>
</itemizedlist>
-</sect2>
+</sect2><!--end of Tools changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Template">
+<title>Template</title>
+<para>The following changes have been made to the
+ <filename>template</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: titlepage.xsl</literal></para><screen><phrase role="commit-message">Autoguess of proper parameter settings</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Template changes for 1.78.0-->
+
</sect1>
+
<sect1 xml:id="V1.77.0">
<title>Release Notes: 1.77.1</title>
<para>The following list summarizes the major changes that have been made
diff --git a/RELEASE-NOTES.html b/RELEASE-NOTES.html
index 8989d50..710c5bc 100644
--- a/RELEASE-NOTES.html
+++ b/RELEASE-NOTES.html
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Release Notes for the DocBook XSL Stylesheets</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"><meta name="description" content="This release-notes document is available in the following formats: HTML, PDF, plain text; it provides a per-release list of enhancements and changes to the stylesheets&#8217; public APIs (user-configurable parameters) and excludes descriptions of most bug fixes. For a complete list of all changes (including all bug fixes) that have been made since the previous release, see the separate NEWS (plain text) or NEWS.html files. Also available: An online hyperlinked change history (warning: big file) of all changes made over the entire history of the codebase. As with all DocBook Project &#8220;dot one plus&#8221; releases, this release aspires to be stable (in contrast to dot-zero releases, which are experimental)."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="article"><div class="titlepage"><div><div><h2 class="title"><a name="releasenotes"></a>Release Notes for the DocBook XSL Stylesheets</h2></div><div><p class="releaseinfo">$Revision: 9401 $ $Date: 2012-06-04 21:47:26 +0000 (Mon, 04 Jun 2012) $</p></div><div><p class="pubdate">2012-06-04</p></div><div><div class="abstract">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Release Notes for the DocBook XSL Stylesheets</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><meta name="description" content="This release-notes document is available in the following formats: HTML, PDF, plain text; it provides a per-release list of enhancements and changes to the stylesheets&#8217; public APIs (user-configurable parameters) and excludes descriptions of most bug fixes. For a complete list of all changes (including all bug fixes) that have been made since the previous release, see the separate NEWS (plain text) or NEWS.html files. Also available: An online hyperlinked change history (warning: big file) of all changes made over the entire history of the codebase. As with all DocBook Project &#8220;dot one plus&#8221; releases, this release aspires to be stable (in contrast to dot-zero releases, which are experimental)."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="article"><div class="titlepage"><div><div><h2 class="title"><a name="releasenotes"></a>Release Notes for the DocBook XSL Stylesheets</h2></div><div><p class="releaseinfo">$Revision: 9401 $ $Date: 2012-06-04 21:47:26 +0000 (Mon, 04 Jun 2012) $</p></div><div><p class="pubdate">2013-03-17</p></div><div><div class="abstract">
<p>This release-notes
document is available in the following formats:
<a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.html" target="_top">HTML</a>,
@@ -18,11 +18,508 @@ changes made over the entire history of the codebase.</p>
are experimental).</p>
-</div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#V1.77.0">Release Notes: 1.77.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.77_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#VrnV1.77_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Lib">Lib</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Template">Template</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_XSL-Saxon">XSL-Saxon</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.77.1">Release Notes: 1.77.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Vsnapshot_9396_FO">FO</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Website">Website</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Webhelp">Webhelp</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.76.1">Release Notes: 1.76.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.76.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.76.0">Release Notes: 1.76.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.76.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#rn_V1.75.2">Release Notes: 1.75.2</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.2_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#rn_V1.75.1">Release Notes: 1.75.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.75.0">Release Notes: 1.75.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Epub">ePub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.74.3">Release Notes: 1.74.3</a></span></dt><dt><span class="sect1"><a href="#V1.74.2">Release Notes: 1.74.2</a></span></dt><dt><span class="sect1"><a href="#V1.74.1">Release Notes: 1.74.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#summary_V1.74.1_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Epub">ePub</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Highlighting">Highlighting</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.74.0">Release Notes: 1.74.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.74.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Website">Website</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-Xalan">XSL-Xalan</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-libxslt">XSL-libxslt</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.73.2">Release Notes: 1.73.2</a></span></dt><dt><span class="sect1"><a href="#V1.73.1">Release: 1.73.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.73.1_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.73.0">Release: 1.73.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.73.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Lib">Lib</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.72.0">Release: 1.72.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.72.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Template">Template</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Roundtrip">Roundtrip</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.71.1">Release: 1.71.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.71.1_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Profiling">Profiling</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.71.0">Release: 1.71.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.71.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Tools">Tools</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1701">Release: 1.70.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1701_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1701_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1701_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1701_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1700">Release: 1.70.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1700_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1700_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1700_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1700_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1700_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1700_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1700_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1700_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1700_WordML">WordML</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1691">Release 1.69.1</a></span></dt><dt><span class="sect1"><a href="#V1690">Release 1.69.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1690_COMMON">Common</a></span></dt><dt><span class="sect2"><a href="#V1690_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1690_HELP">Help</a></span></dt><dt><span class="sect2"><a href="#V1690_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1690_MAN">man</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1681">Release 1.68.1</a></span></dt><dt><span class="sect1"><a href="#V1680">Release 1.68.0</a></span></dt><dt><span class="sect1"><a href="#V1672">Release 1.67.2</a></span></dt><dt><span class="sect1"><a href="#V1671">Release 1.67.1</a></span></dt><dt><span class="sect1"><a href="#V1670">Release 1.67.0</a></span></dt><dt><span class="sect1"><a href="#V1661">Release 1.66.1</a></span></dt><dt><span class="sect1"><a href="#V1650">Release 1.65.0</a></span></dt><dt><span class="sect1"><a href="#V1641">Release 1.64.1</a></span></dt><dt><span class="sect1"><a href="#V1610">Release 1.61.0</a></span></dt><dt><span class="sect1"><a href="#V1601">Release 1.60.1</a></span></dt><dt><span class="sect1"><a href="#V1592">Release 1.59.2</a></span></dt><dt><span class="sect1"><a href="#V1591">Release 1.59.1</a></span></dt><dt><span class="sect1"><a href="#V1580">Release 1.58.0</a></span></dt><dt><span class="sect1"><a href="#V1570">Release 1.57.0</a></span></dt><dt><span class="sect1"><a href="#V1560">Release 1.56.0</a></span></dt><dt><span class="sect1"><a href="#VOlder">Older releases</a></span></dt><dt><span class="sect1"><a href="#dot0">About dot-zero releases</a></span></dt></dl></div>
+</div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="#V1.78.1">Release Notes: 1.78.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.78.1_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.78.1_Highlighting">Highlighting</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.78.0">Release Notes: 1.78.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.78.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.78.0_Template">Template</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.77.0">Release Notes: 1.77.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.77_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#VrnV1.77_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Webhelp">Webhelp</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Lib">Lib</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Template">Template</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#rnV1.77_XSL-Saxon">XSL-Saxon</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.77.1">Release Notes: 1.77.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Vsnapshot_9396_FO">FO</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Website">Website</a></span></dt><dt><span class="sect2"><a href="#Vsnapshot_9396_Webhelp">Webhelp</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.76.1">Release Notes: 1.76.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.76.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.76.0">Release Notes: 1.76.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rnV1.76.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rnV1.76.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#rn_V1.75.2">Release Notes: 1.75.2</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.2_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.2_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#rn_V1.75.1">Release Notes: 1.75.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.75.0">Release Notes: 1.75.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#rn_V1.75.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Epub">ePub</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#rn_V1.75.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.74.3">Release Notes: 1.74.3</a></span></dt><dt><span class="sect1"><a href="#V1.74.2">Release Notes: 1.74.2</a></span></dt><dt><span class="sect1"><a href="#V1.74.1">Release Notes: 1.74.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#summary_V1.74.1_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Epub">ePub</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#summary_V1.74.1_Highlighting">Highlighting</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.74.0">Release Notes: 1.74.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.74.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Epub">Epub</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Slides">Slides</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Website">Website</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-Xalan">XSL-Xalan</a></span></dt><dt><span class="sect2"><a href="#V1.74.0_XSL-libxslt">XSL-libxslt</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.73.2">Release Notes: 1.73.2</a></span></dt><dt><span class="sect1"><a href="#V1.73.1">Release: 1.73.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.73.1_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.73.1_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.73.0">Release: 1.73.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.73.0_Gentext">Gentext</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Eclipse">Eclipse</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_JavaHelp">JavaHelp</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Roundtrip">Roundtrip</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Lib">Lib</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_XSL-Saxon">XSL-Saxon</a></span></dt><dt><span class="sect2"><a href="#V1.73.0_XSL-Xalan">XSL-Xalan</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.72.0">Release: 1.72.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.72.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Template">Template</a></span></dt><dt><span class="sect2"><a href="#V1.72.0_Roundtrip">Roundtrip</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.71.1">Release: 1.71.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.71.1_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.71.1_Profiling">Profiling</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1.71.0">Release: 1.71.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1.71.0_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Highlighting">Highlighting</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1.71.0_Tools">Tools</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1701">Release: 1.70.1</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1701_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1701_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1701_HTMLHelp">HTMLHelp</a></span></dt><dt><span class="sect2"><a href="#V1701_Params">Params</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1700">Release: 1.70.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1700_Common">Common</a></span></dt><dt><span class="sect2"><a href="#V1700_Extensions">Extensions</a></span></dt><dt><span class="sect2"><a href="#V1700_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1700_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1700_Manpages">Manpages</a></span></dt><dt><span class="sect2"><a href="#V1700_Params">Params</a></span></dt><dt><span class="sect2"><a href="#V1700_Profiling">Profiling</a></span></dt><dt><span class="sect2"><a href="#V1700_Tools">Tools</a></span></dt><dt><span class="sect2"><a href="#V1700_WordML">WordML</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1691">Release 1.69.1</a></span></dt><dt><span class="sect1"><a href="#V1690">Release 1.69.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="#V1690_COMMON">Common</a></span></dt><dt><span class="sect2"><a href="#V1690_FO">FO</a></span></dt><dt><span class="sect2"><a href="#V1690_HELP">Help</a></span></dt><dt><span class="sect2"><a href="#V1690_HTML">HTML</a></span></dt><dt><span class="sect2"><a href="#V1690_MAN">man</a></span></dt></dl></dd><dt><span class="sect1"><a href="#V1681">Release 1.68.1</a></span></dt><dt><span class="sect1"><a href="#V1680">Release 1.68.0</a></span></dt><dt><span class="sect1"><a href="#V1672">Release 1.67.2</a></span></dt><dt><span class="sect1"><a href="#V1671">Release 1.67.1</a></span></dt><dt><span class="sect1"><a href="#V1670">Release 1.67.0</a></span></dt><dt><span class="sect1"><a href="#V1661">Release 1.66.1</a></span></dt><dt><span class="sect1"><a href="#V1650">Release 1.65.0</a></span></dt><dt><span class="sect1"><a href="#V1641">Release 1.64.1</a></span></dt><dt><span class="sect1"><a href="#V1610">Release 1.61.0</a></span></dt><dt><span class="sect1"><a href="#V1601">Release 1.60.1</a></span></dt><dt><span class="sect1"><a href="#V1592">Release 1.59.2</a></span></dt><dt><span class="sect1"><a href="#V1591">Release 1.59.1</a></span></dt><dt><span class="sect1"><a href="#V1580">Release 1.58.0</a></span></dt><dt><span class="sect1"><a href="#V1570">Release 1.57.0</a></span></dt><dt><span class="sect1"><a href="#V1560">Release 1.56.0</a></span></dt><dt><span class="sect1"><a href="#VOlder">Older releases</a></span></dt><dt><span class="sect1"><a href="#dot0">About dot-zero releases</a></span></dt></dl></div>
+
+<div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.78.1"></a>Release Notes: 1.78.1</h2></div></div></div>
+
+<p>The following is a list of changes that have been made
+ since the 1.78.0 release.</p>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Make sure part and set <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> are used in mode="titleabbrev.markup"</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Add empty default template for <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> since it is always processed in a mode.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: gentext.xsl</code></p><pre class="screen"><span class="commit-message">Make consistent handling of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in xrefs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">for missing <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in <a href="http://docbook.org/tdg5/en/html/xref.html"><code class="sgmltag-element">xref</code></a>, provide parent information of target to help locate problem element.
+Process <a href="http://docbook.org/tdg5/en/html/bridgehead.html"><code class="sgmltag-element">bridgehead</code></a> in mode="title.markup", not normal mode.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: l10n.xsl</code></p><pre class="screen"><span class="commit-message">Fixed bug #3598963</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: gentext.xsl; labels.xsl</code></p><pre class="screen"><span class="commit-message">Make sure bridgeheads are not numbered in all contexts, including html <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> attributes.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: division.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug where part <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a> not generated when <a href="http://docbook.org/tdg5/en/html/partintro.html"><code class="sgmltag-element">partintro</code></a> is present.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: xref.xsl</code></p><pre class="screen"><span class="commit-message">Footnotes can't be placed into fo:float</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: titlepage.templates.xml</code></p><pre class="screen"><span class="commit-message">Remove margin-left when start-indent is used because they interfere
+with each other.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: fo.xsl; pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Use dingbat.fontset rather than <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/dingbat.font.family.html"><em class="parameter"><code>dingbat.font.family</code></em></a> so it falls
+back to <a href="http://docbook.org/tdg5/en/html/symbol.html"><code class="sgmltag-element">symbol</code></a> font if glyph not found, like other font properties.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Change last instance of inline.charseq in inline <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> to
+inline.italicseq so it is consistent with the others.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Make consistent handling of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in xrefs.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: admon.xsl</code></p><pre class="screen"><span class="commit-message">Turn off $admon.style if $make.clean.html is set to non-zero.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: highlight.xsl</code></p><pre class="screen"><span class="commit-message">Added new definitions for syntax highlighting</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunk-common.xsl</code></p><pre class="screen"><span class="commit-message">Make active.olink.hrefs param work for chunked output too.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Make consistent handling of <a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a> in xrefs.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Add round() <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> when pixel counts are used for image width and height.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: glossary.xsl</code></p><pre class="screen"><span class="commit-message">fix missing class and id attributes on <a href="http://docbook.org/tdg5/en/html/glossterm.html"><code class="sgmltag-element">glossterm</code></a> and <a href="http://docbook.org/tdg5/en/html/glossdef.html"><code class="sgmltag-element">glossdef</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug where prefer.index.titleabbrev ignored <a href="http://docbook.org/tdg5/en/html/info.html"><code class="sgmltag-element">info</code></a>/<a href="http://docbook.org/tdg5/en/html/titleabbrev.html"><code class="sgmltag-element">titleabbrev</code></a>.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: utility.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 3599520: spurious newline in <a href="http://docbook.org/tdg5/en/html/para.html"><code class="sgmltag-element">para</code></a> when starts with
+whitespace and inline element.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Webhelp"></a>Webhelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">webhelp</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix test for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/webhelp.include.search.tab.html"><em class="parameter"><code>webhelp.include.search.tab</code></em></a> param</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: Makefile.sample</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix order of args to xsltproc</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: docsrc/readme.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: Makefile; Makefile.sample</code></p><pre class="screen"><span class="commit-message">Webhelp: In Makefiles, do xinclude in first pass at document</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">David Cramer: webhelp.include.search.tab.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix test for <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/webhelp.include.search.tab.html"><em class="parameter"><code>webhelp.include.search.tab</code></em></a> param</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: article.appendix.title.properties.xml</code></p><pre class="screen"><span class="commit-message">Remove unneeded margin-left property from <a href="http://docbook.org/tdg5/en/html/article.html"><code class="sgmltag-element">article</code></a> <a href="http://docbook.org/tdg5/en/html/appendix.html"><code class="sgmltag-element">appendix</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.
+It interferes with the start-indent property.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.1_Highlighting"></a>Highlighting</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">highlighting</code> code
+ since the 1.78.0 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml; bourne-hl.xml; &#8943;</code></p><pre class="screen"><span class="commit-message">Added new definitions for syntax highlighting</span></pre>
+</li></ul></div>
+</div>
+
+</div>
+<div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.78.0"></a>Release Notes: 1.78.0</h2></div></div></div>
+
+<p>The following is a list of changes that have been made
+ since the 1.77.1 release.</p>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Gentext"></a>Gentext</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">gentext</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: locale/nn.xml; locale/nb.xml</code></p><pre class="screen"><span class="commit-message">Bug #3556630: Updated nb and nn locale files.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: locale/README</code></p><pre class="screen"><span class="commit-message">Bug #3556628: Updated information in README.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: locale/de.xml</code></p><pre class="screen"><span class="commit-message">Added <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> context from RFE#3540451 to support @function attribute</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: locale/en.xml</code></p><pre class="screen"><span class="commit-message">Added <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> context from RFE#3540451 to support @function attribute</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: locale/en.xml</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> element in <a href="http://docbook.org/tdg5/en/html/screenshot.html"><code class="sgmltag-element">screenshot</code></a>, now allowed in DocBook 5.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Common"></a>Common</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">common</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: titles.xsl</code></p><pre class="screen"><span class="commit-message">Corrected template for <a href="http://docbook.org/tdg5/en/html/bridgehead.html"><code class="sgmltag-element">bridgehead</code></a> in mode="title.markup" to
+process its children in normal mode.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: labels.xsl</code></p><pre class="screen"><span class="commit-message">Convert hard wired xsl:number for <a href="http://docbook.org/tdg5/en/html/production.html"><code class="sgmltag-element">production</code></a> into a template
+with mode="label.markup" to be consistent with other element numbering.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: olink.xsl</code></p><pre class="screen"><span class="commit-message">Remove all references and code for obsolete <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> attributes
+@linkmode @targetdocent and @localinfo.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: olink.xsl</code></p><pre class="screen"><span class="commit-message">Add parameter '<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/activate.external.olinks.html"><em class="parameter"><code>activate.external.olinks</code></em></a>' to allow making
+external olinks inactive, as for epub output.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_FO"></a>FO</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">fo</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Change initial page number for <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> from 1 to auto so front
+<a href="http://docbook.org/tdg5/en/html/cover.html"><code class="sgmltag-element">cover</code></a> and <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> pages are sequential, and so that <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> inside
+set will continue numbering.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Add missing closing <a href="http://docbook.org/tdg5/en/html/tag.html"><code class="sgmltag-element">tag</code></a> for xsl:choose in new template.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; pagesetup.xsl</code></p><pre class="screen"><span class="commit-message">Add <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/force.blank.pages.html"><em class="parameter"><code>force.blank.pages</code></em></a> parameter to allow turning off blank
+pages in <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/double.sided.html"><em class="parameter"><code>double.sided</code></em></a> output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl; callout.xsl</code></p><pre class="screen"><span class="commit-message">Implement active links between <a href="http://docbook.org/tdg5/en/html/co.html"><code class="sgmltag-element">co</code></a> and <a href="http://docbook.org/tdg5/en/html/callout.html"><code class="sgmltag-element">callout</code></a> elements for
+PDF output, linking in both directions.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Fix typo to replace "ro" with "<a href="http://docbook.org/tdg5/en/html/row.html"><code class="sgmltag-element">row</code></a>" in three places.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: ebnf.xsl</code></p><pre class="screen"><span class="commit-message">Convert hard wired xsl:number for <a href="http://docbook.org/tdg5/en/html/production.html"><code class="sgmltag-element">production</code></a> into a template
+with mode="label.markup" to be consistent with other element numbering.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Make comma inserted after <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>/parameter or <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>/<a href="http://docbook.org/tdg5/en/html/replaceable.html"><code class="sgmltag-element">replaceable</code></a>
+conditional on $function.parens to be consistent with the <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> template.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added new inline.sansseq template for consistency reasons.
+Makes it easier for customization layers: Just use
+ &lt;xsl:call-template name="inline.sansseq"/&gt;
+to change to sans serif font, but also takes into account
+XLinks and direction of text.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: xref.xsl</code></p><pre class="screen"><span class="commit-message">Remove all references and code for obsolete <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> attributes
+@linkmode @targetdocent and @localinfo.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: table.xsl</code></p><pre class="screen"><span class="commit-message">Remove <a href="http://docbook.sourceforge.net/release/xsl/current/doc/fo/passivetex.extensions.html"><em class="parameter"><code>passivetex.extensions</code></em></a> code.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: spaces.xsl; autotoc.xsl; docbook.xsl; division.xsl; table.xsl; sections.xs&#8943;</code></p><pre class="screen"><span class="commit-message">Remove all passivetex code because it is obsolete.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add parameter '<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/activate.external.olinks.html"><em class="parameter"><code>activate.external.olinks</code></em></a>' to allow making
+external olinks inactive, as for epub output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Mauritz Jeanson: table.xsl</code></p><pre class="screen"><span class="commit-message">Added support for keep-together PI on <a href="http://docbook.org/tdg5/en/html/informaltable.html"><code class="sgmltag-element">informaltable</code></a>. Closes bug #3555609.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: autoidx.xsl</code></p><pre class="screen"><span class="commit-message">Fixed typo: fole -&gt; role attribute for <a href="http://docbook.org/tdg5/en/html/phrase.html"><code class="sgmltag-element">phrase</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added support for @function attribute in <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> (uses <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> context
+from language files) =&gt; fixes RFE#3540451
+If @function is set and <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> is empty, then template will use the
+content from the <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> context, otherwise it will use just the given
+text</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: graphics.xsl; xref.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> element in <a href="http://docbook.org/tdg5/en/html/screenshot.html"><code class="sgmltag-element">screenshot</code></a>, now allowed in DocBook 5.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Restore formatting of <a href="http://docbook.org/tdg5/en/html/figure.html"><code class="sgmltag-element">figure</code></a>/<a href="http://docbook.org/tdg5/en/html/caption.html"><code class="sgmltag-element">caption</code></a> that was broken in 1.77.1.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_HTML"></a>HTML</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">html</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">David Cramer: autotoc.xsl</code></p><pre class="screen"><span class="commit-message">Fixing bug where toc.title.p and nodes params had not been declared inside manual-toc template</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: autotoc.xsl</code></p><pre class="screen"><span class="commit-message">Add 'toc.list.attributes' template to insert class and other
+attributes on the top level list element in a <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> of contents.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: block.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 3590039 <a href="http://docbook.org/tdg5/en/html/abstract.html"><code class="sgmltag-element">abstract</code></a>/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> not rendered.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: chunk-common.xsl; footnote.xsl</code></p><pre class="screen"><span class="commit-message">Fixed positioning of <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> separate when CSS decoration is used.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: ebnf.xsl</code></p><pre class="screen"><span class="commit-message">Convert hard wired xsl:number for <a href="http://docbook.org/tdg5/en/html/production.html"><code class="sgmltag-element">production</code></a> into a template
+with mode="label.markup" to be consistent with other element numbering.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: inline.xsl</code></p><pre class="screen"><span class="commit-message">Make comma inserted after <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>/parameter or <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a>/<a href="http://docbook.org/tdg5/en/html/replaceable.html"><code class="sgmltag-element">replaceable</code></a>
+conditional on $function.parens to be consistent with the <a href="http://docbook.org/tdg5/en/html/function.html"><code class="sgmltag-element">function</code></a> template.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a>/<a href="http://docbook.org/tdg5/en/html/alt.html"><code class="sgmltag-element">alt</code></a>, with precedence over
+<a href="http://docbook.org/tdg5/en/html/mediaobject.html"><code class="sgmltag-element">mediaobject</code></a>/<a href="http://docbook.org/tdg5/en/html/textobject.html"><code class="sgmltag-element">textobject</code></a>/<a href="http://docbook.org/tdg5/en/html/phrase.html"><code class="sgmltag-element">phrase</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb</code></p><pre class="screen"><span class="commit-message">Remove src:fragref elements for deleted obsolete <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> params.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunker.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #3563697 where template make-relative-filename was using a
+global param chunk.base.dir instead of its local param <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>. Now it uses <a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/base.dir.html"><em class="parameter"><code>base.dir</code></em></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent; xref.xsl</code></p><pre class="screen"><span class="commit-message">Remove all references and code for obsolete <a href="http://docbook.org/tdg5/en/html/olink.html"><code class="sgmltag-element">olink</code></a> attributes
+@linkmode @targetdocent and @localinfo.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: param.xweb; param.ent</code></p><pre class="screen"><span class="commit-message">Add parameter '<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/activate.external.olinks.html"><em class="parameter"><code>activate.external.olinks</code></em></a>' to allow making
+external olinks inactive, as for epub output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: graphics.xsl</code></p><pre class="screen"><span class="commit-message">Add hook for customization.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Splitting head.content into smaller chunks of templates.
+See https://lists.oasis-open.org/archives/docbook-apps/201209/msg00037.html</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: verbatim.xsl</code></p><pre class="screen"><span class="commit-message">Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: footnote.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug in <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> introduced in 1.77.1.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: formal.xsl; htmltbl.xsl</code></p><pre class="screen"><span class="commit-message">Resolve conflict of duplicate ids on html <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> with <a href="http://docbook.org/tdg5/en/html/caption.html"><code class="sgmltag-element">caption</code></a>.
+Wrap a div with class and id attribute around html <a href="http://docbook.org/tdg5/en/html/table.html"><code class="sgmltag-element">table</code></a> without <a href="http://docbook.org/tdg5/en/html/caption.html"><code class="sgmltag-element">caption</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: component.xsl</code></p><pre class="screen"><span class="commit-message">Remove call to 'generate.id' template in &lt;h1&gt; in component.title because the
+id is already generated for the parent div element.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: chunker.xsl</code></p><pre class="screen"><span class="commit-message">Set omit-xml-declaration to 'yes' for write.text.chunk template, since a text
+file should never have an xml declaration.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">tom_schr: inline.xsl</code></p><pre class="screen"><span class="commit-message">Added support for @function attribute in <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> (uses <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> context
+from language files) =&gt; fixes RFE#3540451
+If @function is set and <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> is empty, then template will use the
+content from the <a href="http://docbook.org/tdg5/en/html/keycap.html"><code class="sgmltag-element">keycap</code></a> context, otherwise it will use just the given
+text</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Also set the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> param in head.content since it's sometimes
+called without that param being passed in. Use the passed-in
+value in user.head.title.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: docbook.xsl</code></p><pre class="screen"><span class="commit-message">Restore missing <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> param on 'head.content' template, and passed
+it along to user.head.title. That param
+is used for certain special chunkings such as Long Descriptions.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: graphics.xsl; xref.xsl</code></p><pre class="screen"><span class="commit-message">Add support for <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in <a href="http://docbook.org/tdg5/en/html/screenshot.html"><code class="sgmltag-element">screenshot</code></a>, available since DocBook 5.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: docbook.xsl</code></p><pre class="screen"><span class="commit-message">HTML: Add hook for easily customizing html/head/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a></span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Manpages"></a>Manpages</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">manpages</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Add a line break at start of <a href="http://docbook.org/tdg5/en/html/variablelist.html"><code class="sgmltag-element">variablelist</code></a> to fix bug #3595156.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Better fix for bug #3545150 by putting the <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> with the step number
+rather than before it.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: utility.xsl</code></p><pre class="screen"><span class="commit-message">Add 'content' param to template name inline.monoseq to support
+<a href="http://docbook.org/tdg5/en/html/email.html"><code class="sgmltag-element">email</code></a> format, fixing bug #3524417.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: utility.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #3512473 where an inline <a href="http://docbook.org/tdg5/en/html/synopsis.html"><code class="sgmltag-element">synopsis</code></a> element produced
+an extra line break in nroff output.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: lists.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug 3545150 where <a href="http://docbook.org/tdg5/en/html/procedure.html"><code class="sgmltag-element">procedure</code></a>/step/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> not rendered in man pages.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Roundtrip"></a>Roundtrip</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">roundtrip</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: dbk2wordml.xsl</code></p><pre class="screen"><span class="commit-message">Fix bug #3297553 error in Word metadata elements from including
+WordML markup instead of just text.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Slides"></a>Slides</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">slides</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">gaborkovesdan: xhtml/plain.xsl</code></p><pre class="screen"><span class="commit-message">- Use real push-style processing in the foil/foilgroup page content, which
+ allows better customization in general (e.g. you can add PI templates)
+ and also let us render scattered speakernotes/handoutnotes if that is
+ desired</span></pre>
+</li><li class="listitem">
+<p><code class="literal">gaborkovesdan: xhtml/Makefile</code></p><pre class="screen"><span class="commit-message">- Titlepage markup belongs to the XHTML namespace</span></pre>
+</li><li class="listitem">
+<p><code class="literal">gaborkovesdan: xhtml/plain.xsl</code></p><pre class="screen"><span class="commit-message">- Remove now unnecessary template redefinition</span></pre>
+</li><li class="listitem">
+<p><code class="literal">gaborkovesdan: xhtml/plain.xsl</code></p><pre class="screen"><span class="commit-message">- Generate valid links from cross-references</span></pre>
+</li><li class="listitem">
+<p><code class="literal">gaborkovesdan: xhtml/plain.xsl</code></p><pre class="screen"><span class="commit-message">- Do not add fallbacks for EXSLT extensions, the main DocBook XSL stylesheets
+ do not do that either</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: schema/relaxng/slides.rnc</code></p><pre class="screen"><span class="commit-message">Update the import path for docbook.rnc after the slides directory was moved.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: xhtml/plain.xsl</code></p><pre class="screen"><span class="commit-message">Add missing stylesheet.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: schema/xsd/Makefile; schema/Makefile; schema/relaxng/Makefile</code></p><pre class="screen"><span class="commit-message">Adjust Makefiles.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: locatingrules.xml; RELEASE-NOTES.xml; doc; images; locatingrules.xml; Makefile; im&#8943;</code></p><pre class="screen"><span class="commit-message">Moved many files from slides/ to xsl/slides/</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: fo/param.xweb; xhtml/Makefile; xhtml/param.xweb; fo/Makefile</code></p><pre class="screen"><span class="commit-message">Separate slides package.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: Makefile</code></p><pre class="screen"><span class="commit-message">A bit of cleanup...</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: xhtml/Makefile; fo/Makefile</code></p><pre class="screen"><span class="commit-message">Add to 'clean' target.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: Makefile</code></p><pre class="screen"><span class="commit-message">Slides: Change html to xhtml passim.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xhtml</code></p><pre class="screen"><span class="commit-message">Adding items to svn ignore for slides</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: slidy</code></p><pre class="screen"><span class="commit-message">Import slidy from vendor branch.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: s5</code></p><pre class="screen"><span class="commit-message">Import s5 from vendor branch.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: Makefile; common/common.xsl; common; fo/param.ent; graphics; xhtml/Makefile.param;&#8943;</code></p><pre class="screen"><span class="commit-message">Merge Slides GSoC project to trunk.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Webhelp"></a>Webhelp</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">webhelp</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">David Cramer: docsrc/readme.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: More doc updates</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: docsrc/readme.xml</code></p><pre class="screen"><span class="commit-message">Webhelp: Documentation updates.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: template/content; Makefile; Makefile.sample; build.xml; template/search</code></p><pre class="screen"><span class="commit-message">Webhelp: Improving sample Makefile to allow for profiling params and other params, removing content dir from template and making related adjustments in Makefile and build.xml</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: Makefile.sample</code></p><pre class="screen"><span class="commit-message">Attempting to include sample Makefile in webhelp output dir</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: template/common/css/positioning.css</code></p><pre class="screen"><span class="commit-message">Webhelp: Do not display <a href="http://docbook.org/tdg5/en/html/sidebar.html"><code class="sgmltag-element">sidebar</code></a> if js is disabled in browser since it will not be functional</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Jirka Kosek: build.xml</code></p><pre class="screen"><span class="commit-message">Xerces must be on the classpath in order to XInclude work</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: Makefile</code></p><pre class="screen"><span class="commit-message">Adding generated files to various clean targets.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: build.properties</code></p><pre class="screen"><span class="commit-message">Webhelp: By default don't validate against dtd when using ant build</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: Makefile</code></p><pre class="screen"><span class="commit-message">Webhelp: By default only exclude ix01.html from search in Makefile</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js; template/common/jquery&#8943;</code></p><pre class="screen"><span class="commit-message">Webhelp: Reverting last commit</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js; template/common/jquery&#8943;</code></p><pre class="screen"><span class="commit-message">Webhelp: Removing two more unused jquery files</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: template/common/jquery/jquery-1.4.2.min.js</code></p><pre class="screen"><span class="commit-message">Webhelp: Removing old, unused jquery file</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix header logo <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Fix bad <a href="http://docbook.org/tdg5/en/html/link.html"><code class="sgmltag-element">link</code></a> to favicon.ico</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: template/common/jquery/jquery-1.7.2.min.js; template/common/main.js; templat&#8943;</code></p><pre class="screen"><span class="commit-message">First part of the GSoC 2012 work by Arun and Visitha:
+
+Visitha Baddegama
+Remove content folder from Webhelp output
+Build Webhelp using GNU Make/without ant
+Support a parameterized list of files to exclude while indexing
+Improve information message for browser with JavaScript disabled
+Support searching for terms with punctuation like build.xml
+
+Arun Bharadwaj
+Make it possible to include the doc <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in head/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> and
+ not in the search results
+Improve performance in IE 8/9
+Expandable <a href="http://docbook.org/tdg5/en/html/toc.html"><code class="sgmltag-element">TOC</code></a> pane
+Information message for browser with JavaScript disabled</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Use user.head.title to add <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> to webhelp pages,
+but do not yet add the <a href="http://docbook.org/tdg5/en/html/book.html"><code class="sgmltag-element">book</code></a> <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> to the page <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Revert 9433. We need to fix the indexer before we can include the document <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> in the html/head/<a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a></span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: Append document <a href="http://docbook.org/tdg5/en/html/title.html"><code class="sgmltag-element">title</code></a> to html/head/title</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/webhelp-common.xsl</code></p><pre class="screen"><span class="commit-message">Webhelp: fix missing <a href="http://docbook.org/tdg5/en/html/reference.html"><code class="sgmltag-element">reference</code></a> to ie.css</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Params"></a>Params</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">params</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: page.height.portrait.xml; page.width.portrait.xml</code></p><pre class="screen"><span class="commit-message">Add USlegal and USlegallandscape.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: force.blank.pages.xml</code></p><pre class="screen"><span class="commit-message">Improve the description.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: page.margin.outer.xml; writing.mode.xml; double.sided.xml; page.margin.inn&#8943;</code></p><pre class="screen"><span class="commit-message">Improve the description.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: force.blank.pages.xml</code></p><pre class="screen"><span class="commit-message">New param to control generating blank even-numbered pages.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: passivetex.extensions.xml</code></p><pre class="screen"><span class="commit-message">Indicate that passivetex is no longer supported.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: footnote.properties.xml</code></p><pre class="screen"><span class="commit-message">Fix bug #3555628 where a <a href="http://docbook.org/tdg5/en/html/footnote.html"><code class="sgmltag-element">footnote</code></a> inside a <a href="http://docbook.org/tdg5/en/html/blockquote.html"><code class="sgmltag-element">blockquote</code></a> inherits the end-indent from the <a href="http://docbook.org/tdg5/en/html/blockquote.html"><code class="sgmltag-element">blockquote</code></a>.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">stefan: foil.page-sequence.properties.xml; handoutnotes.properties.xml; slidy.duration.xml&#8943;</code></p><pre class="screen"><span class="commit-message">Merge Slides GSoC project to trunk.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">Robert Stayton: activate.external.olinks.xml</code></p><pre class="screen"><span class="commit-message">Add parameter '<a href="http://docbook.sourceforge.net/release/xsl/current/doc/html/activate.external.olinks.html"><em class="parameter"><code>activate.external.olinks</code></em></a>' to allow making
+external olinks inactive, as for epub output.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Profiling"></a>Profiling</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">profiling</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Robert Stayton: xsl2profile.xsl</code></p><pre class="screen"><span class="commit-message">Test for @xml:id as well as @id for $rootid.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Tools"></a>Tools</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">tools</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">David Cramer: bin/docbook-xsl-update</code></p><pre class="screen"><span class="commit-message">s/VERSION/VERSION.xsl/ again.</span></pre>
+</li><li class="listitem">
+<p><code class="literal">David Cramer: xsl/build/xsl-param-link.xsl; xsl/build/make-xsl-params.xsl</code></p><pre class="screen"><span class="commit-message">Slides: Change html to xhtml passim.</span></pre>
+</li></ul></div>
+</div>
+
+<div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="V1.78.0_Template"></a>Template</h3></div></div></div>
+
+<p>The following changes have been made to the
+ <code class="filename">template</code> code
+ since the 1.77.1 release.</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+<p><code class="literal">Jirka Kosek: titlepage.xsl</code></p><pre class="screen"><span class="commit-message">Autoguess of proper parameter settings</span></pre>
+</li></ul></div>
+</div>
+
+</div>
+
<div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="V1.77.0"></a>Release Notes: 1.77.1</h2></div></div></div>
<p>The following list summarizes the major changes that have been made
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 7f6c0f8..26769a8 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -2,7 +2,7 @@ Release Notes for the DocBook XSL Stylesheets
$Revision: 9401 $ $Date: 2012-06-04 21:47:26 +0000 (Mon, 04 Jun 2012) $
-2012-06-04
+2013-03-17
This release-notes document is available in the following formats: HTML, PDF,
plain text; it provides a per-release list of enhancements and changes to the
@@ -20,6 +20,31 @@ stable (in contrast to dot-zero releases, which are experimental).
Table of Contents
+Release Notes: 1.78.1
+
+ Common
+ FO
+ HTML
+ Manpages
+ Webhelp
+ Params
+ Highlighting
+
+Release Notes: 1.78.0
+
+ Gentext
+ Common
+ FO
+ HTML
+ Manpages
+ Roundtrip
+ Slides
+ Webhelp
+ Params
+ Profiling
+ Tools
+ Template
+
Release Notes: 1.77.1
Gentext
@@ -242,6 +267,710 @@ Release 1.56.0
Older releases
About dot-zero releases
+Release Notes: 1.78.1
+
+The following is a list of changes that have been made since the 1.78.0
+release.
+
+Common
+
+The following changes have been made to the common code since the 1.78.0
+release.
+
+ • Robert Stayton: titles.xsl
+
+ Make sure part and set titleabbrev are used in mode="titleabbrev.markup"
+
+ • Robert Stayton: titles.xsl
+
+ Add empty default template for titleabbrev since it is always processed in a mode.
+
+ • Robert Stayton: gentext.xsl
+
+ Make consistent handling of titleabbrev in xrefs.
+
+ • Robert Stayton: titles.xsl
+
+ for missing title in xref, provide parent information of target to help locate problem element.
+ Process bridgehead in mode="title.markup", not normal mode.
+
+ • Jirka Kosek: l10n.xsl
+
+ Fixed bug #3598963
+
+ • Robert Stayton: gentext.xsl; labels.xsl
+
+ Make sure bridgeheads are not numbered in all contexts, including html title attributes.
+
+FO
+
+The following changes have been made to the fo code since the 1.78.0 release.
+
+ • Robert Stayton: division.xsl
+
+ Fix bug where part TOC not generated when partintro is present.
+
+ • Jirka Kosek: xref.xsl
+
+ Footnotes can't be placed into fo:float
+
+ • Robert Stayton: titlepage.templates.xml
+
+ Remove margin-left when start-indent is used because they interfere
+ with each other.
+
+ • Robert Stayton: fo.xsl; pagesetup.xsl
+
+ Use dingbat.fontset rather than dingbat.font.family so it falls
+ back to symbol font if glyph not found, like other font properties.
+
+ • Robert Stayton: inline.xsl
+
+ Change last instance of inline.charseq in inline glossterm to
+ inline.italicseq so it is consistent with the others.
+
+ • Robert Stayton: xref.xsl
+
+ Make consistent handling of titleabbrev in xrefs.
+
+HTML
+
+The following changes have been made to the html code since the 1.78.0 release.
+
+ • Robert Stayton: admon.xsl
+
+ Turn off $admon.style if $make.clean.html is set to non-zero.
+
+ • Jirka Kosek: highlight.xsl
+
+ Added new definitions for syntax highlighting
+
+ • Robert Stayton: chunk-common.xsl
+
+ Make active.olink.hrefs param work for chunked output too.
+
+ • Robert Stayton: xref.xsl
+
+ Make consistent handling of titleabbrev in xrefs.
+
+ • Robert Stayton: graphics.xsl
+
+ Add round() function when pixel counts are used for image width and height.
+
+ • Robert Stayton: glossary.xsl
+
+ fix missing class and id attributes on glossterm and glossdef.
+
+ • Robert Stayton: autoidx.xsl
+
+ Fix bug where prefer.index.titleabbrev ignored info/titleabbrev.
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.78.0
+release.
+
+ • Robert Stayton: utility.xsl
+
+ Fix bug 3599520: spurious newline in para when starts with
+ whitespace and inline element.
+
+Webhelp
+
+The following changes have been made to the webhelp code since the 1.78.0
+release.
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Webhelp: Fix test for webhelp.include.search.tab param
+
+ • David Cramer: Makefile.sample
+
+ Webhelp: Fix order of args to xsltproc
+
+ • David Cramer: docsrc/readme.xml
+
+ Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality
+
+ • David Cramer: Makefile; Makefile.sample
+
+ Webhelp: In Makefiles, do xinclude in first pass at document
+
+Params
+
+The following changes have been made to the params code since the 1.78.0
+release.
+
+ • David Cramer: webhelp.include.search.tab.xml
+
+ Webhelp: Fix test for webhelp.include.search.tab param
+
+ • Robert Stayton: article.appendix.title.properties.xml
+
+ Remove unneeded margin-left property from article appendix title.
+ It interferes with the start-indent property.
+
+Highlighting
+
+The following changes have been made to the highlighting code since the 1.78.0
+release.
+
+ • Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml;
+ bourne-hl.xml; ⋯
+
+ Added new definitions for syntax highlighting
+
+Release Notes: 1.78.0
+
+The following is a list of changes that have been made since the 1.77.1
+release.
+
+Gentext
+
+The following changes have been made to the gentext code since the 1.77.1
+release.
+
+ • Mauritz Jeanson: locale/nn.xml; locale/nb.xml
+
+ Bug #3556630: Updated nb and nn locale files.
+
+ • Mauritz Jeanson: locale/README
+
+ Bug #3556628: Updated information in README.
+
+ • tom_schr: locale/de.xml
+
+ Added keycap context from RFE#3540451 to support @function attribute
+
+ • tom_schr: locale/en.xml
+
+ Added keycap context from RFE#3540451 to support @function attribute
+
+ • Robert Stayton: locale/en.xml
+
+ Add support for title element in screenshot, now allowed in DocBook 5.
+
+Common
+
+The following changes have been made to the common code since the 1.77.1
+release.
+
+ • Robert Stayton: titles.xsl
+
+ Corrected template for bridgehead in mode="title.markup" to
+ process its children in normal mode.
+
+ • Robert Stayton: labels.xsl
+
+ Convert hard wired xsl:number for production into a template
+ with mode="label.markup" to be consistent with other element numbering.
+
+ • Robert Stayton: olink.xsl
+
+ Remove all references and code for obsolete olink attributes
+ @linkmode @targetdocent and @localinfo.
+
+ • Robert Stayton: olink.xsl
+
+ Add parameter 'activate.external.olinks' to allow making
+ external olinks inactive, as for epub output.
+
+FO
+
+The following changes have been made to the fo code since the 1.77.1 release.
+
+ • Robert Stayton: pagesetup.xsl
+
+ Change initial page number for book from 1 to auto so front
+ cover and title pages are sequential, and so that book inside
+ set will continue numbering.
+
+ • Robert Stayton: inline.xsl
+
+ Add missing closing tag for xsl:choose in new template.
+
+ • Robert Stayton: param.xweb; param.ent; pagesetup.xsl
+
+ Add force.blank.pages parameter to allow turning off blank
+ pages in double.sided output.
+
+ • Robert Stayton: lists.xsl; callout.xsl
+
+ Implement active links between co and callout elements for
+ PDF output, linking in both directions.
+
+ • Robert Stayton: table.xsl
+
+ Fix typo to replace "ro" with "row" in three places.
+
+ • Robert Stayton: ebnf.xsl
+
+ Convert hard wired xsl:number for production into a template
+ with mode="label.markup" to be consistent with other element numbering.
+
+ • Robert Stayton: inline.xsl
+
+ Make comma inserted after function/parameter or function/replaceable
+ conditional on $function.parens to be consistent with the function template.
+
+ • tom_schr: inline.xsl
+
+ Added new inline.sansseq template for consistency reasons.
+ Makes it easier for customization layers: Just use
+ <xsl:call-template name="inline.sansseq"/>
+ to change to sans serif font, but also takes into account
+ XLinks and direction of text.
+
+ • Robert Stayton: xref.xsl
+
+ Remove all references and code for obsolete olink attributes
+ @linkmode @targetdocent and @localinfo.
+
+ • Robert Stayton: table.xsl
+
+ Remove passivetex.extensions code.
+
+ • Robert Stayton: spaces.xsl; autotoc.xsl; docbook.xsl; division.xsl;
+ table.xsl; sections.xs⋯
+
+ Remove all passivetex code because it is obsolete.
+
+ • Robert Stayton: param.xweb; param.ent
+
+ Add parameter 'activate.external.olinks' to allow making
+ external olinks inactive, as for epub output.
+
+ • Mauritz Jeanson: table.xsl
+
+ Added support for keep-together PI on informaltable. Closes bug #3555609.
+
+ • tom_schr: verbatim.xsl
+
+ Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing
+
+ • tom_schr: autoidx.xsl
+
+ Fixed typo: fole -> role attribute for phrase
+
+ • tom_schr: inline.xsl
+
+ Added support for @function attribute in keycap (uses keycap context
+ from language files) => fixes RFE#3540451
+ If @function is set and keycap is empty, then template will use the
+ content from the keycap context, otherwise it will use just the given
+ text
+
+ • Robert Stayton: graphics.xsl; xref.xsl
+
+ Add support for title element in screenshot, now allowed in DocBook 5.
+
+ • Robert Stayton: graphics.xsl
+
+ Restore formatting of figure/caption that was broken in 1.77.1.
+
+HTML
+
+The following changes have been made to the html code since the 1.77.1 release.
+
+ • David Cramer: autotoc.xsl
+
+ Fixing bug where toc.title.p and nodes params had not been declared inside manual-toc template
+
+ • Robert Stayton: autotoc.xsl
+
+ Add 'toc.list.attributes' template to insert class and other
+ attributes on the top level list element in a table of contents.
+
+ • Robert Stayton: block.xsl
+
+ Fix bug 3590039 abstract/title not rendered.
+
+ • Jirka Kosek: chunk-common.xsl; footnote.xsl
+
+ Fixed positioning of footnote separate when CSS decoration is used.
+
+ • Robert Stayton: ebnf.xsl
+
+ Convert hard wired xsl:number for production into a template
+ with mode="label.markup" to be consistent with other element numbering.
+
+ • Robert Stayton: inline.xsl
+
+ Make comma inserted after function/parameter or function/replaceable
+ conditional on $function.parens to be consistent with the function template.
+
+ • Robert Stayton: graphics.xsl
+
+ Add support for mediaobject/alt, with precedence over
+ mediaobject/textobject/phrase.
+
+ • Robert Stayton: param.xweb
+
+ Remove src:fragref elements for deleted obsolete olink params.
+
+ • Robert Stayton: chunker.xsl
+
+ Fix bug #3563697 where template make-relative-filename was using a
+ global param chunk.base.dir instead of its local param base.dir. Now it uses base.dir.
+
+ • Robert Stayton: param.xweb; param.ent; xref.xsl
+
+ Remove all references and code for obsolete olink attributes
+ @linkmode @targetdocent and @localinfo.
+
+ • Robert Stayton: param.xweb; param.ent
+
+ Add parameter 'activate.external.olinks' to allow making
+ external olinks inactive, as for epub output.
+
+ • stefan: graphics.xsl
+
+ Add hook for customization.
+
+ • tom_schr: docbook.xsl
+
+ Splitting head.content into smaller chunks of templates.
+ See https://lists.oasis-open.org/archives/docbook-apps/201209/msg00037.html
+
+ • tom_schr: verbatim.xsl
+
+ Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing
+
+ • Robert Stayton: footnote.xsl
+
+ Fix bug in footnote link introduced in 1.77.1.
+
+ • Robert Stayton: formal.xsl; htmltbl.xsl
+
+ Resolve conflict of duplicate ids on html table with caption.
+ Wrap a div with class and id attribute around html table without caption.
+
+ • Robert Stayton: component.xsl
+
+ Remove call to 'generate.id' template in <h1> in component.title because the
+ id is already generated for the parent div element.
+
+ • Robert Stayton: chunker.xsl
+
+ Set omit-xml-declaration to 'yes' for write.text.chunk template, since a text
+ file should never have an xml declaration.
+
+ • tom_schr: inline.xsl
+
+ Added support for @function attribute in keycap (uses keycap context
+ from language files) => fixes RFE#3540451
+ If @function is set and keycap is empty, then template will use the
+ content from the keycap context, otherwise it will use just the given
+ text
+
+ • David Cramer: docbook.xsl
+
+ Also set the title param in head.content since it's sometimes
+ called without that param being passed in. Use the passed-in
+ value in user.head.title.
+
+ • Robert Stayton: docbook.xsl
+
+ Restore missing title param on 'head.content' template, and passed
+ it along to user.head.title. That param
+ is used for certain special chunkings such as Long Descriptions.
+
+ • Robert Stayton: graphics.xsl; xref.xsl
+
+ Add support for title in screenshot, available since DocBook 5.
+
+ • David Cramer: docbook.xsl
+
+ HTML: Add hook for easily customizing html/head/title
+
+Manpages
+
+The following changes have been made to the manpages code since the 1.77.1
+release.
+
+ • Robert Stayton: lists.xsl
+
+ Add a line break at start of variablelist to fix bug #3595156.
+
+ • Robert Stayton: lists.xsl
+
+ Better fix for bug #3545150 by putting the title with the step number
+ rather than before it.
+
+ • Robert Stayton: utility.xsl
+
+ Add 'content' param to template name inline.monoseq to support
+ email format, fixing bug #3524417.
+
+ • Robert Stayton: utility.xsl
+
+ Fix bug #3512473 where an inline synopsis element produced
+ an extra line break in nroff output.
+
+ • Robert Stayton: lists.xsl
+
+ Fix bug 3545150 where procedure/step/title not rendered in man pages.
+
+Roundtrip
+
+The following changes have been made to the roundtrip code since the 1.77.1
+release.
+
+ • Robert Stayton: dbk2wordml.xsl
+
+ Fix bug #3297553 error in Word metadata elements from including
+ WordML markup instead of just text.
+
+Slides
+
+The following changes have been made to the slides code since the 1.77.1
+release.
+
+ • gaborkovesdan: xhtml/plain.xsl
+
+ - Use real push-style processing in the foil/foilgroup page content, which
+ allows better customization in general (e.g. you can add PI templates)
+ and also let us render scattered speakernotes/handoutnotes if that is
+ desired
+
+ • gaborkovesdan: xhtml/Makefile
+
+ - Titlepage markup belongs to the XHTML namespace
+
+ • gaborkovesdan: xhtml/plain.xsl
+
+ - Remove now unnecessary template redefinition
+
+ • gaborkovesdan: xhtml/plain.xsl
+
+ - Generate valid links from cross-references
+
+ • gaborkovesdan: xhtml/plain.xsl
+
+ - Do not add fallbacks for EXSLT extensions, the main DocBook XSL stylesheets
+ do not do that either
+
+ • Robert Stayton: schema/relaxng/slides.rnc
+
+ Update the import path for docbook.rnc after the slides directory was moved.
+
+ • stefan: xhtml/plain.xsl
+
+ Add missing stylesheet.
+
+ • stefan: schema/xsd/Makefile; schema/Makefile; schema/relaxng/Makefile
+
+ Adjust Makefiles.
+
+ • stefan: locatingrules.xml; RELEASE-NOTES.xml; doc; images;
+ locatingrules.xml; Makefile; im⋯
+
+ Moved many files from slides/ to xsl/slides/
+
+ • stefan: fo/param.xweb; xhtml/Makefile; xhtml/param.xweb; fo/Makefile
+
+ Separate slides package.
+
+ • stefan: Makefile
+
+ A bit of cleanup...
+
+ • stefan: xhtml/Makefile; fo/Makefile
+
+ Add to 'clean' target.
+
+ • David Cramer: Makefile
+
+ Slides: Change html to xhtml passim.
+
+ • David Cramer: xhtml
+
+ Adding items to svn ignore for slides
+
+ • stefan: slidy
+
+ Import slidy from vendor branch.
+
+ • stefan: s5
+
+ Import s5 from vendor branch.
+
+ • stefan: Makefile; common/common.xsl; common; fo/param.ent; graphics; xhtml/
+ Makefile.param;⋯
+
+ Merge Slides GSoC project to trunk.
+
+Webhelp
+
+The following changes have been made to the webhelp code since the 1.77.1
+release.
+
+ • David Cramer: docsrc/readme.xml
+
+ Webhelp: More doc updates
+
+ • David Cramer: docsrc/readme.xml
+
+ Webhelp: Documentation updates.
+
+ • David Cramer: template/content; Makefile; Makefile.sample; build.xml;
+ template/search
+
+ Webhelp: Improving sample Makefile to allow for profiling params and other params, removing content dir from template and making related adjustments in Makefile and build.xml
+
+ • David Cramer: Makefile.sample
+
+ Attempting to include sample Makefile in webhelp output dir
+
+ • David Cramer: template/common/css/positioning.css
+
+ Webhelp: Do not display sidebar if js is disabled in browser since it will not be functional
+
+ • Jirka Kosek: build.xml
+
+ Xerces must be on the classpath in order to XInclude work
+
+ • David Cramer: Makefile
+
+ Adding generated files to various clean targets.
+
+ • David Cramer: build.properties
+
+ Webhelp: By default don't validate against dtd when using ant build
+
+ • David Cramer: Makefile
+
+ Webhelp: By default only exclude ix01.html from search in Makefile
+
+ • David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js;
+ template/common/jquery⋯
+
+ Webhelp: Reverting last commit
+
+ • David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js;
+ template/common/jquery⋯
+
+ Webhelp: Removing two more unused jquery files
+
+ • David Cramer: template/common/jquery/jquery-1.4.2.min.js
+
+ Webhelp: Removing old, unused jquery file
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Webhelp: Fix header logo link
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Webhelp: Fix bad link to favicon.ico
+
+ • David Cramer: template/common/jquery/jquery-1.7.2.min.js; template/common/
+ main.js; templat⋯
+
+ First part of the GSoC 2012 work by Arun and Visitha:
+
+ Visitha Baddegama
+ Remove content folder from Webhelp output
+ Build Webhelp using GNU Make/without ant
+ Support a parameterized list of files to exclude while indexing
+ Improve information message for browser with JavaScript disabled
+ Support searching for terms with punctuation like build.xml
+
+ Arun Bharadwaj
+ Make it possible to include the doc title in head/title and
+ not in the search results
+ Improve performance in IE 8/9
+ Expandable TOC pane
+ Information message for browser with JavaScript disabled
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Use user.head.title to add title to webhelp pages,
+ but do not yet add the book title to the page title.
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Webhelp: Revert 9433. We need to fix the indexer before we can include the document title in the html/head/title
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Webhelp: Append document title to html/head/title
+
+ • David Cramer: xsl/webhelp-common.xsl
+
+ Webhelp: fix missing reference to ie.css
+
+Params
+
+The following changes have been made to the params code since the 1.77.1
+release.
+
+ • Robert Stayton: page.height.portrait.xml; page.width.portrait.xml
+
+ Add USlegal and USlegallandscape.
+
+ • Robert Stayton: force.blank.pages.xml
+
+ Improve the description.
+
+ • Robert Stayton: page.margin.outer.xml; writing.mode.xml; double.sided.xml;
+ page.margin.inn⋯
+
+ Improve the description.
+
+ • Robert Stayton: force.blank.pages.xml
+
+ New param to control generating blank even-numbered pages.
+
+ • Robert Stayton: passivetex.extensions.xml
+
+ Indicate that passivetex is no longer supported.
+
+ • Robert Stayton: footnote.properties.xml
+
+ Fix bug #3555628 where a footnote inside a blockquote inherits the end-indent from the blockquote.
+
+ • stefan: foil.page-sequence.properties.xml; handoutnotes.properties.xml;
+ slidy.duration.xml⋯
+
+ Merge Slides GSoC project to trunk.
+
+ • Robert Stayton: activate.external.olinks.xml
+
+ Add parameter 'activate.external.olinks' to allow making
+ external olinks inactive, as for epub output.
+
+Profiling
+
+The following changes have been made to the profiling code since the 1.77.1
+release.
+
+ • Robert Stayton: xsl2profile.xsl
+
+ Test for @xml:id as well as @id for $rootid.
+
+Tools
+
+The following changes have been made to the tools code since the 1.77.1
+release.
+
+ • David Cramer: bin/docbook-xsl-update
+
+ s/VERSION/VERSION.xsl/ again.
+
+ • David Cramer: xsl/build/xsl-param-link.xsl; xsl/build/make-xsl-params.xsl
+
+ Slides: Change html to xhtml passim.
+
+Template
+
+The following changes have been made to the template code since the 1.77.1
+release.
+
+ • Jirka Kosek: titlepage.xsl
+
+ Autoguess of proper parameter settings
+
Release Notes: 1.77.1
The following list summarizes the major changes that have been made since the
diff --git a/RELEASE-NOTES.xml b/RELEASE-NOTES.xml
index 72b92e9..1f8ed77 100644
--- a/RELEASE-NOTES.xml
+++ b/RELEASE-NOTES.xml
@@ -57,6 +57,653 @@ public APIs (user-configurable parameters).</para>
<sect1 condition="snapshot" xml:id="current">
<xi:include href="NEWS.xml" xpointer="xpointer(/article/sect1/*)"/>
</sect1>
+
+<sect1 xml:id="V1.78.1">
+<title>Release Notes: 1.78.1</title>
+<para>The following is a list of changes that have been made
+ since the 1.78.0 release.</para>
+
+<sect2 xml:id="V1.78.1_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Make sure part and set <tag>titleabbrev</tag> are used in mode="titleabbrev.markup"</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Add empty default template for <tag>titleabbrev</tag> since it is always processed in a mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">for missing <tag>title</tag> in <tag>xref</tag>, provide parent information of target to help locate problem element.
+Process <tag>bridgehead</tag> in mode="title.markup", not normal mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: l10n.xsl</literal></para><screen><phrase role="commit-message">Fixed bug #3598963</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: gentext.xsl; labels.xsl</literal></para><screen><phrase role="commit-message">Make sure bridgeheads are not numbered in all contexts, including html <tag>title</tag> attributes.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: division.xsl</literal></para><screen><phrase role="commit-message">Fix bug where part <tag>TOC</tag> not generated when <tag>partintro</tag> is present.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: xref.xsl</literal></para><screen><phrase role="commit-message">Footnotes can't be placed into fo:float</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: titlepage.templates.xml</literal></para><screen><phrase role="commit-message">Remove margin-left when start-indent is used because they interfere
+with each other.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: fo.xsl; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Use dingbat.fontset rather than <parameter>dingbat.font.family</parameter> so it falls
+back to <tag>symbol</tag> font if glyph not found, like other font properties.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Change last instance of inline.charseq in inline <tag>glossterm</tag> to
+inline.italicseq so it is consistent with the others.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: admon.xsl</literal></para><screen><phrase role="commit-message">Turn off $admon.style if $make.clean.html is set to non-zero.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: highlight.xsl</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunk-common.xsl</literal></para><screen><phrase role="commit-message">Make active.olink.hrefs param work for chunked output too.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Make consistent handling of <tag>titleabbrev</tag> in xrefs.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Add round() <tag>function</tag> when pixel counts are used for image width and height.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: glossary.xsl</literal></para><screen><phrase role="commit-message">fix missing class and id attributes on <tag>glossterm</tag> and <tag>glossdef</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fix bug where prefer.index.titleabbrev ignored <tag>info</tag>/<tag>titleabbrev</tag>.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3599520: spurious newline in <tag>para</tag> when starts with
+whitespace and inline element.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Webhelp">
+<title>Webhelp</title>
+<para>The following changes have been made to the
+ <filename>webhelp</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: Fix order of args to xsltproc</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Turn on xinclude-test.xml in readme to demo xinclude functionality</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile; Makefile.sample</literal></para><screen><phrase role="commit-message">Webhelp: In Makefiles, do xinclude in first pass at document</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Webhelp changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: webhelp.include.search.tab.xml</literal></para><screen><phrase role="commit-message">Webhelp: Fix test for <parameter>webhelp.include.search.tab</parameter> param</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: article.appendix.title.properties.xml</literal></para><screen><phrase role="commit-message">Remove unneeded margin-left property from <tag>article</tag> <tag>appendix</tag> <tag>title</tag>.
+It interferes with the start-indent property.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.78.1-->
+
+<sect2 xml:id="V1.78.1_Highlighting">
+<title>Highlighting</title>
+<para>The following changes have been made to the
+ <filename>highlighting</filename> code
+ since the 1.78.0 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: c-hl.xml; cpp-hl.xml; sql2003-hl.xml; php-hl.xml; upc-hl.xml; bourne-hl.xml; ⋯</literal></para><screen><phrase role="commit-message">Added new definitions for syntax highlighting</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Highlighting changes for 1.78.1-->
+
+</sect1>
+<sect1 xml:id="V1.78.0">
+<title>Release Notes: 1.78.0</title>
+<para>The following is a list of changes that have been made
+ since the 1.77.1 release.</para>
+
+<sect2 xml:id="V1.78.0_Gentext">
+<title>Gentext</title>
+<para>The following changes have been made to the
+ <filename>gentext</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/nn.xml; locale/nb.xml</literal></para><screen><phrase role="commit-message">Bug #3556630: Updated nb and nn locale files.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: locale/README</literal></para><screen><phrase role="commit-message">Bug #3556628: Updated information in README.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: locale/de.xml</literal></para><screen><phrase role="commit-message">Added <tag>keycap</tag> context from RFE#3540451 to support @function attribute</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: locale/en.xml</literal></para><screen><phrase role="commit-message">Added <tag>keycap</tag> context from RFE#3540451 to support @function attribute</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: locale/en.xml</literal></para><screen><phrase role="commit-message">Add support for <tag>title</tag> element in <tag>screenshot</tag>, now allowed in DocBook 5.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Gentext changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Common">
+<title>Common</title>
+<para>The following changes have been made to the
+ <filename>common</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: titles.xsl</literal></para><screen><phrase role="commit-message">Corrected template for <tag>bridgehead</tag> in mode="title.markup" to
+process its children in normal mode.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: labels.xsl</literal></para><screen><phrase role="commit-message">Convert hard wired xsl:number for <tag>production</tag> into a template
+with mode="label.markup" to be consistent with other element numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Remove all references and code for obsolete <tag>olink</tag> attributes
+@linkmode @targetdocent and @localinfo.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: olink.xsl</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Common changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_FO">
+<title>FO</title>
+<para>The following changes have been made to the
+ <filename>fo</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: pagesetup.xsl</literal></para><screen><phrase role="commit-message">Change initial page number for <tag>book</tag> from 1 to auto so front
+<tag>cover</tag> and <tag>title</tag> pages are sequential, and so that <tag>book</tag> inside
+set will continue numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Add missing closing <tag>tag</tag> for xsl:choose in new template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; pagesetup.xsl</literal></para><screen><phrase role="commit-message">Add <parameter>force.blank.pages</parameter> parameter to allow turning off blank
+pages in <parameter>double.sided</parameter> output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl; callout.xsl</literal></para><screen><phrase role="commit-message">Implement active links between <tag>co</tag> and <tag>callout</tag> elements for
+PDF output, linking in both directions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Fix typo to replace "ro" with "<tag>row</tag>" in three places.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: ebnf.xsl</literal></para><screen><phrase role="commit-message">Convert hard wired xsl:number for <tag>production</tag> into a template
+with mode="label.markup" to be consistent with other element numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Make comma inserted after <tag>function</tag>/parameter or <tag>function</tag>/<tag>replaceable</tag>
+conditional on $function.parens to be consistent with the <tag>function</tag> template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: inline.xsl</literal></para><screen><phrase role="commit-message">Added new inline.sansseq template for consistency reasons.
+Makes it easier for customization layers: Just use
+ &lt;xsl:call-template name="inline.sansseq"/&gt;
+to change to sans serif font, but also takes into account
+XLinks and direction of text.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: xref.xsl</literal></para><screen><phrase role="commit-message">Remove all references and code for obsolete <tag>olink</tag> attributes
+@linkmode @targetdocent and @localinfo.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: table.xsl</literal></para><screen><phrase role="commit-message">Remove <parameter>passivetex.extensions</parameter> code.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: spaces.xsl; autotoc.xsl; docbook.xsl; division.xsl; table.xsl; sections.xs⋯</literal></para><screen><phrase role="commit-message">Remove all passivetex code because it is obsolete.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Mauritz Jeanson: table.xsl</literal></para><screen><phrase role="commit-message">Added support for keep-together PI on <tag>informaltable</tag>. Closes bug #3555609.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: verbatim.xsl</literal></para><screen><phrase role="commit-message">Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: autoidx.xsl</literal></para><screen><phrase role="commit-message">Fixed typo: fole -&gt; role attribute for <tag>phrase</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: inline.xsl</literal></para><screen><phrase role="commit-message">Added support for @function attribute in <tag>keycap</tag> (uses <tag>keycap</tag> context
+from language files) =&gt; fixes RFE#3540451
+If @function is set and <tag>keycap</tag> is empty, then template will use the
+content from the <tag>keycap</tag> context, otherwise it will use just the given
+text</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>title</tag> element in <tag>screenshot</tag>, now allowed in DocBook 5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Restore formatting of <tag>figure</tag>/<tag>caption</tag> that was broken in 1.77.1.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of FO changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_HTML">
+<title>HTML</title>
+<para>The following changes have been made to the
+ <filename>html</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: autotoc.xsl</literal></para><screen><phrase role="commit-message">Fixing bug where toc.title.p and nodes params had not been declared inside manual-toc template</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: autotoc.xsl</literal></para><screen><phrase role="commit-message">Add 'toc.list.attributes' template to insert class and other
+attributes on the top level list element in a <tag>table</tag> of contents.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: block.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3590039 <tag>abstract</tag>/<tag>title</tag> not rendered.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: chunk-common.xsl; footnote.xsl</literal></para><screen><phrase role="commit-message">Fixed positioning of <tag>footnote</tag> separate when CSS decoration is used.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: ebnf.xsl</literal></para><screen><phrase role="commit-message">Convert hard wired xsl:number for <tag>production</tag> into a template
+with mode="label.markup" to be consistent with other element numbering.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: inline.xsl</literal></para><screen><phrase role="commit-message">Make comma inserted after <tag>function</tag>/parameter or <tag>function</tag>/<tag>replaceable</tag>
+conditional on $function.parens to be consistent with the <tag>function</tag> template.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>mediaobject</tag>/<tag>alt</tag>, with precedence over
+<tag>mediaobject</tag>/<tag>textobject</tag>/<tag>phrase</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb</literal></para><screen><phrase role="commit-message">Remove src:fragref elements for deleted obsolete <tag>olink</tag> params.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunker.xsl</literal></para><screen><phrase role="commit-message">Fix bug #3563697 where template make-relative-filename was using a
+global param chunk.base.dir instead of its local param <parameter>base.dir</parameter>. Now it uses <parameter>base.dir</parameter>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent; xref.xsl</literal></para><screen><phrase role="commit-message">Remove all references and code for obsolete <tag>olink</tag> attributes
+@linkmode @targetdocent and @localinfo.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: param.xweb; param.ent</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: graphics.xsl</literal></para><screen><phrase role="commit-message">Add hook for customization.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: docbook.xsl</literal></para><screen><phrase role="commit-message">Splitting head.content into smaller chunks of templates.
+See https://lists.oasis-open.org/archives/docbook-apps/201209/msg00037.html</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: verbatim.xsl</literal></para><screen><phrase role="commit-message">Fixed subtle typo when calling lastLineNumber template: must be $listing instead of listing</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: footnote.xsl</literal></para><screen><phrase role="commit-message">Fix bug in <tag>footnote</tag> <tag>link</tag> introduced in 1.77.1.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: formal.xsl; htmltbl.xsl</literal></para><screen><phrase role="commit-message">Resolve conflict of duplicate ids on html <tag>table</tag> with <tag>caption</tag>.
+Wrap a div with class and id attribute around html <tag>table</tag> without <tag>caption</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: component.xsl</literal></para><screen><phrase role="commit-message">Remove call to 'generate.id' template in &lt;h1&gt; in component.title because the
+id is already generated for the parent div element.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: chunker.xsl</literal></para><screen><phrase role="commit-message">Set omit-xml-declaration to 'yes' for write.text.chunk template, since a text
+file should never have an xml declaration.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>tom_schr: inline.xsl</literal></para><screen><phrase role="commit-message">Added support for @function attribute in <tag>keycap</tag> (uses <tag>keycap</tag> context
+from language files) =&gt; fixes RFE#3540451
+If @function is set and <tag>keycap</tag> is empty, then template will use the
+content from the <tag>keycap</tag> context, otherwise it will use just the given
+text</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docbook.xsl</literal></para><screen><phrase role="commit-message">Also set the <tag>title</tag> param in head.content since it's sometimes
+called without that param being passed in. Use the passed-in
+value in user.head.title.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: docbook.xsl</literal></para><screen><phrase role="commit-message">Restore missing <tag>title</tag> param on 'head.content' template, and passed
+it along to user.head.title. That param
+is used for certain special chunkings such as Long Descriptions.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: graphics.xsl; xref.xsl</literal></para><screen><phrase role="commit-message">Add support for <tag>title</tag> in <tag>screenshot</tag>, available since DocBook 5.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docbook.xsl</literal></para><screen><phrase role="commit-message">HTML: Add hook for easily customizing html/head/<tag>title</tag></phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of HTML changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Manpages">
+<title>Manpages</title>
+<para>The following changes have been made to the
+ <filename>manpages</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Add a line break at start of <tag>variablelist</tag> to fix bug #3595156.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Better fix for bug #3545150 by putting the <tag>title</tag> with the step number
+rather than before it.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Add 'content' param to template name inline.monoseq to support
+<tag>email</tag> format, fixing bug #3524417.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: utility.xsl</literal></para><screen><phrase role="commit-message">Fix bug #3512473 where an inline <tag>synopsis</tag> element produced
+an extra line break in nroff output.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: lists.xsl</literal></para><screen><phrase role="commit-message">Fix bug 3545150 where <tag>procedure</tag>/step/<tag>title</tag> not rendered in man pages.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Manpages changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Roundtrip">
+<title>Roundtrip</title>
+<para>The following changes have been made to the
+ <filename>roundtrip</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: dbk2wordml.xsl</literal></para><screen><phrase role="commit-message">Fix bug #3297553 error in Word metadata elements from including
+WordML markup instead of just text.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Roundtrip changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Slides">
+<title>Slides</title>
+<para>The following changes have been made to the
+ <filename>slides</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Use real push-style processing in the foil/foilgroup page content, which
+ allows better customization in general (e.g. you can add PI templates)
+ and also let us render scattered speakernotes/handoutnotes if that is
+ desired</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/Makefile</literal></para><screen><phrase role="commit-message">- Titlepage markup belongs to the XHTML namespace</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Remove now unnecessary template redefinition</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Generate valid links from cross-references</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>gaborkovesdan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">- Do not add fallbacks for EXSLT extensions, the main DocBook XSL stylesheets
+ do not do that either</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: schema/relaxng/slides.rnc</literal></para><screen><phrase role="commit-message">Update the import path for docbook.rnc after the slides directory was moved.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: xhtml/plain.xsl</literal></para><screen><phrase role="commit-message">Add missing stylesheet.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: schema/xsd/Makefile; schema/Makefile; schema/relaxng/Makefile</literal></para><screen><phrase role="commit-message">Adjust Makefiles.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: locatingrules.xml; RELEASE-NOTES.xml; doc; images; locatingrules.xml; Makefile; im⋯</literal></para><screen><phrase role="commit-message">Moved many files from slides/ to xsl/slides/</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: fo/param.xweb; xhtml/Makefile; xhtml/param.xweb; fo/Makefile</literal></para><screen><phrase role="commit-message">Separate slides package.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: Makefile</literal></para><screen><phrase role="commit-message">A bit of cleanup...</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: xhtml/Makefile; fo/Makefile</literal></para><screen><phrase role="commit-message">Add to 'clean' target.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Slides: Change html to xhtml passim.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xhtml</literal></para><screen><phrase role="commit-message">Adding items to svn ignore for slides</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: slidy</literal></para><screen><phrase role="commit-message">Import slidy from vendor branch.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: s5</literal></para><screen><phrase role="commit-message">Import s5 from vendor branch.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: Makefile; common/common.xsl; common; fo/param.ent; graphics; xhtml/Makefile.param;⋯</literal></para><screen><phrase role="commit-message">Merge Slides GSoC project to trunk.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Slides changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Webhelp">
+<title>Webhelp</title>
+<para>The following changes have been made to the
+ <filename>webhelp</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: More doc updates</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: docsrc/readme.xml</literal></para><screen><phrase role="commit-message">Webhelp: Documentation updates.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/content; Makefile; Makefile.sample; build.xml; template/search</literal></para><screen><phrase role="commit-message">Webhelp: Improving sample Makefile to allow for profiling params and other params, removing content dir from template and making related adjustments in Makefile and build.xml</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile.sample</literal></para><screen><phrase role="commit-message">Attempting to include sample Makefile in webhelp output dir</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/css/positioning.css</literal></para><screen><phrase role="commit-message">Webhelp: Do not display <tag>sidebar</tag> if js is disabled in browser since it will not be functional</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Jirka Kosek: build.xml</literal></para><screen><phrase role="commit-message">Xerces must be on the classpath in order to XInclude work</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Adding generated files to various clean targets.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: build.properties</literal></para><screen><phrase role="commit-message">Webhelp: By default don't validate against dtd when using ant build</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: Makefile</literal></para><screen><phrase role="commit-message">Webhelp: By default only exclude ix01.html from search in Makefile</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js; template/common/jquery⋯</literal></para><screen><phrase role="commit-message">Webhelp: Reverting last commit</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-ui-1.8.2.custom.min.js; template/common/jquery⋯</literal></para><screen><phrase role="commit-message">Webhelp: Removing two more unused jquery files</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-1.4.2.min.js</literal></para><screen><phrase role="commit-message">Webhelp: Removing old, unused jquery file</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix header logo <tag>link</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Fix bad <tag>link</tag> to favicon.ico</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: template/common/jquery/jquery-1.7.2.min.js; template/common/main.js; templat⋯</literal></para><screen><phrase role="commit-message">First part of the GSoC 2012 work by Arun and Visitha:
+
+Visitha Baddegama
+Remove content folder from Webhelp output
+Build Webhelp using GNU Make/without ant
+Support a parameterized list of files to exclude while indexing
+Improve information message for browser with JavaScript disabled
+Support searching for terms with punctuation like build.xml
+
+Arun Bharadwaj
+Make it possible to include the doc <tag>title</tag> in head/<tag>title</tag> and
+ not in the search results
+Improve performance in IE 8/9
+Expandable <tag>TOC</tag> pane
+Information message for browser with JavaScript disabled</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Use user.head.title to add <tag>title</tag> to webhelp pages,
+but do not yet add the <tag>book</tag> <tag>title</tag> to the page <tag>title</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Revert 9433. We need to fix the indexer before we can include the document <tag>title</tag> in the html/head/<tag>title</tag></phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: Append document <tag>title</tag> to html/head/title</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/webhelp-common.xsl</literal></para><screen><phrase role="commit-message">Webhelp: fix missing <tag>reference</tag> to ie.css</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Webhelp changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Params">
+<title>Params</title>
+<para>The following changes have been made to the
+ <filename>params</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: page.height.portrait.xml; page.width.portrait.xml</literal></para><screen><phrase role="commit-message">Add USlegal and USlegallandscape.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: force.blank.pages.xml</literal></para><screen><phrase role="commit-message">Improve the description.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: page.margin.outer.xml; writing.mode.xml; double.sided.xml; page.margin.inn⋯</literal></para><screen><phrase role="commit-message">Improve the description.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: force.blank.pages.xml</literal></para><screen><phrase role="commit-message">New param to control generating blank even-numbered pages.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: passivetex.extensions.xml</literal></para><screen><phrase role="commit-message">Indicate that passivetex is no longer supported.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: footnote.properties.xml</literal></para><screen><phrase role="commit-message">Fix bug #3555628 where a <tag>footnote</tag> inside a <tag>blockquote</tag> inherits the end-indent from the <tag>blockquote</tag>.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>stefan: foil.page-sequence.properties.xml; handoutnotes.properties.xml; slidy.duration.xml⋯</literal></para><screen><phrase role="commit-message">Merge Slides GSoC project to trunk.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>Robert Stayton: activate.external.olinks.xml</literal></para><screen><phrase role="commit-message">Add parameter '<parameter>activate.external.olinks</parameter>' to allow making
+external olinks inactive, as for epub output.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Params changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Profiling">
+<title>Profiling</title>
+<para>The following changes have been made to the
+ <filename>profiling</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Robert Stayton: xsl2profile.xsl</literal></para><screen><phrase role="commit-message">Test for @xml:id as well as @id for $rootid.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Profiling changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Tools">
+<title>Tools</title>
+<para>The following changes have been made to the
+ <filename>tools</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>David Cramer: bin/docbook-xsl-update</literal></para><screen><phrase role="commit-message">s/VERSION/VERSION.xsl/ again.</phrase></screen>
+</listitem>
+<listitem>
+<para><literal>David Cramer: xsl/build/xsl-param-link.xsl; xsl/build/make-xsl-params.xsl</literal></para><screen><phrase role="commit-message">Slides: Change html to xhtml passim.</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Tools changes for 1.78.0-->
+
+<sect2 xml:id="V1.78.0_Template">
+<title>Template</title>
+<para>The following changes have been made to the
+ <filename>template</filename> code
+ since the 1.77.1 release.</para>
+<itemizedlist>
+<listitem>
+<para><literal>Jirka Kosek: titlepage.xsl</literal></para><screen><phrase role="commit-message">Autoguess of proper parameter settings</phrase></screen>
+</listitem>
+</itemizedlist>
+</sect2><!--end of Template changes for 1.78.0-->
+
+</sect1>
+
<sect1 xml:id="V1.77.0">
<title>Release Notes: 1.77.1</title>
<para>The following list summarizes the major changes that have been made
diff --git a/REVISION b/REVISION
index 1437369..14db6eb 100644
--- a/REVISION
+++ b/REVISION
@@ -1 +1 @@
-9401
+9732
diff --git a/VERSION b/VERSION
index d94ded5..0f99b74 100644
--- a/VERSION
+++ b/VERSION
@@ -14,9 +14,9 @@
<xsl:param name="sf-relid" select="0"/>
<xsl:param name="DistroName">docbook-xsl</xsl:param>
-<xsl:param name="PreviousRelease">1.77.0</xsl:param>
-<xsl:param name="PreviousReleaseRevision">9371</xsl:param>
-<xsl:param name="Revision">$Revision: 9399 $</xsl:param>
+<xsl:param name="PreviousRelease">1.78.0</xsl:param>
+<xsl:param name="PreviousReleaseRevision">9696</xsl:param>
+<xsl:param name="Revision">$Revision: 9731 $</xsl:param>
<xsl:param name="VersionFileURL">$URL: https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl/VERSION $</xsl:param>
<xsl:strip-space elements="fm:*"/>
@@ -26,7 +26,7 @@
<fm:Branch>XSL Stylesheets</fm:Branch>
<!-- * set/keep fm:version as N.NN.N-pre except for official releases, -->
<!-- * then after the release, revert it to N.NN.N-pre & check back in -->
- <fm:Version>1.77.1</fm:Version>
+ <fm:Version>1.78.1</fm:Version>
<!--
<fm:License>MIT/X Consortium License</fm:License>
-->
diff --git a/VERSION.xsl b/VERSION.xsl
index d94ded5..0f99b74 100644
--- a/VERSION.xsl
+++ b/VERSION.xsl
@@ -14,9 +14,9 @@
<xsl:param name="sf-relid" select="0"/>
<xsl:param name="DistroName">docbook-xsl</xsl:param>
-<xsl:param name="PreviousRelease">1.77.0</xsl:param>
-<xsl:param name="PreviousReleaseRevision">9371</xsl:param>
-<xsl:param name="Revision">$Revision: 9399 $</xsl:param>
+<xsl:param name="PreviousRelease">1.78.0</xsl:param>
+<xsl:param name="PreviousReleaseRevision">9696</xsl:param>
+<xsl:param name="Revision">$Revision: 9731 $</xsl:param>
<xsl:param name="VersionFileURL">$URL: https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl/VERSION $</xsl:param>
<xsl:strip-space elements="fm:*"/>
@@ -26,7 +26,7 @@
<fm:Branch>XSL Stylesheets</fm:Branch>
<!-- * set/keep fm:version as N.NN.N-pre except for official releases, -->
<!-- * then after the release, revert it to N.NN.N-pre & check back in -->
- <fm:Version>1.77.1</fm:Version>
+ <fm:Version>1.78.1</fm:Version>
<!--
<fm:License>MIT/X Consortium License</fm:License>
-->
diff --git a/assembly/assemble.xsl b/assembly/assemble.xsl
index 1abc6bf..c09af88 100644
--- a/assembly/assemble.xsl
+++ b/assembly/assemble.xsl
@@ -337,15 +337,33 @@
</xsl:choose>
<xsl:variable name="fileref.att" select="$resource/@fileref"/>
+
+ <xsl:variable name="fragment.id">
+ <xsl:if test="contains($fileref.att, '#')">
+ <xsl:value-of select="substring-after($fileref.att, '#')"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="string-length($fragment.id) != 0">
+ <xsl:value-of select="substring-before($fileref.att, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$fileref.att"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
<xsl:variable name="fileref">
<xsl:choose>
<xsl:when test="$resource/ancestor::d:resources/@xml:base">
<xsl:value-of
select="concat($resource/ancestor::d:resources[@xml:base][1]/@xml:base,
- '/', $fileref.att)"/>
+ '/', $filename)"/>
</xsl:when>
<xsl:otherwise>
- <xsl:value-of select="$fileref.att"/>
+ <xsl:value-of select="$filename"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
@@ -357,21 +375,25 @@
</xsl:when>
<xsl:otherwise>
- <xsl:variable name="ref.content" select="document($fileref,/)"/>
+ <xsl:variable name="ref.file.content" select="document($fileref,/)"/>
- <xsl:variable name="ref.root" select="$ref.content/*[1]"/>
-
- <xsl:if test="count($ref.root) = 0">
+ <!-- selects root or fragmeht depending on if $fragment is blank -->
+ <xsl:variable name="ref.content"
+ select="$ref.file.content/*[1][$fragment.id = ''] |
+ $ref.file.content/*[1][$fragment.id != '']/
+ descendant-or-self::*[@xml:id = $fragment.id]"/>
+
+ <xsl:if test="count($ref.content) = 0">
<xsl:message terminate="yes">
<xsl:text>ERROR: @fileref = '</xsl:text>
<xsl:value-of select="$fileref"/>
<xsl:text>' has no content or is unresolved.</xsl:text>
</xsl:message>
</xsl:if>
-
+
<xsl:variable name="element.name">
<xsl:apply-templates select="." mode="compute.element.name">
- <xsl:with-param name="ref.name" select="local-name($ref.content/*[1])"/>
+ <xsl:with-param name="ref.name" select="local-name($ref.content)"/>
</xsl:apply-templates>
</xsl:variable>
@@ -391,16 +413,16 @@
<xsl:when test="$contentonly.property = 'true' or
$contentonly.property = 'yes' or
$contentonly.property = '1'">
- <xsl:apply-templates select="$ref.content/*[1]/node()" mode="copycontent">
+ <xsl:apply-templates select="$ref.content/node()" mode="copycontent">
<xsl:with-param name="omittitles" select="$omittitles.property"/>
</xsl:apply-templates>
</xsl:when>
- <!-- use xsl:copy if using the ref element to get its namespaces -->
- <xsl:when test="$element.name = local-name($ref.root)">
+ <!-- use xsl:copy if using the ref element itself to get its namespaces -->
+ <xsl:when test="$element.name = local-name($ref.content)">
<!-- must use for-each to set context node for xsl:copy -->
- <xsl:for-each select="$ref.root">
+ <xsl:for-each select="$ref.content">
<xsl:copy>
- <xsl:copy-of select="@*[not(name = 'xml:id')]"/>
+ <xsl:copy-of select="@*[not(name() = 'xml:id')]"/>
<xsl:choose>
<!-- Use the module's xml:id if it has one -->
<xsl:when test="$module/@xml:id">
@@ -436,7 +458,7 @@
<xsl:otherwise>
<!-- create the element instead of copying it -->
<xsl:element name="{$element.name}" namespace="http://docbook.org/ns/docbook">
- <xsl:copy-of select="$ref.content/*[1]/@*[not(name = 'xml:id')]"/>
+ <xsl:copy-of select="$ref.content/@*[not(name() = 'xml:id')]"/>
<xsl:choose>
<!-- Use the module's xml:id if it has one -->
<xsl:when test="@xml:id">
@@ -445,9 +467,9 @@
</xsl:attribute>
</xsl:when>
<!-- otherwise use the resource's id -->
- <xsl:when test="$ref.content/*[1]/@xml:id">
+ <xsl:when test="$ref.content/@xml:id">
<xsl:attribute name="xml:id">
- <xsl:value-of select="$ref.content/*[1]/@xml:id"/>
+ <xsl:value-of select="$ref.content/@xml:id"/>
</xsl:attribute>
</xsl:when>
</xsl:choose>
@@ -459,7 +481,7 @@
</xsl:call-template>
<!-- copy through all but titles, which moved to info -->
- <xsl:apply-templates select="$ref.content/*[1]/node()
+ <xsl:apply-templates select="$ref.content/node()
[not(local-name() = 'title') and
not(local-name() = 'subtitle') and
not(local-name() = 'info') and
@@ -549,18 +571,18 @@
<!-- output info if there is any -->
<xsl:if test="$merge.element/node() or
$merge.ref.info/node() or
- $ref.content/*/d:info/node() or
- $ref.content/*/d:title[$omittitles.boolean = 0] or
- $ref.content/*/d:subtitle[$omittitles.boolean = 0] or
- $ref.content/*/d:titleabbrev[$omittitles.boolean = 0]">
-
- <xsl:variable name="ref.info" select="$ref.content/*/d:info"/>
- <xsl:variable name="ref.title" select="$ref.content/*/d:title"/>
- <xsl:variable name="ref.subtitle" select="$ref.content/*/d:subtitle"/>
- <xsl:variable name="ref.titleabbrev" select="$ref.content/*/d:titleabbrev"/>
- <xsl:variable name="ref.info.title" select="$ref.content/*/d:info/d:title"/>
- <xsl:variable name="ref.info.subtitle" select="$ref.content/*/d:info/d:subtitle"/>
- <xsl:variable name="ref.info.titleabbrev" select="$ref.content/*/d:info/d:titleabbrev"/>
+ $ref.content/d:info/node() or
+ $ref.content/d:title[$omittitles.boolean = 0] or
+ $ref.content/d:subtitle[$omittitles.boolean = 0] or
+ $ref.content/d:titleabbrev[$omittitles.boolean = 0]">
+
+ <xsl:variable name="ref.info" select="$ref.content/d:info"/>
+ <xsl:variable name="ref.title" select="$ref.content/d:title"/>
+ <xsl:variable name="ref.subtitle" select="$ref.content/d:subtitle"/>
+ <xsl:variable name="ref.titleabbrev" select="$ref.content/d:titleabbrev"/>
+ <xsl:variable name="ref.info.title" select="$ref.content/d:info/d:title"/>
+ <xsl:variable name="ref.info.subtitle" select="$ref.content/d:info/d:subtitle"/>
+ <xsl:variable name="ref.info.titleabbrev" select="$ref.content/d:info/d:titleabbrev"/>
<info>
<!-- First copy through any merge attributes and elements and comments -->
diff --git a/catalog.xml b/catalog.xml
index 9926419..619f79e 100644
--- a/catalog.xml
+++ b/catalog.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
- <!-- XML Catalog file for DocBook XSL Stylesheets vsnapshot_ -->
+ <!-- XML Catalog file for DocBook XSL Stylesheets vsnapshot_9628 -->
<rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="./"/>
<rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="./"/>
- <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/snapshot_/" rewritePrefix="./"/>
- <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/snapshot_/" rewritePrefix="./"/>
+ <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/snapshot_9628/" rewritePrefix="./"/>
+ <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/snapshot_9628/" rewritePrefix="./"/>
</catalog>
diff --git a/common/af.xml b/common/af.xml
index 805f913..1b293e7 100644
--- a/common/af.xml
+++ b/common/af.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Vraag: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/am.xml b/common/am.xml
index fdf133b..87375b7 100644
--- a/common/am.xml
+++ b/common/am.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ጥá¦Â %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ar.xml b/common/ar.xml
index 7a7bfcb..7feb734 100644
--- a/common/ar.xml
+++ b/common/ar.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="â€"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="س: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/as.xml b/common/as.xml
index 8fadaab..d6c0a81 100644
--- a/common/as.xml
+++ b/common/as.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="পà§à§°: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ast.xml b/common/ast.xml
index e192ed6..04366c5 100644
--- a/common/ast.xml
+++ b/common/ast.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="E: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/az.xml b/common/az.xml
index 30e43de..c28dcb5 100644
--- a/common/az.xml
+++ b/common/az.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Sual: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/bg.xml b/common/bg.xml
index 315479e..3c489a3 100644
--- a/common/bg.xml
+++ b/common/bg.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="В. %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/bn.xml b/common/bn.xml
index 79fcb4d..52b86d6 100644
--- a/common/bn.xml
+++ b/common/bn.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="পà§à¦°à¦¶à§à¦¨: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/bn_in.xml b/common/bn_in.xml
index ab41959..b5e5a74 100644
--- a/common/bn_in.xml
+++ b/common/bn_in.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="পà§à¦°à¦¶à§à¦¨: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/bs.xml b/common/bs.xml
index 3fb1165..9e8f761 100644
--- a/common/bs.xml
+++ b/common/bs.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="P: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ca.xml b/common/ca.xml
index c385ad4..6aeff12 100644
--- a/common/ca.xml
+++ b/common/ca.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Pregunta %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/cs.xml b/common/cs.xml
index c3a13c7..1a3e022 100644
--- a/common/cs.xml
+++ b/common/cs.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="%n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/cy.xml b/common/cy.xml
index a989ec0..0bfc096 100644
--- a/common/cy.xml
+++ b/common/cy.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="C: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/da.xml b/common/da.xml
index c2ba66a..ba3dcad 100644
--- a/common/da.xml
+++ b/common/da.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Spørgsmål: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/de.xml b/common/de.xml
index b418723..ca8b560 100644
--- a/common/de.xml
+++ b/common/de.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="keycap"><l:template name="alt" text="Alt"/>
+<l:template name="backspace" text="&lt;—"/>
+<l:template name="command" text="⌘"/>
+<l:template name="control" text="Strg"/>
+<l:template name="delete" text="Entf"/>
+<l:template name="down" text="↓"/>
+<l:template name="end" text="Ende"/>
+<l:template name="enter" text="Eingabetaste"/>
+<l:template name="escape" text="Esc"/>
+<l:template name="home" text="Pos1"/>
+<l:template name="insert" text="Einfg"/>
+<l:template name="left" text="â†"/>
+<l:template name="meta" text="Meta"/>
+<l:template name="option" text="???"/>
+<l:template name="pagedown" text="Bild ↓"/>
+<l:template name="pageup" text="Bild ↑"/>
+<l:template name="right" text="→"/>
+<l:template name="shift" text="Shift"/>
+<l:template name="space" text="Space"/>
+<l:template name="tab" text="→|"/>
+<l:template name="up" text="↑"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Suchen"/>
<l:template name="Enter_a_term_and_click" text="Geben Sie einen Begriff ein und wählen Sie "/>
<l:template name="Go" text="Go"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="F: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/el.xml b/common/el.xml
index 4aaeb67..205d234 100644
--- a/common/el.xml
+++ b/common/el.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Ε: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/en.xml b/common/en.xml
index 5c64809..885410f 100644
--- a/common/en.xml
+++ b/common/en.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt"/>
+<l:template name="backspace" text="&lt;—"/>
+<l:template name="command" text="⌘"/>
+<l:template name="control" text="Ctrl"/>
+<l:template name="delete" text="Del"/>
+<l:template name="down" text="↓"/>
+<l:template name="end" text="End"/>
+<l:template name="enter" text="Enter"/>
+<l:template name="escape" text="Esc"/>
+<l:template name="home" text="Home"/>
+<l:template name="insert" text="Ins"/>
+<l:template name="left" text="â†"/>
+<l:template name="meta" text="Meta"/>
+<l:template name="option" text="???"/>
+<l:template name="pagedown" text="Page ↓"/>
+<l:template name="pageup" text="Page ↑"/>
+<l:template name="right" text="→"/>
+<l:template name="shift" text="Shift"/>
+<l:template name="space" text="Space"/>
+<l:template name="tab" text="→|"/>
+<l:template name="up" text="↑"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click "/>
<l:template name="Go" text="Go"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/eo.xml b/common/eo.xml
index 25a93a9..f44994e 100644
--- a/common/eo.xml
+++ b/common/eo.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Demando %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/es.xml b/common/es.xml
index aaa09f1..e9472a6 100644
--- a/common/es.xml
+++ b/common/es.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="P: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/et.xml b/common/et.xml
index e4fd12f..2217c09 100644
--- a/common/et.xml
+++ b/common/et.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="K: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/eu.xml b/common/eu.xml
index 81f8374..f66505a 100644
--- a/common/eu.xml
+++ b/common/eu.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Galdera %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/fa.xml b/common/fa.xml
index bc4d417..a7a65fd 100644
--- a/common/fa.xml
+++ b/common/fa.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="&#10; :پرسش %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/fi.xml b/common/fi.xml
index 6183ad7..d8962bd 100644
--- a/common/fi.xml
+++ b/common/fi.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="K: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/fr.xml b/common/fr.xml
index cb15c17..abf00ac 100644
--- a/common/fr.xml
+++ b/common/fr.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Rechercher"/>
<l:template name="Enter_a_term_and_click" text="Saisissez un terme et cliquer "/>
<l:template name="Go" text="Go"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q : %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ga.xml b/common/ga.xml
index 8c65e90..e51fbc9 100644
--- a/common/ga.xml
+++ b/common/ga.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="C: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/gentext.xsl b/common/gentext.xsl
index 90831ea..2cef1f7 100644
--- a/common/gentext.xsl
+++ b/common/gentext.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: gentext.xsl 9286 2012-04-19 10:10:58Z bobstayton $
+ $Id: gentext.xsl 9713 2013-01-22 22:08:30Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -196,7 +196,8 @@
</xsl:template>
<xsl:template match="bridgehead" mode="is.autonumber">
- <xsl:value-of select="$section.autolabel"/>
+ <!-- bridgeheads are not numbered -->
+ <xsl:text>0</xsl:text>
</xsl:template>
<xsl:template match="procedure" mode="is.autonumber">
@@ -476,6 +477,12 @@
<xsl:when test="$title != ''">
<xsl:copy-of select="$title"/>
</xsl:when>
+ <xsl:when test="$purpose = 'xref'">
+ <xsl:apply-templates select="." mode="titleabbrev.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:apply-templates>
+ </xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="title.markup">
<xsl:with-param name="allow-anchors" select="$allow-anchors"/>
diff --git a/common/gl.xml b/common/gl.xml
index 8c06a93..9ab31e9 100644
--- a/common/gl.xml
+++ b/common/gl.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="P: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/gu.xml b/common/gu.xml
index 4ff30f1..a4991b6 100644
--- a/common/gu.xml
+++ b/common/gu.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="જ: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/he.xml b/common/he.xml
index 8605a68..d69084f 100644
--- a/common/he.xml
+++ b/common/he.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ש: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/hi.xml b/common/hi.xml
index 9d96253..5df6e95 100644
--- a/common/hi.xml
+++ b/common/hi.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="पà¥à¤°: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/hr.xml b/common/hr.xml
index 1f92a4e..faf885a 100644
--- a/common/hr.xml
+++ b/common/hr.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Pitanje: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/hu.xml b/common/hu.xml
index 559a49a..5155476 100644
--- a/common/hu.xml
+++ b/common/hu.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="K: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/id.xml b/common/id.xml
index b213d2d..0ce198d 100644
--- a/common/id.xml
+++ b/common/id.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Tanya: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/is.xml b/common/is.xml
index acf980d..8e7607a 100644
--- a/common/is.xml
+++ b/common/is.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Spurning %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/it.xml b/common/it.xml
index 18e9542..7909954 100644
--- a/common/it.xml
+++ b/common/it.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Domanda: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ja.xml b/common/ja.xml
index 074a660..a2129e0 100644
--- a/common/ja.xml
+++ b/common/ja.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="検索"/>
<l:template name="Enter_a_term_and_click" text="用語をクリックã—ã¦å…¥åŠ›ã—ã¦ãã ã•ã„。"/>
<l:template name="Go" text="移動"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="å•ï¼šÂ %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ka.xml b/common/ka.xml
index 7785019..1ce0ce7 100644
--- a/common/ka.xml
+++ b/common/ka.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="კ: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/kn.xml b/common/kn.xml
index c20c3ca..1dee5e3 100644
--- a/common/kn.xml
+++ b/common/kn.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ಪà³à²°à²¶à³à²¨à³†: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ko.xml b/common/ko.xml
index 3600350..0b7508d 100644
--- a/common/ko.xml
+++ b/common/ko.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="질문 %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ky.xml b/common/ky.xml
index 0783e60..d23fd99 100644
--- a/common/ky.xml
+++ b/common/ky.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Суроо: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/l10n.xsl b/common/l10n.xsl
index f35a0b6..50d0ab2 100644
--- a/common/l10n.xsl
+++ b/common/l10n.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: l10n.xsl 8904 2010-09-11 01:56:22Z kosek $
+ $Id: l10n.xsl 9708 2013-01-22 13:41:24Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -508,50 +508,54 @@
|$local.context.node/l:template[@name=$name
and not(@style)])[1]"/>
- <xsl:for-each select="$context.node">
- <xsl:variable name="template.node"
- select="(key('l10n-template-style', concat($context, '#', $name, '#', $xrefstyle))
- |key('l10n-template', concat($context, '#', $name)))[1]"/>
+ <xsl:choose>
+ <xsl:when test="$local.template.node/@text">
+ <xsl:value-of select="$local.template.node/@text"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$context.node">
+ <xsl:variable name="template.node"
+ select="(key('l10n-template-style', concat($context, '#', $name, '#', $xrefstyle))
+ |key('l10n-template', concat($context, '#', $name)))[1]"/>
- <xsl:choose>
- <xsl:when test="$local.template.node/@text">
- <xsl:value-of select="$local.template.node/@text"/>
- </xsl:when>
- <xsl:when test="$template.node/@text">
- <xsl:value-of select="$template.node/@text"/>
- </xsl:when>
- <xsl:otherwise>
<xsl:choose>
- <xsl:when test="contains($name, '/')">
- <xsl:call-template name="gentext.template">
- <xsl:with-param name="context" select="$context"/>
- <xsl:with-param name="name" select="substring-after($name, '/')"/>
- <xsl:with-param name="origname" select="$origname"/>
- <xsl:with-param name="purpose" select="$purpose"/>
- <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
- <xsl:with-param name="referrer" select="$referrer"/>
- <xsl:with-param name="lang" select="$lang"/>
- <xsl:with-param name="verbose" select="$verbose"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$verbose = 0">
- <!-- silence -->
+ <xsl:when test="$template.node/@text">
+ <xsl:value-of select="$template.node/@text"/>
</xsl:when>
<xsl:otherwise>
- <xsl:message>
- <xsl:text>No template for "</xsl:text>
- <xsl:value-of select="$origname"/>
- <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
- <xsl:value-of select="$context"/>
- <xsl:text>" in the "</xsl:text>
- <xsl:value-of select="$lang"/>
- <xsl:text>" localization.</xsl:text>
- </xsl:message>
+ <xsl:choose>
+ <xsl:when test="contains($name, '/')">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="name" select="substring-after($name, '/')"/>
+ <xsl:with-param name="origname" select="$origname"/>
+ <xsl:with-param name="purpose" select="$purpose"/>
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+ <xsl:with-param name="referrer" select="$referrer"/>
+ <xsl:with-param name="lang" select="$lang"/>
+ <xsl:with-param name="verbose" select="$verbose"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$verbose = 0">
+ <!-- silence -->
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>No template for "</xsl:text>
+ <xsl:value-of select="$origname"/>
+ <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
+ <xsl:value-of select="$context"/>
+ <xsl:text>" in the "</xsl:text>
+ <xsl:value-of select="$lang"/>
+ <xsl:text>" localization.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:otherwise>
</xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:otherwise>
diff --git a/common/la.xml b/common/la.xml
index f6554b5..6085208 100644
--- a/common/la.xml
+++ b/common/la.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="â€"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q:%n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/labels.xsl b/common/labels.xsl
index 78f6026..eb01dff 100644
--- a/common/labels.xsl
+++ b/common/labels.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: labels.xsl 9286 2012-04-19 10:10:58Z bobstayton $
+ $Id: labels.xsl 9706 2013-01-16 18:56:16Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -378,24 +378,7 @@ element label.</para>
</xsl:template>
<xsl:template match="bridgehead" mode="label.markup">
- <!-- FIXME: could we do a better job here? -->
- <xsl:variable name="contsec"
- select="(ancestor::section
- |ancestor::simplesect
- |ancestor::topic
- |ancestor::sect1
- |ancestor::sect2
- |ancestor::sect3
- |ancestor::sect4
- |ancestor::sect5
- |ancestor::refsect1
- |ancestor::refsect2
- |ancestor::refsect3
- |ancestor::chapter
- |ancestor::appendix
- |ancestor::preface)[last()]"/>
-
- <xsl:apply-templates select="$contsec" mode="label.markup"/>
+ <!-- bridgeheads are not normally numbered -->
</xsl:template>
<xsl:template match="refsect1" mode="label.markup">
@@ -791,6 +774,10 @@ element label.</para>
<xsl:number value="$item-number" format="{$type}"/>
</xsl:template>
+<xsl:template match="production" mode="label.markup">
+ <xsl:number count="production" level="any"/>
+</xsl:template>
+
<xsl:template match="abstract" mode="label.markup">
<!-- nop -->
</xsl:template>
@@ -817,6 +804,8 @@ element label.</para>
</xsl:variable>
<xsl:choose>
+ <!-- bridgeheads are not numbered -->
+ <xsl:when test="$section/self::bridgehead">0</xsl:when>
<xsl:when test="$level &lt;= $section.autolabel.max.depth">
<xsl:value-of select="$section.autolabel"/>
</xsl:when>
diff --git a/common/lt.xml b/common/lt.xml
index b90bc61..8c18c76 100644
--- a/common/lt.xml
+++ b/common/lt.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Klaus.: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/lv.xml b/common/lv.xml
index 2639fe2..d4edbbd 100644
--- a/common/lv.xml
+++ b/common/lv.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="J: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ml.xml b/common/ml.xml
index 2947f88..486c54b 100644
--- a/common/ml.xml
+++ b/common/ml.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ചോ: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/mn.xml b/common/mn.xml
index 18eb484..c01267c 100644
--- a/common/mn.xml
+++ b/common/mn.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="3"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Ð: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/mr.xml b/common/mr.xml
index a86fbe3..99358ac 100644
--- a/common/mr.xml
+++ b/common/mr.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/nb.xml b/common/nb.xml
index bbd8aee..06140de 100644
--- a/common/nb.xml
+++ b/common/nb.xml
@@ -71,8 +71,8 @@
<l:gentext key="IMPORTANT" text="VIKTIG"/>
<l:gentext key="important" text="viktig"/>
<l:gentext key="Important" text="Viktig"/>
-<l:gentext key="Index" text="Indeks"/>
-<l:gentext key="index" text="Indeks"/>
+<l:gentext key="Index" text="Register"/>
+<l:gentext key="index" text="register"/>
<l:gentext key="ISBN" text="ISBN"/>
<l:gentext key="isbn" text="ISBN"/>
<l:gentext key="LegalNotice" text="Rettslig merknad"/>
@@ -206,16 +206,38 @@
<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"/>
<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
-<l:dingbat key="startquote" text="“"/>
-<l:dingbat key="endquote" text="â€"/>
-<l:dingbat key="nestedstartquote" text="‘"/>
-<l:dingbat key="nestedendquote" text="’"/>
-<l:dingbat key="singlestartquote" text="‘" lang="en"/>
-<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="“"/>
+<l:dingbat key="nestedendquote" text="â€"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
<l:dingbat key="bullet" text="•"/>
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Spørsmål %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -452,18 +476,18 @@
<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
<l:template name="Page" text="Page %p" lang="en"/>
<l:template name="topic" text="%t" lang="en"/>
-<l:template name="bridgehead" text="“%tâ€"/>
-<l:template name="refsection" text="“%tâ€"/>
-<l:template name="refsect1" text="“%tâ€"/>
-<l:template name="refsect2" text="“%tâ€"/>
-<l:template name="refsect3" text="“%tâ€"/>
-<l:template name="sect1" text="“%tâ€"/>
-<l:template name="sect2" text="“%tâ€"/>
-<l:template name="sect3" text="“%tâ€"/>
-<l:template name="sect4" text="“%tâ€"/>
-<l:template name="sect5" text="“%tâ€"/>
-<l:template name="section" text="“%tâ€"/>
-<l:template name="simplesect" text="“%tâ€"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
</l:context>
<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
<l:template name="appendix" text="Tillegg %n"/>
@@ -487,27 +511,27 @@
<l:template name="table" text="Tabell %n"/>
</l:context>
<l:context name="xref-number-and-title"><l:template name="appendix" text="Tillegg %n, %t"/>
-<l:template name="bridgehead" text="Seksjon %n, “%tâ€"/>
+<l:template name="bridgehead" text="Seksjon %n, «%t»"/>
<l:template name="chapter" text="Kapittel %n, %t"/>
-<l:template name="equation" text="Formel %n, “%tâ€"/>
-<l:template name="example" text="Eksempel %n, “%tâ€"/>
-<l:template name="figure" text="Figur %n, “%tâ€"/>
-<l:template name="part" text="Del %n, “%tâ€"/>
-<l:template name="procedure" text="Prosedyre %n, “%tâ€"/>
-<l:template name="productionset" text="Produksjon %n, “%tâ€"/>
-<l:template name="qandadiv" text="SpørsmÃ¥l og svar %n, “%tâ€"/>
-<l:template name="refsect1" text="Seksjonen kalt “%tâ€"/>
-<l:template name="refsect2" text="Seksjonen kalt “%tâ€"/>
-<l:template name="refsect3" text="Seksjonen kalt “%tâ€"/>
-<l:template name="refsection" text="Seksjonen kalt “%tâ€"/>
-<l:template name="sect1" text="Seksjon %n, “%tâ€"/>
-<l:template name="sect2" text="Seksjon %n, “%tâ€"/>
-<l:template name="sect3" text="Seksjon %n, “%tâ€"/>
-<l:template name="sect4" text="Seksjon %n, “%tâ€"/>
-<l:template name="sect5" text="Seksjon %n, “%tâ€"/>
-<l:template name="section" text="Seksjon %n, “%tâ€"/>
-<l:template name="simplesect" text="Seksjonen kalt “%tâ€"/>
-<l:template name="table" text="Tabell %n, “%tâ€"/>
+<l:template name="equation" text="Formel %n, «%t»"/>
+<l:template name="example" text="Eksempel %n, «%t»"/>
+<l:template name="figure" text="Figur %n, «%t»"/>
+<l:template name="part" text="Del %n, «%t»"/>
+<l:template name="procedure" text="Prosedyre %n, «%t»"/>
+<l:template name="productionset" text="Produksjon %n, «%t»"/>
+<l:template name="qandadiv" text="Spørsmål og svar %n, «%t»"/>
+<l:template name="refsect1" text="Seksjonen kalt «%t»"/>
+<l:template name="refsect2" text="Seksjonen kalt «%t»"/>
+<l:template name="refsect3" text="Seksjonen kalt «%t»"/>
+<l:template name="refsection" text="Seksjonen kalt «%t»"/>
+<l:template name="sect1" text="Seksjon %n, «%t»"/>
+<l:template name="sect2" text="Seksjon %n, «%t»"/>
+<l:template name="sect3" text="Seksjon %n, «%t»"/>
+<l:template name="sect4" text="Seksjon %n, «%t»"/>
+<l:template name="sect5" text="Seksjon %n, «%t»"/>
+<l:template name="section" text="Seksjon %n, «%t»"/>
+<l:template name="simplesect" text="Seksjonen kalt «%t»"/>
+<l:template name="table" text="Tabell %n, «%t»"/>
</l:context>
<l:context name="authorgroup"><l:template name="sep" text=", "/>
<l:template name="sep2" text=" og "/>
diff --git a/common/nds.xml b/common/nds.xml
index 2685d0a..7df7983 100644
--- a/common/nds.xml
+++ b/common/nds.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="F: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/nl.xml b/common/nl.xml
index 86101b8..a50ae11 100644
--- a/common/nl.xml
+++ b/common/nl.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Vraag: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/nn.xml b/common/nn.xml
index 5106d96..a6612d4 100644
--- a/common/nn.xml
+++ b/common/nn.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nn" english-language-name="Nynorsk">
+<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="nn" english-language-name="Norwegian Nynorsk">
<!-- * This file is generated automatically. -->
<!-- * To submit changes to this file upstream (to the DocBook Project) -->
@@ -71,8 +71,8 @@
<l:gentext key="IMPORTANT" text="VIKTIG"/>
<l:gentext key="important" text="viktig"/>
<l:gentext key="Important" text="Viktig"/>
-<l:gentext key="Index" text="Indeks"/>
-<l:gentext key="index" text="indeks"/>
+<l:gentext key="Index" text="Register"/>
+<l:gentext key="index" text="register"/>
<l:gentext key="ISBN" text="ISBN"/>
<l:gentext key="isbn" text="ISBN"/>
<l:gentext key="LegalNotice" text=""/>
@@ -206,16 +206,38 @@
<l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
<l:gentext key="normalize.sort.input" text="AaÀàÃáÂâÃãÄäÅåĀÄĂ㥹ÇǎǞǟǠǡǺǻȀÈȂȃȦȧḀá¸áºšáº áº¡áº¢áº£áº¤áº¥áº¦áº§áº¨áº©áºªáº«áº¬áº­áº®áº¯áº°áº±áº²áº³áº´áºµáº¶áº·BbÆ€ÆɓƂƃḂḃḄḅḆḇCcÇçĆćĈĉĊċČÄƇƈɕḈḉDdÄŽÄÄđƊɗƋƌDžDzȡɖḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓEeÈèÉéÊêËëĒēĔĕĖėĘęĚěȄȅȆȇȨȩḔḕḖḗḘḙḚḛḜá¸áº¸áº¹áººáº»áº¼áº½áº¾áº¿á»€á»á»‚ểỄễỆệFfƑƒḞḟGgÄœÄĞğĠġĢģƓɠǤǥǦǧǴǵḠḡHhĤĥĦħȞȟɦḢḣḤḥḦḧḨḩḪḫẖIiÌìÃíÎîÃïĨĩĪīĬĭĮįİƗɨÇÇȈȉȊȋḬḭḮḯỈỉỊịJjĴĵǰÊKkĶķƘƙǨǩḰḱḲḳḴḵLlĹĺĻļĽľĿŀÅłƚLjȴɫɬɭḶḷḸḹḺḻḼḽMmɱḾḿṀá¹á¹‚ṃNnÑñŃńŅņŇňÆɲƞȠNjǸǹȵɳṄṅṆṇṈṉṊṋOoÒòÓóÔôÕõÖöØøŌÅÅŽÅÅőƟƠơǑǒǪǫǬǭǾǿȌÈÈŽÈȪȫȬȭȮȯȰȱṌá¹á¹Žá¹á¹á¹‘ṒṓỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£PpƤƥṔṕṖṗQqÊ RrŔŕŖŗŘřÈȑȒȓɼɽɾṘṙṚṛṜá¹á¹žá¹ŸSsŚśŜÅŞşŠšȘșʂṠṡṢṣṤṥṦṧṨṩTtŢţŤťŦŧƫƬƭƮʈȚțȶṪṫṬṭṮṯṰṱẗUuÙùÚúÛûÜüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜȔȕȖȗṲṳṴṵṶṷṸṹṺṻỤụỦủỨứỪừỬửỮữỰựVvƲʋṼṽṾṿWwŴŵẀáºáº‚ẃẄẅẆẇẈẉẘXxẊẋẌáºYyÃýÿŸŶŷƳƴȲȳẎáºáº™á»²á»³á»´á»µá»¶á»·á»¸á»¹ZzŹźŻżŽžƵƶȤȥÊÊ‘áºáº‘ẒẓẔẕẕ" lang="en"/>
<l:gentext key="normalize.sort.output" text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ" lang="en"/>
-<l:dingbat key="startquote" text="“"/>
-<l:dingbat key="endquote" text="â€"/>
-<l:dingbat key="nestedstartquote" text="‘"/>
-<l:dingbat key="nestedendquote" text="’"/>
-<l:dingbat key="singlestartquote" text="‘" lang="en"/>
-<l:dingbat key="singleendquote" text="’" lang="en"/>
+<l:dingbat key="startquote" text="«"/>
+<l:dingbat key="endquote" text="»"/>
+<l:dingbat key="nestedstartquote" text="“"/>
+<l:dingbat key="nestedendquote" text="â€"/>
+<l:dingbat key="singlestartquote" text="‘"/>
+<l:dingbat key="singleendquote" text="’"/>
<l:dingbat key="bullet" text="•"/>
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Spørsmål %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -452,18 +476,18 @@
<l:template name="pageabbrev" text="(p. %p)" lang="en"/>
<l:template name="Page" text="Page %p" lang="en"/>
<l:template name="topic" text="%t" lang="en"/>
-<l:template name="bridgehead" text="“%tâ€"/>
-<l:template name="refsection" text="“%tâ€"/>
-<l:template name="refsect1" text="“%tâ€"/>
-<l:template name="refsect2" text="“%tâ€"/>
-<l:template name="refsect3" text="“%tâ€"/>
-<l:template name="sect1" text="“%tâ€"/>
-<l:template name="sect2" text="“%tâ€"/>
-<l:template name="sect3" text="“%tâ€"/>
-<l:template name="sect4" text="“%tâ€"/>
-<l:template name="sect5" text="“%tâ€"/>
-<l:template name="section" text="“%tâ€"/>
-<l:template name="simplesect" text="“%tâ€"/>
+<l:template name="bridgehead" text="«%t»"/>
+<l:template name="refsection" text="«%t»"/>
+<l:template name="refsect1" text="«%t»"/>
+<l:template name="refsect2" text="«%t»"/>
+<l:template name="refsect3" text="«%t»"/>
+<l:template name="sect1" text="«%t»"/>
+<l:template name="sect2" text="«%t»"/>
+<l:template name="sect3" text="«%t»"/>
+<l:template name="sect4" text="«%t»"/>
+<l:template name="sect5" text="«%t»"/>
+<l:template name="section" text="«%t»"/>
+<l:template name="simplesect" text="«%t»"/>
</l:context>
<l:context name="xref-number"><l:template name="answer" text="Svar %n"/>
<l:template name="appendix" text="Tillegg %n"/>
@@ -487,27 +511,27 @@
<l:template name="table" text="Tabell %n"/>
</l:context>
<l:context name="xref-number-and-title"><l:template name="appendix" text="Tillegg %n, %t"/>
-<l:template name="bridgehead" text="Del %n, “%tâ€"/>
+<l:template name="bridgehead" text="Del %n, «%t»"/>
<l:template name="chapter" text="Kapittel %n, %t"/>
-<l:template name="equation" text="Formel %n, “%tâ€"/>
-<l:template name="example" text="Døme %n, “%tâ€"/>
-<l:template name="figure" text="Figur %n, “%tâ€"/>
-<l:template name="part" text="Del %n, “%tâ€"/>
-<l:template name="procedure" text="Prosedyre %n, “%tâ€"/>
-<l:template name="productionset" text="Production %n, “%tâ€"/>
-<l:template name="qandadiv" text="SpørsmÃ¥l og Svar %n, “%tâ€"/>
-<l:template name="refsect1" text="the section called “%tâ€"/>
-<l:template name="refsect2" text="the section called “%tâ€"/>
-<l:template name="refsect3" text="the section called “%tâ€"/>
-<l:template name="refsection" text="the section called “%tâ€"/>
-<l:template name="sect1" text="Del %n, “%tâ€"/>
-<l:template name="sect2" text="Del %n, “%tâ€"/>
-<l:template name="sect3" text="Del %n, “%tâ€"/>
-<l:template name="sect4" text="Del %n, “%tâ€"/>
-<l:template name="sect5" text="Del %n, “%tâ€"/>
-<l:template name="section" text="Del %n, “%tâ€"/>
-<l:template name="simplesect" text="the section called “%tâ€"/>
-<l:template name="table" text="Tabell %n, “%tâ€"/>
+<l:template name="equation" text="Formel %n, «%t»"/>
+<l:template name="example" text="Døme %n, «%t»"/>
+<l:template name="figure" text="Figur %n, «%t»"/>
+<l:template name="part" text="Del %n, «%t»"/>
+<l:template name="procedure" text="Prosedyre %n, «%t»"/>
+<l:template name="productionset" text="Production %n, «%t»"/>
+<l:template name="qandadiv" text="Spørsmål og Svar %n, «%t»"/>
+<l:template name="refsect1" text="the section called «%t»"/>
+<l:template name="refsect2" text="the section called «%t»"/>
+<l:template name="refsect3" text="the section called «%t»"/>
+<l:template name="refsection" text="the section called «%t»"/>
+<l:template name="sect1" text="Del %n, «%t»"/>
+<l:template name="sect2" text="Del %n, «%t»"/>
+<l:template name="sect3" text="Del %n, «%t»"/>
+<l:template name="sect4" text="Del %n, «%t»"/>
+<l:template name="sect5" text="Del %n, «%t»"/>
+<l:template name="section" text="Del %n, «%t»"/>
+<l:template name="simplesect" text="the section called «%t»"/>
+<l:template name="table" text="Tabell %n, «%t»"/>
</l:context>
<l:context name="authorgroup"><l:template name="sep" text=", "/>
<l:template name="sep2" text=" og "/>
diff --git a/common/olink.xsl b/common/olink.xsl
index 8b57fe5..278a402 100644
--- a/common/olink.xsl
+++ b/common/olink.xsl
@@ -3,7 +3,7 @@
version="1.0">
<!-- ********************************************************************
- $Id: olink.xsl 9254 2012-03-29 05:48:10Z bobstayton $
+ $Id: olink.xsl 9650 2012-10-26 18:24:02Z bobstayton $
********************************************************************
This file is part of the DocBook XSL Stylesheet distribution.
@@ -548,19 +548,36 @@
</xsl:choose>
</xsl:variable>
+ <!-- Is this olink to be active? -->
+ <xsl:variable name="active.olink">
+ <xsl:choose>
+ <xsl:when test="$activate.external.olinks = 0">
+ <xsl:choose>
+ <xsl:when test="$current.docid = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = $current.docid">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
<!-- Form the href information -->
- <xsl:if test="$baseuri != ''">
- <xsl:value-of select="$baseuri"/>
- <xsl:if test="substring($target.href,1,1) != '#'">
- <!--xsl:text>/</xsl:text-->
+ <xsl:if test="$active.olink != 0">
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
</xsl:if>
- </xsl:if>
- <!-- optionally turn off frag for PDF references -->
- <xsl:if test="not($insert.olink.pdf.frag = 0 and
- translate(substring($baseuri, string-length($baseuri) - 3),
- 'PDF', 'pdf') = '.pdf'
- and starts-with($target.href, '#') )">
- <xsl:value-of select="$target.href"/>
</xsl:if>
</xsl:if>
</xsl:template>
@@ -991,7 +1008,7 @@
</xsl:otherwise>
</xsl:choose>
</xsl:when>
- <xsl:when test="@targetdoc != '' or @targetptr != ''">
+ <xsl:otherwise>
<xsl:if test="$olink.key != ''">
<xsl:message>
<xsl:text>Olink error: no generated text for </xsl:text>
@@ -1001,15 +1018,6 @@
</xsl:message>
</xsl:if>
<xsl:text>????</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <!-- old style olink -->
- <xsl:call-template name="olink.outline">
- <xsl:with-param name="outline.base.uri"
- select="unparsed-entity-uri(@targetdocent)"/>
- <xsl:with-param name="localinfo" select="@localinfo"/>
- <xsl:with-param name="return" select="'xreftext'"/>
- </xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
diff --git a/common/or.xml b/common/or.xml
index 783fdee..61315de 100644
--- a/common/or.xml
+++ b/common/or.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ପà­à¬°: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/pa.xml b/common/pa.xml
index f5b0300..f037fc0 100644
--- a/common/pa.xml
+++ b/common/pa.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/pl.xml b/common/pl.xml
index 899cf6c..53c2873 100644
--- a/common/pl.xml
+++ b/common/pl.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Pyt.: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/pt.xml b/common/pt.xml
index fc7117e..7fe3720 100644
--- a/common/pt.xml
+++ b/common/pt.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="P: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/pt_br.xml b/common/pt_br.xml
index a22066e..9433df1 100644
--- a/common/pt_br.xml
+++ b/common/pt_br.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="P: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ro.xml b/common/ro.xml
index 8d599d5..376c90f 100644
--- a/common/ro.xml
+++ b/common/ro.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Î: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ru.xml b/common/ru.xml
index 6de1cd0..68fcab5 100644
--- a/common/ru.xml
+++ b/common/ru.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ВопроÑ: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/sk.xml b/common/sk.xml
index 3144fb2..c573dbe 100644
--- a/common/sk.xml
+++ b/common/sk.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/sl.xml b/common/sl.xml
index 8c2d640..faa4bea 100644
--- a/common/sl.xml
+++ b/common/sl.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="V: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/sq.xml b/common/sq.xml
index 0f6b3d7..3142289 100644
--- a/common/sq.xml
+++ b/common/sq.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Q: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/sr.xml b/common/sr.xml
index 1f43f0d..ce3f893 100644
--- a/common/sr.xml
+++ b/common/sr.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="П: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/sr_Latn.xml b/common/sr_Latn.xml
index 78789eb..3dc3baa 100644
--- a/common/sr_Latn.xml
+++ b/common/sr_Latn.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="P: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/sv.xml b/common/sv.xml
index ce28a26..22b21bb 100644
--- a/common/sv.xml
+++ b/common/sv.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Fråga: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/ta.xml b/common/ta.xml
index 84d004c..5372ea0 100644
--- a/common/ta.xml
+++ b/common/ta.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="வினா: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/te.xml b/common/te.xml
index f3ff443..6a726fa 100644
--- a/common/te.xml
+++ b/common/te.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="à°ªà±à°°à°¶à±à°¨: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/th.xml b/common/th.xml
index 05de513..d06615a 100644
--- a/common/th.xml
+++ b/common/th.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="ถาม: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/titles.xsl b/common/titles.xsl
index a3db5c2..762d4fa 100644
--- a/common/titles.xsl
+++ b/common/titles.xsl
@@ -6,7 +6,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: titles.xsl 9286 2012-04-19 10:10:58Z bobstayton $
+ $Id: titles.xsl 9715 2013-01-24 00:16:57Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -61,6 +61,15 @@ title of the element. This does not include the label.
<xsl:value-of select="@xml:id"/>
<xsl:text>")</xsl:text>
</xsl:when>
+ <xsl:otherwise>
+ <xsl:text> (contained in </xsl:text>
+ <xsl:value-of select="local-name(..)"/>
+ <xsl:if test="../@id or ../@xml:id">
+ <xsl:text> with id </xsl:text>
+ <xsl:value-of select="../@id | ../@xml:id"/>
+ </xsl:if>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
</xsl:choose>
</xsl:message>
</xsl:if>
@@ -274,7 +283,7 @@ title of the element. This does not include the label.
</xsl:template>
<xsl:template match="bridgehead" mode="title.markup">
- <xsl:apply-templates mode="title.markup"/>
+ <xsl:apply-templates/>
</xsl:template>
<xsl:template match="refsynopsisdiv" mode="title.markup">
@@ -525,6 +534,9 @@ title of the element. This does not include the label.
<!-- ============================================================ -->
+<!-- titleabbrev is always processed in a mode -->
+<xsl:template match="titleabbrev"/>
+
<xsl:template match="*" mode="titleabbrev.markup">
<xsl:param name="allow-anchors" select="0"/>
<xsl:param name="verbose" select="1"/>
@@ -549,7 +561,7 @@ title of the element. This does not include the label.
</xsl:choose>
</xsl:template>
-<xsl:template match="book|preface|chapter|appendix" mode="titleabbrev.markup">
+<xsl:template match="book|part|set|preface|chapter|appendix" mode="titleabbrev.markup">
<xsl:param name="allow-anchors" select="0"/>
<xsl:param name="verbose" select="1"/>
@@ -557,6 +569,8 @@ title of the element. This does not include the label.
|bookinfo/titleabbrev
|info/titleabbrev
|prefaceinfo/titleabbrev
+ |setinfo/titleabbrev
+ |partinfo/titleabbrev
|chapterinfo/titleabbrev
|appendixinfo/titleabbrev
|titleabbrev)[1]"/>
diff --git a/common/tl.xml b/common/tl.xml
index f21c819..9a0bad2 100644
--- a/common/tl.xml
+++ b/common/tl.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Tanong: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/tr.xml b/common/tr.xml
index fb98b68..134bab0 100644
--- a/common/tr.xml
+++ b/common/tr.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="3"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="Soru: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/uk.xml b/common/uk.xml
index c02742d..436db94 100644
--- a/common/uk.xml
+++ b/common/uk.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="П: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/vi.xml b/common/vi.xml
index 48bcdd3..d9186ce 100644
--- a/common/vi.xml
+++ b/common/vi.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="H: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/xh.xml b/common/xh.xml
index 64f6b3e..23e5d3f 100644
--- a/common/xh.xml
+++ b/common/xh.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="U: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/zh.xml b/common/zh.xml
index 91ed410..eeb19e2 100644
--- a/common/zh.xml
+++ b/common/zh.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="æœç´¢"/>
<l:template name="Enter_a_term_and_click" text="输入字è¯ï¼Œç„¶åŽç‚¹å‡» "/>
<l:template name="Go" text="去"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="问: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/zh_cn.xml b/common/zh_cn.xml
index b385ab5..ed1c56f 100644
--- a/common/zh_cn.xml
+++ b/common/zh_cn.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-"/>
<l:gentext key="hyphenation-push-character-count" text="2"/>
<l:gentext key="hyphenation-remain-character-count" text="2"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="问: %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/common/zh_tw.xml b/common/zh_tw.xml
index 537924d..c92de8a 100644
--- a/common/zh_tw.xml
+++ b/common/zh_tw.xml
@@ -216,6 +216,28 @@
<l:gentext key="hyphenation-character" text="-" lang="en"/>
<l:gentext key="hyphenation-push-character-count" text="2" lang="en"/>
<l:gentext key="hyphenation-remain-character-count" text="2" lang="en"/>
+<l:context name="keycap"><l:template name="alt" text="Alt" lang="en"/>
+<l:template name="backspace" text="&lt;—" lang="en"/>
+<l:template name="command" text="⌘" lang="en"/>
+<l:template name="control" text="Ctrl" lang="en"/>
+<l:template name="delete" text="Del" lang="en"/>
+<l:template name="down" text="↓" lang="en"/>
+<l:template name="end" text="End" lang="en"/>
+<l:template name="enter" text="Enter" lang="en"/>
+<l:template name="escape" text="Esc" lang="en"/>
+<l:template name="home" text="Home" lang="en"/>
+<l:template name="insert" text="Ins" lang="en"/>
+<l:template name="left" text="â†" lang="en"/>
+<l:template name="meta" text="Meta" lang="en"/>
+<l:template name="option" text="???" lang="en"/>
+<l:template name="pagedown" text="Page ↓" lang="en"/>
+<l:template name="pageup" text="Page ↑" lang="en"/>
+<l:template name="right" text="→" lang="en"/>
+<l:template name="shift" text="Shift" lang="en"/>
+<l:template name="space" text="Space" lang="en"/>
+<l:template name="tab" text="→|" lang="en"/>
+<l:template name="up" text="↑" lang="en"/>
+</l:context>
<l:context name="webhelp"><l:template name="Search" text="Search" lang="en"/>
<l:template name="Enter_a_term_and_click" text="Enter a term and click " lang="en"/>
<l:template name="Go" text="Go" lang="en"/>
@@ -295,6 +317,7 @@
<l:template name="refsect3" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
<l:template name="refsynopsisdivinfo" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
@@ -432,6 +455,7 @@
<l:template name="question" text="å•ï¼šÂ %n"/>
<l:template name="reference" text="%t"/>
<l:template name="refsynopsisdiv" text="%t"/>
+<l:template name="screenshot" text="%t" lang="en"/>
<l:template name="segmentedlist" text="%t"/>
<l:template name="set" text="%t"/>
<l:template name="setindex" text="%t"/>
diff --git a/docsrc/reference.xml b/docsrc/reference.xml
index 641563b..5286887 100644
--- a/docsrc/reference.xml
+++ b/docsrc/reference.xml
@@ -15,7 +15,7 @@
<!-- * WARNING WARNING WARNING -->
<!-- * WARNING WARNING WARNING -->
<title>DocBook XSL Stylesheets: Reference Documentation</title>
- <info><releaseinfo role="meta">$Id: reference.xml 9275 2012-04-14 08:46:07Z mzjn $ </releaseinfo>
+ <info><releaseinfo role="meta">$Id: reference.xml 9625 2012-10-20 23:12:33Z dcramer $ </releaseinfo>
<xi:include href="./authors.xml"/>
<xi:include href="./copyright.xml" xpointer="xpointer(//*[local-name() = 'copyright'])"/>
<xi:include href="./license.xml"/>
@@ -134,7 +134,7 @@
output.</para>
</note>
</partintro>
- <xi:include href="../slides/html/param.xml" xpointer="xpointer(/book/reference)" />
+ <xi:include href="../slides/xhtml/param.xml" xpointer="xpointer(/book/reference)" />
<xi:include href="../slides/fo/param.xml" xpointer="xpointer(/book/reference)" />
</part>
<part xml:id="website">
diff --git a/docsrc/reference.xml.included b/docsrc/reference.xml.included
index e194732..cf287d0 100644
--- a/docsrc/reference.xml.included
+++ b/docsrc/reference.xml.included
@@ -9,7 +9,7 @@
<!-- * WARNING WARNING WARNING -->
<!-- * WARNING WARNING WARNING -->
<title>DocBook XSL Stylesheets: Reference&#160;Documentation</title>
- <info><releaseinfo role="meta">$Id: reference.xml 9275 2012-04-14 08:46:07Z mzjn $ </releaseinfo>
+ <info><releaseinfo role="meta">$Id: reference.xml 9625 2012-10-20 23:12:33Z dcramer $ </releaseinfo>
<authorgroup version="5.0">
<author>
<personname>
@@ -4910,6 +4910,71 @@ values are still supported and mapped to 'no' and 'yes', respectively.
</refsection>
</refentry>
+<refentry version="5.0" id="activate.external.olinks">
+<refmeta>
+<refentrytitle>activate.external.olinks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>activate.external.olinks</refname>
+<refpurpose>Make external olinks into active links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="activate.external.olinks.frag">
+&lt;xsl:param name="activate.external.olinks" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>activate.external.olinks</parameter> is nonzero
+(the default), then any olinks that reference another document
+become active links that can be clicked on to follow the link.
+If the parameter is set to zero, then external olinks
+will have the appropriate link text generated, but the link is
+not made active. Olinks to destinations in
+the current document remain active.</para>
+
+<para>To make an external olink active for HTML
+outputs, the link text is wrapped in an <tag>a</tag>
+element with an <tag>href</tag> attribute. To
+make an external olink active for FO outputs, the link text is
+wrapped in an <tag>fo:basic-link</tag> element with an
+<tag>external-destination</tag> attribute.</para>
+
+<para>This parameter is useful when you need external olinks
+to resolve but not be clickable. For example, if documents
+in a collection are available independently of each other,
+then having active links between them could lead to
+unresolved links when a given target document is missing.</para>
+
+<para>The epub stylesheets set this parameter to zero by default
+because there is no standard linking mechanism between Epub documents.</para>
+
+<para>If external links are made inactive, you should
+consider setting the
+stylesheet parameter <parameter>olink.doctitle</parameter>
+to <literal>yes</literal>. That will append the external document's
+title to the link text, making it easier for the user to
+locate the other document.</para>
+
+<para>An olink is considered external when the
+<parameter>current.docid</parameter> stylesheet parameter
+is set to some value, and the olink's <tag>targetdoc</tag>
+attribute has a different value. If the two values
+match, then the link is considered internal. If the
+<parameter>current.docid</parameter> parameter is blank, or
+the <tag>olink</tag> element does not have a <tag>targetdoc</tag> attribute,
+then the link is considered to be internal and will become
+an active link.</para>
+
+<para>See also <parameter>olink.doctitle</parameter>,
+<parameter>prefer.internal.olink</parameter>.</para>
+
+</refsection>
+</refentry>
+
<refentry version="5.0" id="olink.debug">
<refmeta>
<refentrytitle>olink.debug</refentrytitle>
@@ -5317,114 +5382,6 @@ on anchors generated for <tag>ulink</tag>s.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="olink.fragid">
-<refmeta>
-<refentrytitle>olink.fragid</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.fragid</refname>
-<refpurpose>Names the fragment identifier portion of an OLink resolver query</refpurpose>
-</refnamediv>
-<refsynopsisdiv>
-<programlisting id="olink.fragid.frag">
-&lt;xsl:param name="olink.fragid"&gt;fragid=&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-<refsection><info><title>Description</title></info>
-<para>The fragment identifier portion of an <tag>olink</tag> target.</para>
-</refsection>
-</refentry>
-
-<refentry version="5.0" id="olink.outline.ext">
-<refmeta>
-<refentrytitle>olink.outline.ext</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.outline.ext</refname>
-<refpurpose>The extension of OLink outline files</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting id="olink.outline.ext.frag">
-&lt;xsl:param name="olink.outline.ext"&gt;.olink&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>The extension to be expected for OLink outline files</para>
-<para>Bob has this parameter as dead. Please don't use</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" id="olink.pubid">
-<refmeta>
-<refentrytitle>olink.pubid</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.pubid</refname>
-<refpurpose>Names the public identifier portion of an OLink resolver query</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting id="olink.pubid.frag">
-&lt;xsl:param name="olink.pubid"&gt;pubid&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para/>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" id="olink.sysid">
-<refmeta>
-<refentrytitle>olink.sysid</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.sysid</refname>
-<refpurpose>Names the system identifier portion of an OLink resolver query</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting id="olink.sysid.frag">
-&lt;xsl:param name="olink.sysid"&gt;sysid&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" id="olink.resolver">
-<refmeta>
-<refentrytitle>olink.resolver</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.resolver</refname>
-<refpurpose>The root name of the OLink resolver (usually a script)</refpurpose>
-</refnamediv>
-<refsynopsisdiv>
-<programlisting id="olink.resolver.frag">
- &lt;xsl:param name="olink.resolver"&gt;/cgi-bin/olink&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
-</refsection>
-</refentry>
-
</reference><reference id="xrefs" xml:base="../html/param.xml"><title>Cross References</title>
<refentry version="5.0" id="collect.xref.targets">
<refmeta>
@@ -10684,7 +10641,7 @@ configure the name of the file that is redirected to.
<refsynopsisdiv>
<programlisting id="webhelp.include.search.tab.frag">
-&lt;xsl:param name="webhelp.include.search.tab"&gt;true&lt;/xsl:param&gt;
+&lt;xsl:param name="webhelp.include.search.tab"&gt;1&lt;/xsl:param&gt;
</programlisting>
</refsynopsisdiv>
@@ -11016,7 +10973,7 @@ to be treated as case insensitive".</para>
The value is normally taken from the gentext file for the
lang attribute of the document's root element, using the
key name 'writing-mode' to look it up in the gentext file.
-But the param can also be
+But this param can also be
set on the command line to override that gentext value.
</para>
<para>Accepted values are:
@@ -12807,19 +12764,12 @@ should still be used for FOP version 0.20.5 and earlier.
<refsection><info><title>Description</title></info>
-<para>If non-zero,
-<link xlink:href="http://projects.oucs.ox.ac.uk/passivetex/">PassiveTeX</link>
-extensions will be used. At present, this consists of PDF bookmarks
-and sorted index terms.
-</para>
+<important><para>The PassiveTeX XSL-FO processor is
+no longer supported by DocBook XSL, beginning with version 1.78.</para></important>
-<para>This parameter can also affect which graphics file formats
-are supported</para>
-
-<note>
- <para>PassiveTeX is incomplete and development has ceased. In most cases,
-another XSL-FO engine is probably a better choice.</para>
-</note>
+<para>PassiveTeX was never a complete implementation of
+XSL-FO, and development has ceased. Setting this parameter will
+have no effect on the output.</para>
</refsection>
</refentry>
@@ -14498,6 +14448,71 @@ identifier does not appear in the document itself. </para>
</refsection>
</refentry>
+<refentry version="5.0" id="activate.external.olinks">
+<refmeta>
+<refentrytitle>activate.external.olinks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>activate.external.olinks</refname>
+<refpurpose>Make external olinks into active links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="activate.external.olinks.frag">
+&lt;xsl:param name="activate.external.olinks" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>activate.external.olinks</parameter> is nonzero
+(the default), then any olinks that reference another document
+become active links that can be clicked on to follow the link.
+If the parameter is set to zero, then external olinks
+will have the appropriate link text generated, but the link is
+not made active. Olinks to destinations in
+the current document remain active.</para>
+
+<para>To make an external olink active for HTML
+outputs, the link text is wrapped in an <tag>a</tag>
+element with an <tag>href</tag> attribute. To
+make an external olink active for FO outputs, the link text is
+wrapped in an <tag>fo:basic-link</tag> element with an
+<tag>external-destination</tag> attribute.</para>
+
+<para>This parameter is useful when you need external olinks
+to resolve but not be clickable. For example, if documents
+in a collection are available independently of each other,
+then having active links between them could lead to
+unresolved links when a given target document is missing.</para>
+
+<para>The epub stylesheets set this parameter to zero by default
+because there is no standard linking mechanism between Epub documents.</para>
+
+<para>If external links are made inactive, you should
+consider setting the
+stylesheet parameter <parameter>olink.doctitle</parameter>
+to <literal>yes</literal>. That will append the external document's
+title to the link text, making it easier for the user to
+locate the other document.</para>
+
+<para>An olink is considered external when the
+<parameter>current.docid</parameter> stylesheet parameter
+is set to some value, and the olink's <tag>targetdoc</tag>
+attribute has a different value. If the two values
+match, then the link is considered internal. If the
+<parameter>current.docid</parameter> parameter is blank, or
+the <tag>olink</tag> element does not have a <tag>targetdoc</tag> attribute,
+then the link is considered to be internal and will become
+an active link.</para>
+
+<para>See also <parameter>olink.doctitle</parameter>,
+<parameter>prefer.internal.olink</parameter>.</para>
+
+</refsection>
+</refentry>
+
<refentry version="5.0" id="collect.xref.targets">
<refmeta>
<refentrytitle>collect.xref.targets</refentrytitle>
@@ -17673,6 +17688,7 @@ that you may have trouble using those symbols for footnotes.</para>
&lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="text-align"&gt;&lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="end-indent"&gt;0pt&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="text-indent"&gt;0pt&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="hyphenate"&gt;&lt;xsl:value-of select="$hyphenate"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
@@ -18726,6 +18742,8 @@ zero by default, so this is simply the page-master margin-right.
&lt;xsl:when test="$paper.type = 'A4landscape'"&gt;210mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'USletter'"&gt;11in&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'USlandscape'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegal'"&gt;14in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegallandscape'"&gt;8.5in&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '4A0'"&gt;2378mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '2A0'"&gt;1682mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'A0'"&gt;1189mm&lt;/xsl:when&gt;
@@ -18849,6 +18867,8 @@ this bug is fixed by RenderX. It does not affect documents
with left-to-right text direction.</para>
</note>
+<para>See also <parameter>writing.mode</parameter>.</para>
+
</refsection>
</refentry>
@@ -18898,6 +18918,8 @@ this bug is fixed by RenderX. It does not affect documents
with left-to-right text direction.</para>
</note>
+<para>See also <parameter>writing.mode</parameter>.</para>
+
</refsection>
</refentry>
@@ -18999,6 +19021,9 @@ landscape orientation, it is vertical.
<programlisting id="page.width.portrait.frag">&lt;xsl:param name="page.width.portrait"&gt;
&lt;xsl:choose&gt;
&lt;xsl:when test="$paper.type = 'USletter'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlandscape'"&gt;11in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegal'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegallandscape'"&gt;14in&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '4A0'"&gt;1682mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '2A0'"&gt;1189mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'A0'"&gt;841mm&lt;/xsl:when&gt;
@@ -19135,11 +19160,63 @@ B, and C sizes. See <parameter>page.width.portrait</parameter>, for example.
<refsection><info><title>Description</title></info>
-<para>Double-sided documents are printed with a slightly wider margin
-on the binding edge of the page.
+<para>This parameter is useful when printing a document
+on both sides of the paper.</para>
+
+<para>if set to non-zero, documents are formatted using different page-masters
+for odd and even pages. These can differ by using a slightly wider margin
+on the binding edge of the page, and alternating left-right
+positions of header or footer elements.
+</para>
+
+<para>If set to zero (the default), then only the 'odd' page masters
+are used for both even and odd numbered pages.</para>
+
+<para>See also <parameter>force.blank.pages</parameter>,
+<parameter>page.margin.inner</parameter> and
+<parameter>page.margin.outer</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" id="force.blank.pages">
+<refmeta>
+<refentrytitle>force.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force.blank.pages</refname>
+<refpurpose>Generate blank page to end on even page number</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting id="force.blank.pages.frag">
+&lt;xsl:param name="force.blank.pages" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), then each page sequence will be forced to
+end on an even-numbered page, by inserting a blank page
+if necessary. This will force the next page sequence to start
+on an odd-numbered page, which is a standard convention
+for printed and bound books.</para>
+
+<para>If zero, then such blank pages will not be inserted.
+Chapters will start on the next available page,
+regardless of whether it is an even or odd number.
+This is useful when publishing online where blank
+pages are not needed.
+</para>
+
+<para>This param is independent of the
+<parameter>double.sided</parameter> parameter, which
+just triggers the use of even and odd page sequence
+masters that differ in their header and footer placement.
+So you can combine the two params for alternating
+headers/footers and no blank pages.
</para>
-<para>FIXME: The current set of parameters does not take writing direction
-into account.</para>
</refsection>
</refentry>
@@ -22680,9 +22757,6 @@ used for all titles below level 5.</para>
<refsynopsisdiv>
<programlisting id="article.appendix.title.properties.frag">
&lt;xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties"&gt;
- &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;
- &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
- &lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
@@ -23635,7 +23709,7 @@ to be treated as case insensitive".</para>
The value is normally taken from the gentext file for the
lang attribute of the document's root element, using the
key name 'writing-mode' to look it up in the gentext file.
-But the param can also be
+But this param can also be
set on the command line to override that gentext value.
</para>
<para>Accepted values are:
@@ -27043,1397 +27117,1654 @@ simply for the purpose of increasing reability of the source.</para>
output.</para>
</note>
</partintro>
- <reference id="html" xml:base="../slides/html/param.xml">
-<title>HTML: General Parameters</title>
-<refentry version="5.0" id="keyboard.nav">
+ <reference id="xhtml" xml:base="../slides/xhtml/param.xml">
+ <title>XHTML: General Params</title>
+
+<refentry version="5.0" id="disable.collapsible">
<refmeta>
-<refentrytitle>keyboard.nav</refentrytitle>
+<refentrytitle>disable.collapsible</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>keyboard.nav</refname>
-<refpurpose>Enable keyboard navigation?</refpurpose>
+<refname>disable.collapsible</refname>
+<refpurpose>Specifies whether collapsible rendering is enabled</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="keyboard.nav.frag">
-&lt;xsl:param name="keyboard.nav" select="1"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="disable.collapsible.frag">
+ &lt;xsl:param name="disable.collapsible"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, JavaScript is added to the slides to enable keyboard
-navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves
-backward.</para>
+<para>This parameter specifies whether elements marked as
+ collapsible are generated as such in the output document.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="css.stylesheet">
+<refentry version="5.0" id="disable.incremental">
<refmeta>
-<refentrytitle>css.stylesheet</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+<refentrytitle>disable.incremental</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>css.stylesheet</refname>
-<refpurpose>CSS stylesheet for slides</refpurpose>
+<refname>disable.incremental</refname>
+<refpurpose>Specifies whether incremental rendering is enabled</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="css.stylesheet.frag">
-&lt;xsl:param name="css.stylesheet"&gt;slides.css&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="disable.incremental.frag">
+ &lt;xsl:param name="disable.incremental"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Identifies the CSS stylesheet used by all the slides. This parameter
-can be set in the source document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>css-stylesheet</literal>.</para>
+<para>This parameter specifies whether elements marked as
+ incremental are generated as such in the output document.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="css.stylesheet.dir">
+<refentry version="5.0" id="generate.copyright">
<refmeta>
-<refentrytitle>css.stylesheet.dir</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+<refentrytitle>generate.copyright</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>css.stylesheet.dir</refname>
-<refpurpose>Default directory for CSS stylesheets</refpurpose>
+<refname>generate.copyright</refname>
+<refpurpose>Specifies whether copyright is generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="css.stylesheet.dir.frag">
-&lt;xsl:param name="css.stylesheet.dir"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.copyright.frag">
+ &lt;xsl:param name="generate.copyright"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Identifies the default directory for the CSS stylesheet
-generated on all the slides. This parameter can be set in the source
-document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>css-stylesheet-dir</literal>.</para>
-
-<para>If non-empty, this value is prepended to each of the stylesheets.
-</para>
+<para>This parameter specifies whether the copyright info is generated
+ in the footer area.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="titlefoil.html">
+<refentry version="5.0" id="generate.foilgroup.numbered.toc">
<refmeta>
-<refentrytitle>titlefoil.html</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.foilgroup.numbered.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>titlefoil.html</refname>
-<refpurpose>Name of title foil HTML file</refpurpose>
+<refname>generate.foilgroup.numbered.toc</refname>
+<refpurpose>Specifies whether foilgroups have a numbered TOC</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="titlefoil.html.frag">
-&lt;xsl:param name="titlefoil.html" select="concat('index', $html.ext)"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.foilgroup.numbered.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.numbered.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Sets the filename used for the slides titlepage.</para>
+<para>If TOC generation is turned on, this parameter specifies
+ whether foilgroups have a numbered TOC. If disabled, TOC items
+ will be bulleted, not numbered.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="toc.html">
+<refentry version="5.0" id="generate.foilgroup.toc">
<refmeta>
-<refentrytitle>toc.html</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>toc.html</refname>
-<refpurpose>Name of ToC HTML file</refpurpose>
+<refname>generate.foilgroup.toc</refname>
+<refpurpose>Specifies whether foilgroups have a TOC</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="toc.html.frag">
-&lt;xsl:param name="toc.html" select="concat('toc', $html.ext)"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.foilgroup.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Sets the filename used for the table of contents page.</para>
+<para>This parameter specifies whether foilgroups will
+ contain a table of contents of the included foils.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="foilgroup.toc">
+<refentry version="5.0" id="generate.handoutnotes">
<refmeta>
-<refentrytitle>foilgroup.toc</refentrytitle>
+<refentrytitle>generate.handoutnotes</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foilgroup.toc</refname>
-<refpurpose>Put ToC on foilgroup pages?</refpurpose>
+<refname>generate.handoutnotes</refname>
+<refpurpose>Specifies whether handoutnotes are generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="foilgroup.toc.frag">
-&lt;xsl:param name="foilgroup.toc" select="1"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.handoutnotes.frag">
+ &lt;xsl:param name="generate.handoutnotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, a ToC will be placed on foilgroup pages (after any
-other content).
-</para>
+<para>This parameter specifies whether handoutnotes shall
+ be generated to the output.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="output.indent">
+<refentry version="5.0" id="generate.pubdate">
<refmeta>
-<refentrytitle>output.indent</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
+<refentrytitle>generate.pubdate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>output.indent</refname>
-<refpurpose>Indent output?</refpurpose>
+<refname>generate.pubdate</refname>
+<refpurpose>Specifies whether the pubdate is generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="output.indent.frag">
-&lt;xsl:param name="output.indent"&gt;no&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.pubdate.frag">
+ &lt;xsl:param name="generate.pubdate"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the setting of the <parameter>indent</parameter>
-parameter on the HTML slides. For more information, see the discussion
-of the <tag>xsl:output</tag> element in the XSLT specification.</para>
-<para>Select from <literal>yes</literal> or <literal>no</literal>.</para>
+<para>This parameter specifies whether the publication date is generated
+ in the footer area.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="overlay">
+<refentry version="5.0" id="generate.speakernotes">
<refmeta>
-<refentrytitle>overlay</refentrytitle>
+<refentrytitle>generate.speakernotes</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>overlay</refname>
-<refpurpose>Overlay footer navigation?</refpurpose>
+<refname>generate.speakernotes</refname>
+<refpurpose>Specifies whether speakernotes are generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="overlay.frag">
-&lt;xsl:param name="overlay" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.speakernotes.frag">
+ &lt;xsl:param name="generate.speakernotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, JavaScript is added to the slides to make the
-bottom navigation appear at the bottom of each page. This option and
-<link linkend="multiframe">multiframe</link> are mutually exclusive.</para>
-
-<para>If this parameter is zero, the bottom navigation simply appears
-below the content of each slide.</para>
+<para>This parameter specifies whether speakernotes shall
+ be generated to the output.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="show.foil.number">
+<refentry version="5.0" id="generate.titlepage">
<refmeta>
-<refentrytitle>show.foil.number</refentrytitle>
+<refentrytitle>generate.titlepage</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>show.foil.number</refname>
-<refpurpose>Show foil number on each foil?</refpurpose>
+<refname>generate.titlepage</refname>
+<refpurpose>Specifies whether titlepage is generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="show.foil.number.frag">
-&lt;xsl:param name="show.foil.number" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.titlepage.frag">
+ &lt;xsl:param name="generate.titlepage"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, on each slide there will be its number. Currently
-not supported in all output formats.</para>
+<para>This parameter specifies whether titlepage is generated
+ for the presentation.</para>
</refsection>
</refentry>
-</reference><reference id="frames" xml:base="../slides/html/param.xml">
-<title>HTML: Frames Parameters</title>
-<refentry version="5.0" id="nav.separator">
+<refentry version="5.0" id="mml.embedding.mode">
<refmeta>
-<refentrytitle>nav.separator</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+<refentrytitle>mml.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">object</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">image</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">link</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iframe</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">embed</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>nav.separator</refname>
-<refpurpose>Output separator between navigation and body?</refpurpose>
+<refname>mml.embedding.mode</refname>
+<refpurpose>Specifies how inline MathML is processed</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="nav.separator.frag">
-&lt;xsl:param name="nav.separator" select="1"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="mml.embedding.mode.frag">
+ &lt;xsl:param name="mml.embedding.mode"&gt;inline&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, a separator (<literal>&lt;HR&gt;</literal>) is
-added between the navigation links and the content of each slide.</para>
+<para>This parameter specifies how inline MathML formulas
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>image</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>img</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>link</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>a</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iframe</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>iframe</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>embed</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>embed</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
-<refentry version="5.0" id="toc.row.height">
+<refentry version="5.0" id="svg.embedding.mode">
<refmeta>
-<refentrytitle>toc.row.height</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+<refentrytitle>svg.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">object</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">image</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">link</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iframe</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">embed</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>toc.row.height</refname>
-<refpurpose>Height of ToC rows in dynamic ToCs</refpurpose>
+<refname>svg.embedding.mode</refname>
+<refpurpose>Specifies how inline SVG is processed</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="toc.row.height.frag">
-&lt;xsl:param name="toc.row.height"&gt;22&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="svg.embedding.mode.frag">
+ &lt;xsl:param name="svg.embedding.mode"&gt;object&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies the height of each row in the table of
-contents. This is only applicable if a <link linkend="dynamic.toc">dynamic ToC</link> is used. You may want to
-adjust this parameter for optimal appearance with the font and image
-sizes selected by your <link linkend="css.stylesheet">CSS
-stylesheet</link>.
-</para>
+<para>This parameter specifies how inline SVG graphics
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>image</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>img</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>link</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>a</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iframe</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>iframe</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>embed</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>embed</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
-<refentry version="5.0" id="toc.bg.color">
+<refentry version="5.0" id="user.css">
<refmeta>
-<refentrytitle>toc.bg.color</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+<refentrytitle>user.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>toc.bg.color</refname>
-<refpurpose>Background color for ToC frame</refpurpose>
+<refname>user.css</refname>
+<refpurpose>Specifies the path to user-supplied CSS</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="toc.bg.color.frag">
-&lt;xsl:param name="toc.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="user.css.frag">
+ &lt;xsl:param name="user.css"&gt;user.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the background color used in the ToC frame.</para>
+<para>This parameter specifies the path from where the
+ CSS styling is read. This file can be used to
+ add additional styling to the slides.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="body.bg.color">
+<refentry version="5.0" id="wrap.slidecontent">
<refmeta>
-<refentrytitle>body.bg.color</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+<refentrytitle>wrap.slidecontent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>body.bg.color</refname>
-<refpurpose>Background color for body frame</refpurpose>
+<refname>wrap.slidecontent</refname>
+<refpurpose>Specifies whether the foil content is wrapped into a div</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="body.bg.color.frag">
-&lt;xsl:param name="body.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="wrap.slidecontent.frag">
+ &lt;xsl:param name="wrap.slidecontent"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the background color used in the body column of
-tabular slides.</para>
+<para>This parameter specifies whether the foil content is wrapped into
+ a div so that additional styling can be applied.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="toc.width">
+</reference><reference id="s5" xml:base="../slides/xhtml/param.xml">
+ <title>XHTML: S5 Params</title>
+
+<refentry version="5.0" id="s5.controls">
<refmeta>
-<refentrytitle>toc.width</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+<refentrytitle>s5.controls</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>toc.width</refname>
-<refpurpose>Width of ToC frame</refpurpose>
+<refname>s5.controls</refname>
+<refpurpose>Specifies whether S5 controls are visible</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="toc.width.frag">
-&lt;xsl:param name="toc.width"&gt;250&lt;/xsl:param&gt;
-&lt;!-- Presumably in pixels? --&gt;
-</programlisting>
+ <programlisting id="s5.controls.frag">
+ &lt;xsl:param name="s5.controls"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the width of the ToC frame in pixels.</para>
+<para>This parameter specifies whether S5 navigation controls are
+ visible by default.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="toc.hide.show">
+<refentry version="5.0" id="s5.defaultview">
<refmeta>
-<refentrytitle>toc.hide.show</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+<refentrytitle>s5.defaultview</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">slideshow</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outline</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>toc.hide.show</refname>
-<refpurpose>Enable hide/show button for ToC frame</refpurpose>
+<refname>s5.defaultview</refname>
+<refpurpose>Specifies the default S5 view</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="toc.hide.show.frag">
-&lt;xsl:param name="toc.hide.show" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.defaultview.frag">
+ &lt;xsl:param name="s5.defaultview"&gt;slideshow&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, JavaScript (and an additional icon, see
-<link linkend="hidetoc.image">hidetoc.image</link> and
-<link linkend="hidetoc.image">showtoc.image</link>) is added to each slide
-to allow the ToC panel to be <quote>toggled</quote> on each panel.</para>
-
-<note><para>There is a bug in Mozilla 1.0 (at least as of CR3) that causes
-the browser to reload the titlepage when this feature is used.</para></note>
+<para>This parameter specifies, which is the default view
+ in the generated S5 presentation.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="dynamic.toc">
+<refentry version="5.0" id="s5.opera.css">
<refmeta>
-<refentrytitle>dynamic.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+<refentrytitle>s5.opera.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>dynamic.toc</refname>
-<refpurpose>Dynamic ToCs?</refpurpose>
+<refname>s5.opera.css</refname>
+<refpurpose>Specifies the name of the S5 Opera-specific CSS file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="dynamic.toc.frag">
-&lt;xsl:param name="dynamic.toc" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.opera.css.frag">
+ &lt;xsl:param name="s5.opera.css"&gt;opera.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, JavaScript is used to make the ToC panel <quote>dynamic</quote>.
-In a dynamic ToC, each section in the ToC can be expanded and collapsed by
-clicking on the appropriate image.</para>
+<para>This parameter specifies the name of the S5 Opera-specific
+ CSS file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="active.toc">
+<refentry version="5.0" id="s5.outline.css">
<refmeta>
-<refentrytitle>active.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+<refentrytitle>s5.outline.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>active.toc</refname>
-<refpurpose>Active ToCs?</refpurpose>
+<refname>s5.outline.css</refname>
+<refpurpose>Specifies the name of the S5 outline CSS file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="active.toc.frag">
-&lt;xsl:param name="active.toc" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.outline.css.frag">
+ &lt;xsl:param name="s5.outline.css"&gt;outline.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, JavaScript is used to keep the ToC and the current slide
-<quote>in sync</quote>. That is, each time the slide changes, the corresponding
-ToC entry will be underlined.</para>
+<para>This parameter specifies the name of the S5 outline CSS file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="overlay.logo">
+<refentry version="5.0" id="s5.path.prefix">
<refmeta>
-<refentrytitle>overlay.logo</refentrytitle>
+<refentrytitle>s5.path.prefix</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>overlay.logo</refname>
-<refpurpose>Logo to overlay on ToC frame</refpurpose>
+<refname>s5.path.prefix</refname>
+<refpurpose>Specifies the path to S5 files</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="overlay.logo.frag">
-&lt;xsl:param name="overlay.logo"&gt;http://docbook.sourceforge.net/release/buttons/slides-1.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.path.prefix.frag">
+ &lt;xsl:param name="s5.path.prefix"&gt;files/s5/ui/default/&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If this URI is non-empty, JavaScript is used to overlay the
-specified image on the ToC frame.</para>
+<para>This parameter specifies the path where S5 CSS and
+ JavaScript files reside. All the CSS and JavaScript paths
+ will be generated relative to this directory.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="multiframe">
+<refentry version="5.0" id="s5.print.css">
<refmeta>
-<refentrytitle>multiframe</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+<refentrytitle>s5.print.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>multiframe</refname>
-<refpurpose>Use multiple frames for slide bodies?</refpurpose>
+<refname>s5.print.css</refname>
+<refpurpose>Specifies the name of the S5 print CSS file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="multiframe.frag">
-&lt;xsl:param name="multiframe" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.print.css.frag">
+ &lt;xsl:param name="s5.print.css"&gt;print.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>If non-zero, multiple frames are used for the body of each
-slide. This is one way of forcing the slide navigation elements to
-appear in constant locations. The other way is with <link linkend="overlay">overlays</link>. The <link linkend="overlay"><parameter>overlay</parameter></link> and
-<parameter>multiframe</parameter> parameters are mutually
-exclusive.</para>
+<para>This parameter specifies the name of the S5 print CSS file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="multiframe.top.bgcolor">
+<refentry version="5.0" id="s5.slides.css">
<refmeta>
-<refentrytitle>multiframe.top.bgcolor</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+<refentrytitle>s5.slides.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>multiframe.top.bgcolor</refname>
-<refpurpose>Background color for top navigation frame</refpurpose>
+<refname>s5.slides.css</refname>
+<refpurpose>Specifies the name of the S5 slides CSS file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="multiframe.top.bgcolor.frag">
-&lt;xsl:param name="multiframe.top.bgcolor"&gt;white&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.slides.css.frag">
+ &lt;xsl:param name="s5.slides.css"&gt;slides.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the background color of the top navigation frame when
-<link linkend="multiframe">multiframe</link> is enabled.</para>
+<para>This parameter specifies the name of the S5 slides CSS file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="multiframe.bottom.bgcolor">
+<refentry version="5.0" id="s5.slides.js">
<refmeta>
-<refentrytitle>multiframe.bottom.bgcolor</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
+<refentrytitle>s5.slides.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>multiframe.bottom.bgcolor</refname>
-<refpurpose>Background color for bottom navigation frame</refpurpose>
+<refname>s5.slides.js</refname>
+<refpurpose>Specifies the name of the S5 slides JavaScript file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="multiframe.bottom.bgcolor.frag">
-&lt;xsl:param name="multiframe.bottom.bgcolor"&gt;white&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="s5.slides.js.frag">
+ &lt;xsl:param name="s5.slides.js"&gt;slides.js&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the background color of the bottom navigation frame when
-<link linkend="multiframe">multiframe</link> is enabled.</para>
+<para>This parameter specifies the name of the S5 slides JavaScript
+ file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="multiframe.navigation.height">
+</reference><reference id="slidy" xml:base="../slides/xhtml/param.xml">
+ <title>XHTML: Slidy Params</title>
+
+<refentry version="5.0" id="slidy.duration">
<refmeta>
-<refentrytitle>multiframe.navigation.height</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+<refentrytitle>slidy.duration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>multiframe.navigation.height</refname>
-<refpurpose>Height of navigation frames</refpurpose>
+<refname>slidy.duration</refname>
+<refpurpose>Specifies the duration of the presentation</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="multiframe.navigation.height.frag">
-&lt;xsl:param name="multiframe.navigation.height"&gt;40&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slidy.duration.frag">
+ &lt;xsl:param name="slidy.duration"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the height of the navigation frames in pixels when
-<link linkend="multiframe">multiframe</link> is enabled.</para>
+<para>This parameter specifies the duration of the presentation
+ in minutes. A JavaScript clock will count down to help the
+ speaker in not running out of time. Can be disabled if set to 0.</para>
</refsection>
</refentry>
-</reference><reference id="graphics" xml:base="../slides/html/param.xml">
-<title>HTML: Graphics Parameters</title>
-<refentry version="5.0" id="graphics.dir">
+<refentry version="5.0" id="slidy.path.prefix">
<refmeta>
-<refentrytitle>graphics.dir</refentrytitle>
+<refentrytitle>slidy.path.prefix</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>graphics.dir</refname>
-<refpurpose>Graphics directory</refpurpose>
+<refname>slidy.path.prefix</refname>
+<refpurpose>Specifies the path to Slidy files</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="graphics.dir.frag">
-&lt;xsl:param name="graphics.dir"&gt;&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slidy.path.prefix.frag">
+ &lt;xsl:param name="slidy.path.prefix"&gt;files/slidy/&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Identifies the graphics directory for the navigation components
-generated on all the slides. This parameter can be set in the source
-document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>graphics-dir</literal>.</para>
-
-<para>If non-empty, this value is prepended to each of the graphic
-image paths.</para>
+<para>This parameter specifies the path where Slidy CSS and
+ JavaScript files reside. All the CSS and JavaScript paths
+ will be generated relative to this directory.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="bullet.image">
+<refentry version="5.0" id="slidy.slidy.css">
<refmeta>
-<refentrytitle>bullet.image</refentrytitle>
+<refentrytitle>slidy.slidy.css</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>bullet.image</refname>
-<refpurpose>Bullet image</refpurpose>
+<refname>slidy.slidy.css</refname>
+<refpurpose>Specifies the name of the main Slidy CSS file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="bullet.image.frag">
-&lt;xsl:param name="bullet.image"&gt;toc/bullet.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slidy.slidy.css.frag">
+ &lt;xsl:param name="slidy.slidy.css"&gt;styles/slidy.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the bullet image used for foils in the
-framed ToC.</para>
+<para>This parameter specifies the name of the main Slidy CSS file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="next.image">
+<refentry version="5.0" id="slidy.slidy.js">
<refmeta>
-<refentrytitle>next.image</refentrytitle>
+<refentrytitle>slidy.slidy.js</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>next.image</refname>
-<refpurpose>Right-arrow image</refpurpose>
+<refname>slidy.slidy.js</refname>
+<refpurpose>Specifies the name of the Slidy JavaScript file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="next.image.frag">
-&lt;xsl:param name="next.image"&gt;active/nav-next.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slidy.slidy.js.frag">
+ &lt;xsl:param name="slidy.slidy.js"&gt;scripts/slidy.js&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the right-pointing navigation arrow.</para>
+<para>This parameter specifies the name of the Slidy JavaScript file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="prev.image">
+<refentry version="5.0" id="slidy.user.css">
<refmeta>
-<refentrytitle>prev.image</refentrytitle>
+<refentrytitle>slidy.user.css</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>prev.image</refname>
-<refpurpose>Left-arrow image</refpurpose>
+<refname>slidy.user.css</refname>
+<refpurpose>Specifies the name of the Slidy user CSS file</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="prev.image.frag">
-&lt;xsl:param name="prev.image"&gt;active/nav-prev.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slidy.user.css.frag">
+ &lt;xsl:param name="slidy.user.css"&gt;styles/w3c-blue.css&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the left-pointing navigation arrow.</para>
+<para>This parameter specifies the name of the Slidy user CSS file.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="up.image">
+</reference>
+ <reference id="fo" xml:base="../slides/fo/param.xml">
+ <title>FO: General Params</title>
+
+<refentry version="5.0" id="foil.title.master">
<refmeta>
-<refentrytitle>up.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.title.master</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>up.image</refname>
-<refpurpose>Up-arrow image</refpurpose>
+<refname>foil.title.master</refname>
+<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="up.image.frag">
-&lt;xsl:param name="up.image"&gt;active/nav-up.png&lt;/xsl:param&gt;
+<programlisting id="foil.title.master.frag">
+&lt;xsl:param name="foil.title.master"&gt;36&lt;/xsl:param&gt;
+&lt;!-- Inconsistant use of point size? --&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the upward-pointing navigation arrow.</para>
-
+<para>Specifies a unitless font size to use for foil titles; used in
+combination with the <parameter>foil.title.size</parameter>
+parameter.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="home.image">
+<refentry version="5.0" id="foil.title.size">
<refmeta>
-<refentrytitle>home.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.title.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>home.image</refname>
-<refpurpose>Home image</refpurpose>
+<refname>foil.title.size</refname>
+<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="home.image.frag">
-&lt;xsl:param name="home.image"&gt;active/nav-home.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.title.size.frag">
+ &lt;xsl:param name="foil.title.size"&gt;
+ &lt;xsl:value-of select="$foil.title.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the home navigation icon.</para>
+<para>This parameter combines the value of the
+<parameter>foil.title.master</parameter> parameter with a unit
+specification. The default unit is <literal>pt</literal>
+(points).</para>
</refsection>
</refentry>
-<refentry version="5.0" id="toc.image">
+<refentry version="5.0" id="generate.copyright">
<refmeta>
-<refentrytitle>toc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.copyright</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>toc.image</refname>
-<refpurpose>ToC image</refpurpose>
+<refname>generate.copyright</refname>
+<refpurpose>Specifies whether copyright is generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="toc.image.frag">
-&lt;xsl:param name="toc.image"&gt;active/nav-toc.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.copyright.frag">
+ &lt;xsl:param name="generate.copyright"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the ToC navigation icon.</para>
+<para>This parameter specifies whether the copyright info is generated
+ in the footer area.</para>
</refsection>
</refentry>
-
-<refentry version="5.0" id="no.next.image">
+<refentry version="5.0" id="generate.foilgroup.numbered.toc">
<refmeta>
-<refentrytitle>no.next.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.foilgroup.numbered.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>no.next.image</refname>
-<refpurpose>Inactive right-arrow image</refpurpose>
+<refname>generate.foilgroup.numbered.toc</refname>
+<refpurpose>Specifies whether foilgroups have a numbered TOC</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="no.next.image.frag">
-&lt;xsl:param name="no.next.image"&gt;inactive/nav-next.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.foilgroup.numbered.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.numbered.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the inactive right-pointing navigation arrow.</para>
+<para>If TOC generation is turned on, this parameter specifies
+ whether foilgroups have a numbered TOC. If disabled, TOC items
+ will be bulleted, not numbered.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="no.prev.image">
+<refentry version="5.0" id="generate.foilgroup.toc">
<refmeta>
-<refentrytitle>no.prev.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>no.prev.image</refname>
-<refpurpose>Inactive left-arrow image</refpurpose>
+<refname>generate.foilgroup.toc</refname>
+<refpurpose>Specifies whether foilgroups have a TOC</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="no.prev.image.frag">
-&lt;xsl:param name="no.prev.image"&gt;inactive/nav-prev.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.foilgroup.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the inactive left-pointing navigation arrow.</para>
+<para>This parameter specifies whether foilgroups will
+ contain a table of contents of the included foils.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="no.up.image">
+<refentry version="5.0" id="generate.handoutnotes">
<refmeta>
-<refentrytitle>no.up.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.handoutnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>no.up.image</refname>
-<refpurpose>Inactive up-arrow image</refpurpose>
+<refname>generate.handoutnotes</refname>
+<refpurpose>Specifies whether handoutnotes are generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="no.up.image.frag">
-&lt;xsl:param name="no.up.image"&gt;inactive/nav-up.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.handoutnotes.frag">
+ &lt;xsl:param name="generate.handoutnotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the inactive upward-pointing navigation arrow.</para>
+<para>This parameter specifies whether handoutnotes shall
+ be generated to the output.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="no.home.image">
+<refentry version="5.0" id="generate.page.number">
<refmeta>
-<refentrytitle>no.home.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">full<alt>1/2</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">compact<alt>1</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>no.home.image</refname>
-<refpurpose>Inactive home image</refpurpose>
+<refname>generate.page.number</refname>
+<refpurpose>Specifies whether page numbers are generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="no.home.image.frag">
-&lt;xsl:param name="no.home.image"&gt;inactive/nav-home.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.page.number.frag">
+ &lt;xsl:param name="generate.page.number"&gt;compact&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the inactive home navigation icon.</para>
+<para>This parameter specifies how page numbers are generated in
+ the footer area.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>no</term>
+ <listitem>
+ <para>No page numbers generated at all.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>full</term>
+ <listitem>
+ <para>Current page number, a slash and the total number of pages</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>compact</term>
+ <listitem>
+ <para>Current page number only</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>no</term>
+ <listitem>
+ <para>No page numbers generated at all.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
-<refentry version="5.0" id="no.toc.image">
+<refentry version="5.0" id="generate.pubdate">
<refmeta>
-<refentrytitle>no.toc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.pubdate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>no.toc.image</refname>
-<refpurpose>Inactive ToC image</refpurpose>
+<refname>generate.pubdate</refname>
+<refpurpose>Specifies whether the pubdate is generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="no.toc.image.frag">
-&lt;xsl:param name="no.toc.image"&gt;inactive/nav-toc.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.pubdate.frag">
+ &lt;xsl:param name="generate.pubdate"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the inactive ToC navigation icon.</para>
+<para>This parameter specifies whether the publication date is generated
+ in the footer area.</para>
</refsection>
</refentry>
-
-<refentry version="5.0" id="plus.image">
+<refentry version="5.0" id="generate.speakernotes">
<refmeta>
-<refentrytitle>plus.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.speakernotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>plus.image</refname>
-<refpurpose>Plus image</refpurpose>
+<refname>generate.speakernotes</refname>
+<refpurpose>Specifies whether speakernotes are generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="plus.image.frag">
-&lt;xsl:param name="plus.image"&gt;toc/closed.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.speakernotes.frag">
+ &lt;xsl:param name="generate.speakernotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the <quote>plus</quote> image; the image used in a
-<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
-can be expanded.</para>
+<para>This parameter specifies whether speakernotes shall
+ be generated to the output.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="minus.image">
+<refentry version="5.0" id="generate.titlepage">
<refmeta>
-<refentrytitle>minus.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>generate.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>minus.image</refname>
-<refpurpose>Minus image</refpurpose>
+<refname>generate.titlepage</refname>
+<refpurpose>Specifies whether titlepage is generated</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="minus.image.frag">
-&lt;xsl:param name="minus.image"&gt;toc/open.png&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="generate.titlepage.frag">
+ &lt;xsl:param name="generate.titlepage"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the <quote>minus</quote> image; the image used in a
-<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
-can be collapsed.</para>
+<para>This parameter specifies whether titlepage is generated
+ for the presentation.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="hidetoc.image">
+<refentry version="5.0" id="mml.embedding.mode">
<refmeta>
-<refentrytitle>hidetoc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>mml.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">external-graphic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">instream-foreign-object</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>hidetoc.image</refname>
-<refpurpose>Hide ToC image</refpurpose>
+<refname>mml.embedding.mode</refname>
+<refpurpose>Specifies how inline MathML is processed</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="hidetoc.image.frag">
-&lt;xsl:param name="hidetoc.image"&gt;hidetoc.gif&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="mml.embedding.mode.fo.frag">
+ &lt;xsl:param name="mml.embedding.mode"&gt;external-graphic&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the <quote>hide ToC</quote> image. This is used
-when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
-enabled.</para>
+<para>This parameter specifies how inline MathML formulas
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>external-graphic</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>external-graphic</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>instream-foreign-object</term>
+ <listitem>
+ <para>Content is copied over with its namespace inside an
+ <markup>instream-foreign-object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
-<refentry version="5.0" id="showtoc.image">
+<refentry version="5.0" id="slide.font.family">
<refmeta>
-<refentrytitle>showtoc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>slide.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>showtoc.image</refname>
-<refpurpose>Show ToC image</refpurpose>
+<refname>slide.font.family</refname>
+<refpurpose>Specifies font family to use for slide bodies</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="showtoc.image.frag">
-&lt;xsl:param name="showtoc.image"&gt;showtoc.gif&lt;/xsl:param&gt;
+<programlisting id="slide.font.family.frag">
+&lt;xsl:param name="slide.font.family"&gt;Helvetica&lt;/xsl:param&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the <quote>show ToC</quote> image. This is used
-when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
-enabled.</para>
+<para>Specifies the font family to use for slides bodies.</para>
</refsection>
</refentry>
-</reference><reference id="javascript" xml:base="../slides/html/param.xml">
-<title>HTML: JavaScript Parameters</title>
-<refentry version="5.0" id="script.dir">
+<refentry version="5.0" id="slide.title.font.family">
<refmeta>
-<refentrytitle>script.dir</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+<refentrytitle>slide.title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>script.dir</refname>
-<refpurpose>Script directory</refpurpose>
+<refname>slide.title.font.family</refname>
+<refpurpose>Specifies font family to use for slide titles</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="script.dir.frag">
-&lt;xsl:param name="script.dir"&gt;&lt;/xsl:param&gt;
+<programlisting id="slide.title.font.family.frag">
+&lt;xsl:param name="slide.title.font.family"&gt;Helvetica&lt;/xsl:param&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Identifies the JavaScript source directory for the slides.
-This parameter can be set in the source
-document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>script-dir</literal>.</para>
-
-<para>If non-empty, this value is prepended to each of the JavaScript files.
-</para>
+<para>Specifies the font family to use for slides titles.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="ua.js">
+<refentry version="5.0" id="svg.embedding.mode">
<refmeta>
-<refentrytitle>ua.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>svg.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">external-graphic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">instream-foreign-object</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>ua.js</refname>
-<refpurpose>UA JavaScript file</refpurpose>
+<refname>svg.embedding.mode</refname>
+<refpurpose>Specifies how inline SVG is processed</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="ua.js.frag">
-&lt;xsl:param name="ua.js"&gt;ua.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="svg.embedding.mode.fo.frag">
+ &lt;xsl:param name="svg.embedding.mode"&gt;instream-foreign-object&lt;/xsl:param&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the UA JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies how inline SVG graphics
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>external-graphic</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>external-graphic</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>instream-foreign-object</term>
+ <listitem>
+ <para>Content is copied over with its namespace inside an
+ <markup>instream-foreign-object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
-<refentry version="5.0" id="xbDOM.js">
+</reference><reference id="propsets" xml:base="../slides/fo/param.xml">
+ <title>FO: Property Sets</title>
+<refentry version="5.0" id="foil.header.properties">
<refmeta>
-<refentrytitle>xbDOM.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.header.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>xbDOM.js</refname>
-<refpurpose>xbDOM JavaScript file</refpurpose>
+<refname>foil.header.properties</refname>
+<refpurpose>Specifies properties for foil header area</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="xbDOM.js.frag">
-&lt;xsl:param name="xbDOM.js"&gt;xbDOM.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.header.properties.frag">
+ &lt;xsl:attribute-set name="foil.header.properties"&gt;
+ &lt;xsl:attribute name="background-color"&gt;white&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="color"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the xbDOM JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies properties for the foil header area.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="xbStyle.js">
+<refentry version="5.0" id="foil.master.properties">
<refmeta>
-<refentrytitle>xbStyle.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.master.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>xbStyle.js</refname>
-<refpurpose>xbStyle JavaScript file</refpurpose>
+<refname>foil.master.properties</refname>
+<refpurpose>Specifies properties for foil master</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="xbStyle.js.frag">
-&lt;xsl:param name="xbStyle.js"&gt;xbStyle.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.master.properties.frag">
+ &lt;xsl:attribute-set name="foil.master.properties"&gt;
+ &lt;xsl:attribute name="page-width"&gt;
+ &lt;xsl:value-of select="$page.width"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="page-height"&gt;
+ &lt;xsl:value-of select="$page.height"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;
+ &lt;xsl:value-of select="$page.margin.top"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;
+ &lt;xsl:value-of select="$page.margin.bottom"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$page.margin.inner"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-right"&gt;
+ &lt;xsl:value-of select="$page.margin.outer"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the xbStyle JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies properties for the foil master.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="xbLibrary.js">
+<refentry version="5.0" id="foil.page-sequence.properties">
<refmeta>
-<refentrytitle>xbLibrary.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.page-sequence.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>xbLibrary.js</refname>
-<refpurpose>xbLibrary JavaScript file</refpurpose>
+<refname>foil.page-sequence.properties</refname>
+<refpurpose>Specifies properties for foil page-sequence</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="xbLibrary.js.frag">
-&lt;xsl:param name="xbLibrary.js"&gt;xbLibrary.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.page-sequence.properties.frag">
+ &lt;xsl:attribute-set name="foil.page-sequence.properties"&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;
+ &lt;xsl:value-of select="$hyphenate"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the xbLibrary JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies properties for foil page-sequence.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="xbCollapsibleLists.js">
+<refentry version="5.0" id="foil.properties">
<refmeta>
-<refentrytitle>xbCollapsibleLists.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>xbCollapsibleLists.js</refname>
-<refpurpose>xbCollapsibleLists JavaScript file</refpurpose>
+<refname>foil.properties</refname>
+<refpurpose>Specifies properties for all foils</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="xbCollapsibleLists.js.frag">
-&lt;xsl:param name="xbCollapsibleLists.js"&gt;xbCollapsibleLists.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.properties.frag">
+ &lt;xsl:attribute-set name="foil.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies properties that are applied to all foils.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="overlay.js">
+<refentry version="5.0" id="foil.region-after.properties">
<refmeta>
-<refentrytitle>overlay.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.region-after.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>overlay.js</refname>
-<refpurpose>Overlay JavaScript file</refpurpose>
+<refname>foil.region-after.properties</refname>
+<refpurpose>Specifies properties for foil region-after</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="overlay.js.frag">
-&lt;xsl:param name="overlay.js"&gt;overlay.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.region-after.properties.frag">
+ &lt;xsl:attribute-set name="foil.region-after.properties"&gt;
+ &lt;xsl:attribute name="extent"&gt;
+ &lt;xsl:value-of select="$region.after.extent"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="display-align"&gt;after&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the overlay JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies properties for the foil region-after.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="slides.js">
+<refentry version="5.0" id="foil.region-before.properties">
<refmeta>
-<refentrytitle>slides.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+<refentrytitle>foil.region-before.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>slides.js</refname>
-<refpurpose>Slides overlay file</refpurpose>
+<refname>foil.region-before.properties</refname>
+<refpurpose>Specifies properties for foil region-before</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="slides.js.frag">
-&lt;xsl:param name="slides.js"&gt;slides.js&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.region-before.properties.frag">
+ &lt;xsl:attribute-set name="foil.region-before.properties"&gt;
+ &lt;xsl:attribute name="extent"&gt;
+ &lt;xsl:value-of select="$region.before.extent"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="display-align"&gt;
+ &lt;xsl:value-of select="'before'"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the filename of the slides JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
+<para>This parameter specifies properties for the foil region-before.</para>
</refsection>
</refentry>
-</reference><reference id="l10n" xml:base="../slides/html/param.xml">
-<title>HTML: Localization Parameters</title>
-<refentry version="5.0" id="text.home">
+<refentry version="5.0" id="foil.region-body.properties">
<refmeta>
-<refentrytitle>text.home</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+<refentrytitle>foil.region-body.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>text.home</refname>
-<refpurpose>Home</refpurpose>
+<refname>foil.region-body.properties</refname>
+<refpurpose>Specifies properties for foil region-body</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="text.home.frag">
-&lt;xsl:param name="text.home"&gt;Home&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.region-body.properties.frag">
+ &lt;xsl:attribute-set name="foil.region-body.properties"&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;
+ &lt;xsl:value-of select="$body.margin.bottom"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;
+ &lt;xsl:value-of select="$body.margin.top"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="column-count"&gt;
+ &lt;xsl:value-of select="$column.count.body"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
+<para>This parameter specifies properties for the foil region-body.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="text.toc">
+<refentry version="5.0" id="foil.subtitle.properties">
<refmeta>
-<refentrytitle>text.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+<refentrytitle>foil.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>text.toc</refname>
-<refpurpose>FIXME:</refpurpose>
+<refname>foil.subtitle.properties</refname>
+<refpurpose>Specifies properties for all foil subtitles</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="text.toc.frag">
-&lt;xsl:param name="text.toc"&gt;ToC&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.subtitle.properties.frag">
+ &lt;xsl:attribute-set name="foil.subtitle.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.master * 0.8"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
+<para>This parameter specifies properties that are applied to all foil subtitles.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="text.prev">
+<refentry version="5.0" id="foil.title.properties">
<refmeta>
-<refentrytitle>text.prev</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+<refentrytitle>foil.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>text.prev</refname>
-<refpurpose>FIXME:</refpurpose>
+<refname>foil.title.properties</refname>
+<refpurpose>Specifies properties for foil title</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="text.prev.frag">
-&lt;xsl:param name="text.prev"&gt;Prev&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.title.properties.frag">
+ &lt;xsl:attribute-set name="foil.title.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
+<para>This parameter specifies properties for the foil title.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="text.up">
+<refentry version="5.0" id="foil.footer.properties">
<refmeta>
-<refentrytitle>text.up</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+<refentrytitle>foil.footer.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>text.up</refname>
-<refpurpose>FIXME:</refpurpose>
+<refname>foil.footer.properties</refname>
+<refpurpose>Specifies properties for slides footer</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="text.up.frag">
-&lt;xsl:param name="text.up"&gt;Up&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="foil.footer.properties.frag">
+ &lt;xsl:attribute-set name="foil.footer.properties"&gt;&lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
+<para>This parameter specifies properties for the foil footer.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="text.next">
+<refentry version="5.0" id="handoutnotes.properties">
<refmeta>
-<refentrytitle>text.next</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
+<refentrytitle>handoutnotes.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
<refnamediv>
-<refname>text.next</refname>
-<refpurpose>FIXME:</refpurpose>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to handoutnotes
+</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="text.next.frag">
-&lt;xsl:param name="text.next"&gt;Next&lt;/xsl:param&gt;
+<programlisting id="handoutnotes.properties.frag">
+&lt;xsl:attribute-set name="handoutnotes.properties"&gt;&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
+<para>This attribute set is applied to handoutnotes.</para>
</refsection>
</refentry>
-
-
-</reference>
- <reference id="fo" xml:base="../slides/fo/param.xml">
- <title>FO: General Params</title>
-<refentry version="5.0" id="slide.title.font.family">
+<refentry version="5.0" id="slides.properties">
<refmeta>
-<refentrytitle>slide.title.font.family</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
-<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+<refentrytitle>slides.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>slide.title.font.family</refname>
-<refpurpose>Specifies font family to use for slide titles</refpurpose>
+<refname>slides.properties</refname>
+<refpurpose>Specifies properties for all slides</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="slide.title.font.family.frag">
-&lt;xsl:param name="slide.title.font.family"&gt;Helvetica&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slides.properties.frag">
+ &lt;xsl:attribute-set name="slides.properties"&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the font family to use for slides titles.</para>
+<para>This parameter specifies properties that are applied to all slides.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="slide.font.family">
+<refentry version="5.0" id="slides.titlepage.master.properties">
<refmeta>
-<refentrytitle>slide.font.family</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
-<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+<refentrytitle>slides.titlepage.master.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>slide.font.family</refname>
-<refpurpose>Specifies font family to use for slide bodies</refpurpose>
+<refname>slides.titlepage.master.properties</refname>
+<refpurpose>Specifies properties for slides titlepage master</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="slide.font.family.frag">
-&lt;xsl:param name="slide.font.family"&gt;Helvetica&lt;/xsl:param&gt;
-</programlisting>
+ <programlisting id="slides.titlepage.master.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.master.properties"&gt;
+ &lt;xsl:attribute name="page-width"&gt;
+ &lt;xsl:value-of select="$page.width"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="page-height"&gt;
+ &lt;xsl:value-of select="$page.height"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;
+ &lt;xsl:value-of select="$page.margin.top"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;
+ &lt;xsl:value-of select="$page.margin.bottom"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$page.margin.inner"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-right"&gt;
+ &lt;xsl:value-of select="$page.margin.outer"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the font family to use for slides bodies.</para>
+<para>This parameter specifies properties for the slides titlepage master.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="foil.title.master">
+<refentry version="5.0" id="slides.titlepage.region-body.properties">
<refmeta>
-<refentrytitle>foil.title.master</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+<refentrytitle>slides.titlepage.region-body.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.title.master</refname>
-<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
+<refname>slides.titlepage.region-body.properties</refname>
+<refpurpose>Specifies properties for slides titlepage region-body</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting id="foil.title.master.frag">
-&lt;xsl:param name="foil.title.master"&gt;36&lt;/xsl:param&gt;
-&lt;!-- Inconsistant use of point size? --&gt;
-</programlisting>
+ <programlisting id="slides.titlepage.region-body.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.region-body.properties"&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="column-count"&gt;
+ &lt;xsl:value-of select="$column.count.body"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies a unitless font size to use for foil titles; used in
-combination with the <parameter>foil.title.size</parameter>
-parameter.</para>
+<para>This parameter specifies properties for the slides titlepage region-body.</para>
+
</refsection>
</refentry>
-<refentry version="5.0" id="foil.title.size">
+<refentry version="5.0" id="slides.titlepage.corpauthor.properties">
<refmeta>
-<refentrytitle>foil.title.size</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+<refentrytitle>slides.titlepage.corpauthor.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.title.size</refname>
-<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
+<refname>slides.titlepage.corpauthor.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="foil.title.size.frag">
- &lt;xsl:param name="foil.title.size"&gt;
- &lt;xsl:value-of select="$foil.title.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
- &lt;/xsl:param&gt;
+ <programlisting id="slides.titlepage.corpauthor.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.corpauthor.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;20.736pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter combines the value of the
-<parameter>foil.title.master</parameter> parameter with a unit
-specification. The default unit is <literal>pt</literal>
-(points).</para>
+<para>This parameter specifies properties for the corpauthor on the default
+ titlepage.</para>
</refsection>
</refentry>
-</reference><reference id="propsets" xml:base="../slides/fo/param.xml">
- <title>FO: Property Sets</title>
-<refentry version="5.0" id="slides.properties">
+<refentry version="5.0" id="slides.titlepage.title.properties">
<refmeta>
-<refentrytitle>slides.properties</refentrytitle>
+<refentrytitle>slides.titlepage.title.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>slides.properties</refname>
-<refpurpose>Specifies properties for all slides</refpurpose>
+<refname>slides.titlepage.title.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="slides.properties.frag">
- &lt;xsl:attribute-set name="slides.properties"&gt;
+ <programlisting id="slides.titlepage.title.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.title.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-top"&gt;1.5in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
@@ -28441,26 +28772,29 @@ specification. The default unit is <literal>pt</literal>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all slides.</para>
+<para>This parameter specifies properties for the title on the default
+ titlepage.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="foilgroup.properties">
+<refentry version="5.0" id="slides.titlepage.subtitle.properties">
<refmeta>
-<refentrytitle>foilgroup.properties</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+<refentrytitle>slides.titlepage.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foilgroup.properties</refname>
-<refpurpose>Specifies properties for all foilgroups</refpurpose>
+<refname>slides.titlepage.subtitle.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="foilgroup.properties.frag">
- &lt;xsl:attribute-set name="foilgroup.properties"&gt;
+ <programlisting id="slides.titlepage.subtitle.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.subtitle.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
@@ -28468,130 +28802,112 @@ specification. The default unit is <literal>pt</literal>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all foilgroups.</para>
+<para>This parameter specifies properties for the subtitle on the default
+ titlepage.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="foil.subtitle.properties">
+<refentry version="5.0" id="slides.titlepage.author.properties">
<refmeta>
-<refentrytitle>foil.subtitle.properties</refentrytitle>
+<refentrytitle>slides.titlepage.author.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.subtitle.properties</refname>
-<refpurpose>Specifies properties for all foil subtitles</refpurpose>
+<refname>slides.titlepage.author.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="foil.subtitle.properties.frag">
- &lt;xsl:attribute-set name="foil.subtitle.properties"&gt;
- &lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
- &lt;/xsl:attribute&gt;
+ <programlisting id="slides.titlepage.author.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.author.properties"&gt;
&lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;
- &lt;xsl:value-of select="$foil.title.master * 0.8"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
- &lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="space-after"&gt;12pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;20.736pt&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all foil subtitles.</para>
+<para>This parameter specifies properties for the author on the default
+ titlepage.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="foil.properties">
+<refentry version="5.0" id="slides.titlepage.pubdate.properties">
<refmeta>
-<refentrytitle>foil.properties</refentrytitle>
+<refentrytitle>slides.titlepage.pubdate.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.properties</refname>
-<refpurpose>Specifies properties for all foils</refpurpose>
+<refname>slides.titlepage.pubdate.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="foil.properties.frag">
- &lt;xsl:attribute-set name="foil.properties"&gt;
- &lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
- &lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;1in&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;1in&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;
- &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
- &lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ <programlisting id="slides.titlepage.pubdate.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.pubdate.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;17.28pt&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all foils.</para>
+<para>This parameter specifies properties for the pubdate on the default
+ titlepage.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="speakernote.properties">
+<refentry version="5.0" id="slides.titlepage.authorgroup.properties">
<refmeta>
-<refentrytitle>speakernote.properties</refentrytitle>
+<refentrytitle>slides.titlepage.authorgroup.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>speakernote.properties</refname>
-<refpurpose>Specifies properties for all speakernotes</refpurpose>
+<refname>slides.titlepage.authorgroup.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="speakernote.properties.frag">
- &lt;xsl:attribute-set name="speakernote.properties"&gt;
- &lt;xsl:attribute name="font-family"&gt;Times Roman&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-style"&gt;italic&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;12pt&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
- &lt;/xsl:attribute-set&gt;
+ <programlisting id="slides.titlepage.authorgroup.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.authorgroup.properties"&gt;&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all speakernotes.</para>
+<para>This parameter specifies properties for the authorgroup on the default
+ titlepage.</para>
</refsection>
</refentry>
-<refentry version="5.0" id="running.foot.properties">
+<refentry version="5.0" id="speakernotes.properties">
<refmeta>
-<refentrytitle>running.foot.properties</refentrytitle>
+<refentrytitle>speakernotes.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
-</refmeta>
+</refmeta>
<refnamediv>
-<refname>running.foot.properties</refname>
-<refpurpose>Specifies properties for running foot on each slide</refpurpose>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to speakernotes
+</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting id="running.foot.properties.frag">
- &lt;xsl:attribute-set name="running.foot.properties"&gt;
- &lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
- &lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;14pt&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="color"&gt;#9F9F9F&lt;/xsl:attribute&gt;
- &lt;/xsl:attribute-set&gt;
- </programlisting>
+<programlisting id="speakernotes.properties.frag">
+&lt;xsl:attribute-set name="speakernotes.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to the
-running foot area of each slide.</para>
+<para>This attribute set is applied to speakernotes.</para>
</refsection>
</refentry>
@@ -34672,7 +34988,7 @@ unchanged.</para>
<info xml:base="../fo/table.xml">
<title>Formatting Object Table Reference</title>
<releaseinfo role="meta">
- $Id: table.xsl 9345 2012-05-11 03:46:46Z bobstayton $
+ $Id: table.xsl 9666 2012-11-14 04:42:56Z bobstayton $
</releaseinfo>
</info>
<partintro id="partintro" xml:base="../fo/table.xml">
@@ -34807,7 +35123,7 @@ proportional-column-width() function.</para>
<info xml:base="../template/titlepage.xml">
<title>Titlepage Template Stylesheet Reference</title>
<releaseinfo role="meta">
- $Id: titlepage.xsl 9394 2012-06-02 21:18:04Z bobstayton $
+ $Id: titlepage.xsl 9600 2012-09-11 12:12:09Z kosek $
</releaseinfo>
</info>
<partintro id="intro_partintro" xml:base="../template/titlepage.xml">
diff --git a/eclipse/profile-eclipse.xsl b/eclipse/profile-eclipse.xsl
index 2d18914..0fcf390 100644
--- a/eclipse/profile-eclipse.xsl
+++ b/eclipse/profile-eclipse.xsl
@@ -31,7 +31,7 @@
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -44,7 +44,7 @@
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
<xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:call-template name="etoc"/>
<xsl:call-template name="plugin.xml"/>
<xsl:call-template name="helpidx"/>
@@ -87,13 +87,13 @@
<xsl:variable name="title">
<xsl:if test="$eclipse.autolabel=1">
<xsl:variable name="label.markup">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="label.markup"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="label.markup"/>
</xsl:variable>
<xsl:if test="normalize-space($label.markup)">
<xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
</xsl:if>
</xsl:if>
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="title.markup"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="title.markup"/>
</xsl:variable>
<xsl:variable name="href">
<xsl:call-template name="href.target.with.base.dir">
@@ -102,7 +102,7 @@
</xsl:variable>
<toc label="{normalize-space($title)}" topic="{$href}">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]/*" mode="etoc"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]/*" mode="etoc"/>
</toc>
</xsl:when>
diff --git a/epub3/epub3-chunk-mods.xsl b/epub3/epub3-chunk-mods.xsl
index b4ea68d..7aa6901 100644
--- a/epub3/epub3-chunk-mods.xsl
+++ b/epub3/epub3-chunk-mods.xsl
@@ -28,6 +28,7 @@
<!-- EPUB3: customize to generate package files -->
<xsl:template match="*" mode="process.root" priority="2">
+ <xsl:call-template name="check.for.xalan"/>
<xsl:apply-templates select="."/>
<xsl:call-template name="generate.css.files"/>
@@ -35,4 +36,16 @@
</xsl:template>
+<xsl:template name="check.for.xalan">
+ <xsl:if test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <xsl:message terminate="yes">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>FATAL ERROR: </xsl:text>
+ <xsl:text>Xalan processor not supported by DocBook Epub3 stylesheets. </xsl:text>
+ <xsl:text>Xalan does not properly support XSL output method="text", </xsl:text>
+ <xsl:text>which is required for the various epub support files.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+</xsl:template>
+
</xsl:stylesheet>
diff --git a/epub3/epub3-element-mods.xsl b/epub3/epub3-element-mods.xsl
index 64f2629..8ba786d 100644
--- a/epub3/epub3-element-mods.xsl
+++ b/epub3/epub3-element-mods.xsl
@@ -52,6 +52,9 @@ article toc,title,figure,table,example,equation
<xsl:param name="base.dir" select="'OEBPS/'"/>
<xsl:param name="index.links.to.section" select="0"/>
+<!-- Epub does not yet support external links -->
+<xsl:param name="activate.external.olinks" select="0"/>
+
<!-- Turning this on crashes ADE, which is unbelievably awesome -->
<xsl:param name="formal.object.break.after">0</xsl:param>
@@ -135,17 +138,17 @@ article toc,title,figure,table,example,equation
<xsl:param name="editor.property">contributor</xsl:param>
<!-- Generate full output path -->
-<xsl:param name="epub.package.dir" select="concat($base.dir, '../')"/>
+<xsl:param name="epub.package.dir" select="concat($chunk.base.dir, '../')"/>
<xsl:param name="epub.ncx.pathname"
- select="concat($base.dir, $epub.ncx.filename)"/>
+ select="concat($chunk.base.dir, $epub.ncx.filename)"/>
<xsl:param name="epub.container.pathname"
select="concat($epub.package.dir, $epub.metainf.dir,
$epub.container.filename)"/>
<xsl:param name="epub.package.pathname"
- select="concat($base.dir, $epub.package.filename)"/>
+ select="concat($chunk.base.dir, $epub.package.filename)"/>
<xsl:param name="epub.cover.pathname"
- select="concat($base.dir, $epub.cover.filename)"/>
+ select="concat($chunk.base.dir, $epub.cover.filename)"/>
<xsl:param name="epub.mimetype.pathname"
select="concat($epub.package.dir, $epub.mimetype.filename)"/>
@@ -637,31 +640,41 @@ article toc,title,figure,table,example,equation
YYYY, YYYY-MM or YYYY-MM-DD -->
<xsl:template name="format.meta.date">
<xsl:param name="string" select="''"/>
+ <xsl:param name="node" select="."/>
- <!-- FIXME: this needs further work, so just return the date string for now -->
- <xsl:variable name="date">
+ <!-- FIXME: this needs further work, so just check the
+ string format and return the date string for now -->
+ <xsl:variable name="normalized"
+ select="translate($string, '0123456789', '##########')"/>
+
+ <xsl:variable name="date.ok">
<xsl:choose>
- <xsl:when test="string-length($string) = 0">
- </xsl:when>
- <xsl:otherwise>
- <!-- construct a date one digit at a time until it fails to match format -->
- <xsl:if test="contains('1234567890', substring($string,1,1))">
- <xsl:value-of select="substring($string,1,1)"/>
- </xsl:if>
- <xsl:if test="contains('1234567890', substring($string,2,1))">
- <xsl:value-of select="substring($string,2,1)"/>
- </xsl:if>
- <xsl:if test="contains('1234567890', substring($string,3,1))">
- <xsl:value-of select="substring($string,3,1)"/>
- </xsl:if>
- <xsl:if test="contains('1234567890', substring($string,4,1))">
- <xsl:value-of select="substring($string,4,1)"/>
- </xsl:if>
- <!-- FIXME: continue -->
- </xsl:otherwise>
+ <xsl:when test="string-length($string) = 4 and
+ $normalized = '####'">1</xsl:when>
+ <xsl:when test="string-length($string) = 7 and
+ $normalized = '####-##'">1</xsl:when>
+ <xsl:when test="string-length($string) = 10 and
+ $normalized = '####-##-##'">1</xsl:when>
+ <xsl:when test="string-length($string) = 10 and
+ $normalized = '####-##-##'">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
+ <xsl:if test="$date.ok = 0">
+ <xsl:message>
+ <xsl:text>WARNING: wrong metadata date format: '</xsl:text>
+ <xsl:value-of select="$string"/>
+ <xsl:text>' in element </xsl:text>
+ <xsl:value-of select="local-name($node/..)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="local-name($node)"/>
+ <xsl:text>. It must be in one of these forms: </xsl:text>
+ <xsl:text>YYYY, YYYY-MM, or YYYY-MM-DD.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <!-- return the string anyway -->
<xsl:value-of select="$string"/>
</xsl:template>
@@ -1224,12 +1237,20 @@ article toc,title,figure,table,example,equation
<xsl:variable name="object" select="$olist[position() = $object.index]"/>
- <xsl:variable name="image.filename">
+ <xsl:variable name="output_filename">
<xsl:call-template name="mediaobject.filename">
<xsl:with-param name="object" select="$object"/>
</xsl:call-template>
</xsl:variable>
+ <xsl:variable name="image.filename">
+ <xsl:if test="$img.src.path != '' and
+ not(starts-with($output_filename, '/')) and
+ not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:if>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:variable>
<xsl:variable name="image.extension">
<xsl:call-template name="filename-extension">
<xsl:with-param name="filename" select="$image.filename"/>
@@ -1396,34 +1417,60 @@ article toc,title,figure,table,example,equation
<xsl:choose>
<xsl:when test="$next.chunk">
<xsl:variable name="this.imagedata"
- select="$this.chunk//imagedata"/>
+ select="$this.chunk//mediaobject"/>
<xsl:variable name="before.next"
- select="$next.chunk/preceding::imagedata"/>
+ select="$next.chunk/preceding::mediaobject"/>
<!-- select for an SVG imagedata in the intersection of them -->
- <xsl:variable name="intersection"
+ <xsl:variable name="mediaobject.set"
select="$this.imagedata[count(.|$before.next) = count($before.next)]"/>
+ <xsl:variable name="svg.imagedata">
+ <xsl:for-each select="$mediaobject.set">
+ <xsl:variable name="olist" select="imageobject[not(@role = 'poster')] |
+ imageobjectco"/>
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="object" select="$olist[position() = $mediaobject.index]"/>
+ <xsl:if test="$object/imagedata[contains(
+ substring(@fileref, string-length(@fileref)-3,4), '.svg')]">
+ <xsl:text>svg</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
- <xsl:variable name="svg.imagedata"
- select="$intersection[contains(
- substring(@fileref, string-length(@fileref)-3,4), '.svg')]"/>
-
- <xsl:if test="count($svg.imagedata) != 0">
+ <xsl:if test="contains($svg.imagedata, 'svg')">
<xsl:text>svg</xsl:text>
</xsl:if>
</xsl:when>
<xsl:otherwise>
- <xsl:variable name="this.imagedata"
- select="$this.chunk//imagedata"/>
- <xsl:variable name="svg.imagedata"
- select="$this.imagedata[contains(
- substring(@fileref, string-length(@fileref)-3,4), '.svg')]"/>
- <xsl:if test="count($svg.imagedata) != 0">
+ <xsl:variable name="mediaobject.set"
+ select="$this.chunk//mediaobject"/>
+ <xsl:variable name="svg.imagedata">
+ <xsl:for-each select="$mediaobject.set">
+ <xsl:variable name="olist" select="imageobject[not(@role = 'poster')] |
+ imageobjectco"/>
+ <xsl:variable name="mediaobject.index">
+ <xsl:call-template name="select.mediaobject.index">
+ <xsl:with-param name="olist" select="$olist"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="object" select="$olist[position() = $mediaobject.index]"/>
+ <xsl:if test="$object/imagedata[contains(
+ substring(@fileref, string-length(@fileref)-3,4), '.svg')]">
+ <xsl:text>svg</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:if test="contains($svg.imagedata, 'svg')">
<xsl:text>svg</xsl:text>
</xsl:if>
-
</xsl:otherwise>
</xsl:choose>
+
</xsl:template>
<xsl:template name="mathml.property">
@@ -1563,12 +1610,21 @@ article toc,title,figure,table,example,equation
<xsl:param name="object" select="."/>
<xsl:if test="$object">
- <xsl:variable name="image.filename">
+ <xsl:variable name="output_filename">
<xsl:call-template name="mediaobject.filename">
<xsl:with-param name="object" select="$object"/>
</xsl:call-template>
</xsl:variable>
+ <xsl:variable name="image.filename">
+ <xsl:if test="$img.src.path != '' and
+ not(starts-with($output_filename, '/')) and
+ not(contains($output_filename, '://'))">
+ <xsl:value-of select="$img.src.path"/>
+ </xsl:if>
+ <xsl:value-of select="$output_filename"/>
+ </xsl:variable>
+
<xsl:variable name="image.extension">
<xsl:call-template name="filename-extension">
<xsl:with-param name="filename" select="$image.filename"/>
@@ -1785,6 +1841,7 @@ article toc,title,figure,table,example,equation
<xsl:choose>
<xsl:when test="$root.is.a.chunk != '0'">
<xsl:apply-templates select="/*" mode="ncx" />
+ <xsl:apply-templates select="/*/*" mode="ncx" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="/*/*" mode="ncx" />
@@ -1895,7 +1952,11 @@ article toc,title,figure,table,example,equation
<xsl:value-of select="$href"/>
</xsl:attribute>
</xsl:element>
- <xsl:apply-templates select="book[parent::set]|part|reference|preface|chapter|bibliography|appendix|article|topic|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv[title]|setindex|index" mode="ncx"/>
+ <xsl:if test="$depth != 0">
+ <!-- Don't recurse on root element, but treat it as a single point so
+ the progress bar shows all top level children -->
+ <xsl:apply-templates select="book[parent::set]|part|reference|preface|chapter|bibliography|appendix|article|topic|glossary|section|sect1|sect2|sect3|sect4|sect5|refentry|colophon|bibliodiv[title]|setindex|index" mode="ncx"/>
+ </xsl:if>
</xsl:element>
</xsl:template>
@@ -1986,6 +2047,12 @@ article toc,title,figure,table,example,equation
</xsl:template>
<xsl:template name="container">
+ <!-- The path in rootfile does not include all of base.dir, only the last part -->
+ <xsl:variable name="full-path-dir">
+ <xsl:call-template name="filename-basename">
+ <xsl:with-param name="filename" select="$chunk.base.dir"/>
+ </xsl:call-template>
+ </xsl:variable>
<xsl:call-template name="write.chunk">
<xsl:with-param name="filename">
<xsl:value-of select="$epub.container.pathname" />
@@ -2004,7 +2071,7 @@ article toc,title,figure,table,example,equation
<xsl:element namespace="urn:oasis:names:tc:opendocument:xmlns:container" name="rootfile">
<xsl:attribute name="full-path">
<xsl:value-of
- select="concat($epub.oebps.dir, '/', $epub.package.filename)"/>
+ select="concat($full-path-dir, $epub.package.filename)"/>
</xsl:attribute>
<xsl:attribute name="media-type">
<xsl:text>application/oebps-package+xml</xsl:text>
@@ -2016,7 +2083,7 @@ article toc,title,figure,table,example,equation
</xsl:call-template>
</xsl:template>
-<xsl:template name="mimetype">'
+<xsl:template name="mimetype">
<xsl:call-template name="write.text.chunk">
<xsl:with-param name="filename" select="$epub.mimetype.pathname"/>
<xsl:with-param name="content" select="$epub.mimetype.value"/>
diff --git a/extensions/webhelpindexer.jar b/extensions/webhelpindexer.jar
index 89d5119..c71d3c4 100644
--- a/extensions/webhelpindexer.jar
+++ b/extensions/webhelpindexer.jar
Binary files differ
diff --git a/fo/admon.xsl b/fo/admon.xsl
index 4f69be4..67bf158 100644
--- a/fo/admon.xsl
+++ b/fo/admon.xsl
@@ -4,7 +4,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: admon.xsl 7248 2007-08-18 06:50:21Z mzjn $
+ $Id: admon.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -46,8 +46,7 @@
</xsl:variable>
<xsl:choose>
- <xsl:when test="$passivetex.extensions != 0
- or $fop.extensions != 0
+ <xsl:when test="$fop.extensions != 0
or $arbortext.extensions != 0">
<xsl:value-of select="$filename"/>
</xsl:when>
diff --git a/fo/autoidx.xsl b/fo/autoidx.xsl
index 920760f..1438118 100644
--- a/fo/autoidx.xsl
+++ b/fo/autoidx.xsl
@@ -13,7 +13,7 @@
version="1.0">
<!-- ********************************************************************
- $Id: autoidx.xsl 8399 2009-04-08 07:37:42Z bobstayton $
+ $Id: autoidx.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the DocBook XSL Stylesheet distribution.
@@ -334,16 +334,7 @@
</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:copy-of select="$page-number-citations"/>
</xsl:otherwise>
</xsl:choose>
@@ -461,16 +452,7 @@
</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:copy-of select="$page-number-citations"/>
</xsl:otherwise>
</xsl:choose>
@@ -591,16 +573,7 @@
</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:copy-of select="$page-number-citations"/>
</xsl:otherwise>
</xsl:choose>
@@ -733,9 +706,7 @@
<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:copy-of select="$number.separator"/>
<xsl:call-template name="reference">
<xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
<xsl:with-param name="scope" select="$scope"/>
@@ -1145,7 +1116,7 @@
</xsl:call-template>
</xsl:variable>
- <xsl:text>&lt;phrase fole="pageno"&gt;</xsl:text>
+ <xsl:text>&lt;phrase role="pageno"&gt;</xsl:text>
<xsl:if test="$target[1]/@id or $target[1]/@xml:id">
<xsl:text>&lt;link linkend="</xsl:text>
<xsl:value-of select="$id"/>
diff --git a/fo/autotoc.xsl b/fo/autotoc.xsl
index a482343..be907bb 100644
--- a/fo/autotoc.xsl
+++ b/fo/autotoc.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: autotoc.xsl 9293 2012-04-19 18:42:11Z bobstayton $
+ $Id: autotoc.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -750,7 +750,7 @@
</xsl:variable>
<xsl:choose>
- <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0">
+ <xsl:when test="$fop.extensions != 0">
<xsl:value-of select="concat($depth*$toc.indent.width, 'pt')"/>
</xsl:when>
<xsl:otherwise>
diff --git a/fo/callout.xsl b/fo/callout.xsl
index 2b7741d..e539b8f 100644
--- a/fo/callout.xsl
+++ b/fo/callout.xsl
@@ -8,7 +8,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: callout.xsl 8988 2011-04-06 15:56:33Z kosek $
+ $Id: callout.xsl 9668 2012-11-28 00:47:59Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -84,14 +84,64 @@
</xsl:template>
<xsl:template match="co">
- <fo:inline>
- <xsl:call-template name="anchor"/>
- <xsl:apply-templates select="." mode="callout-bug"/>
- </fo:inline>
+ <xsl:param name="coref"/>
+ <!-- link to the callout? -->
+ <xsl:variable name="linkend">
+ <xsl:choose>
+ <!-- if more than one target, choose the first -->
+ <xsl:when test="contains(normalize-space(@linkends), ' ')">
+ <xsl:value-of select="substring-before(normalize-space(@linkends), ' ')"/>
+ </xsl:when>
+ <xsl:when test="string-length(normalize-space(@linkends)) != 0">
+ <xsl:value-of select="normalize-space(@linkends)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string-length($linkend) != 0">
+ <fo:basic-link internal-destination="{$linkend}">
+ <xsl:choose>
+ <xsl:when test="$coref">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$coref"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:otherwise>
+ <fo:inline>
+ <xsl:choose>
+ <xsl:when test="$coref">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="node" select="$coref"/>
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="conditional" select="0"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="." mode="callout-bug"/>
+ </fo:inline>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="coref">
- <!-- tricky; this relies on the fact that we can process the "co" that's -->
+ <!-- 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)"/>
@@ -109,10 +159,10 @@
</xsl:message>
</xsl:when>
<xsl:otherwise>
- <fo:inline>
- <xsl:call-template name="anchor"/>
- <xsl:apply-templates select="$co" mode="callout-bug"/>
- </fo:inline>
+ <!-- process it as if it were the co itself -->
+ <xsl:apply-templates select="$co">
+ <xsl:with-param name="coref" select="."/>
+ </xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -143,8 +193,7 @@
width="{$callout.icon.size}">
<xsl:attribute name="src">
<xsl:choose>
- <xsl:when test="$passivetex.extensions != 0
- or $fop.extensions != 0
+ <xsl:when test="$fop.extensions != 0
or $arbortext.extensions != 0">
<xsl:value-of select="$filename"/>
</xsl:when>
diff --git a/fo/component.xsl b/fo/component.xsl
index b14a6f9..cc11b8e 100644
--- a/fo/component.xsl
+++ b/fo/component.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: component.xsl 9293 2012-04-19 18:42:11Z bobstayton $
+ $Id: component.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -51,14 +51,6 @@
</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 -->
@@ -721,14 +713,6 @@
</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>
diff --git a/fo/division.xsl b/fo/division.xsl
index 9ab691d..16a13d8 100644
--- a/fo/division.xsl
+++ b/fo/division.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: division.xsl 9124 2011-10-09 21:04:08Z bobstayton $
+ $Id: division.xsl 9730 2013-03-15 15:26:25Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -29,14 +29,6 @@
</xsl:apply-templates>
</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">
@@ -501,14 +493,14 @@
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="nodes" select="reference|
- preface|
- chapter|
- appendix|
- article|
- bibliography|
- glossary|
- index"/>
+ <xsl:variable name="nodes" select="$part/reference|
+ $part/preface|
+ $part/chapter|
+ $part/appendix|
+ $part/article|
+ $part/bibliography|
+ $part/glossary|
+ $part/index"/>
<xsl:if test="count($nodes) &gt; 0 and contains($toc.params, 'toc')">
<fo:page-sequence hyphenate="{$hyphenate}"
diff --git a/fo/docbook.xsl b/fo/docbook.xsl
index 6bed121..4710795 100644
--- a/fo/docbook.xsl
+++ b/fo/docbook.xsl
@@ -13,7 +13,7 @@
<xsl:output method="xml" indent="no"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -80,7 +80,6 @@
<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"/>
diff --git a/fo/ebnf.xsl b/fo/ebnf.xsl
index 09dcb11..27847aa 100644
--- a/fo/ebnf.xsl
+++ b/fo/ebnf.xsl
@@ -6,7 +6,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ $Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -18,7 +18,7 @@
<doc:reference xmlns="">
<referenceinfo>
<releaseinfo role="meta">
-$Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+$Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
</releaseinfo>
<author><surname>Walsh</surname>
<firstname>Norman</firstname></author>
@@ -99,7 +99,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
<fo:table-cell>
<fo:block text-align="start">
<xsl:text>[</xsl:text>
- <xsl:number count="production" level="any"/>
+ <xsl:apply-templates select="." mode="label.markup"/>
<xsl:text>]</xsl:text>
</fo:block>
</fo:table-cell>
diff --git a/fo/fo.xsl b/fo/fo.xsl
index 854098f..d3f2285 100644
--- a/fo/fo.xsl
+++ b/fo/fo.xsl
@@ -4,7 +4,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: fo.xsl 8287 2009-03-06 23:53:33Z bobstayton $
+ $Id: fo.xsl 9720 2013-01-31 18:24:47Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -93,11 +93,11 @@
</xsl:variable>
<xsl:choose>
- <xsl:when test="$dingbat.font.family = ''">
+ <xsl:when test="$dingbat.fontset = ''">
<xsl:copy-of select="$symbol"/>
</xsl:when>
<xsl:otherwise>
- <fo:inline font-family="{$dingbat.font.family}">
+ <fo:inline font-family="{$dingbat.fontset}">
<xsl:copy-of select="$symbol"/>
</fo:inline>
</xsl:otherwise>
diff --git a/fo/graphics.xsl b/fo/graphics.xsl
index 5937278..2f50c41 100644
--- a/fo/graphics.xsl
+++ b/fo/graphics.xsl
@@ -14,7 +14,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: graphics.xsl 9346 2012-05-11 03:47:30Z bobstayton $
+ $Id: graphics.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -33,9 +33,6 @@
<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>
@@ -62,9 +59,6 @@
<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>
@@ -98,10 +92,17 @@
<xsl:template match="screenshot">
<fo:block>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
+<xsl:template match="screenshot/title">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
<xsl:template match="screeninfo">
</xsl:template>
@@ -473,6 +474,7 @@
</xsl:when>
<xsl:otherwise>
<fo:block>
+ <xsl:call-template name="anchor"/>
<xsl:if test="@align">
<xsl:attribute name="text-align">
<xsl:value-of select="@align"/>
@@ -763,7 +765,7 @@
<!-- ==================================================================== -->
-<xsl:template match="mediaobject/caption">
+<xsl:template match="mediaobject/caption|figure/caption">
<fo:block>
<xsl:if test="@align = 'right' or @align = 'left' or @align='center'">
<xsl:attribute name="text-align"><xsl:value-of
@@ -779,8 +781,7 @@
<xsl:param name="filename"/>
<xsl:choose>
- <xsl:when test="$passivetex.extensions != 0
- or $fop.extensions != 0">
+ <xsl:when test="$fop.extensions != 0">
<xsl:value-of select="$filename"/>
</xsl:when>
<xsl:otherwise>
diff --git a/fo/htmltbl.xsl b/fo/htmltbl.xsl
index 479275c..c323e5a 100644
--- a/fo/htmltbl.xsl
+++ b/fo/htmltbl.xsl
@@ -4,7 +4,7 @@
version="1.0">
<!-- ********************************************************************
- $Id: htmltbl.xsl 9196 2012-01-18 17:51:39Z bobstayton $
+ $Id: htmltbl.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -35,8 +35,7 @@
<fo:table xsl:use-attribute-sets="table.table.properties">
<xsl:choose>
<xsl:when test="$fop.extensions != 0 or
- $fop1.extensions != 0 or
- $passivetex.extensions != 0">
+ $fop1.extensions != 0">
<xsl:attribute name="table-layout">fixed</xsl:attribute>
</xsl:when>
</xsl:choose>
diff --git a/fo/inline.xsl b/fo/inline.xsl
index 60abd77..b69dac2 100644
--- a/fo/inline.xsl
+++ b/fo/inline.xsl
@@ -10,7 +10,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: inline.xsl 9228 2012-02-01 21:50:25Z bobstayton $
+ $Id: inline.xsl 9718 2013-01-30 18:29:51Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -145,7 +145,35 @@
<xsl:copy-of select="$content"/>
</xsl:otherwise>
</xsl:choose>
+</xsl:template>
+
+<xsl:template name="inline.sansseq">
+ <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-family="{$sans.font.family}">
+ <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>
+ </fo:inline>
</xsl:template>
<xsl:template name="inline.charseq">
@@ -483,14 +511,14 @@
<xsl:template match="function/parameter" priority="2">
<xsl:call-template name="inline.italicmonoseq"/>
- <xsl:if test="following-sibling::*">
+ <xsl:if test="$function.parens != 0 and 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:if test="$function.parens != 0 and following-sibling::*">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
@@ -532,7 +560,21 @@
</xsl:template>
<xsl:template match="keycap">
- <xsl:call-template name="inline.boldseq"/>
+ <xsl:choose>
+ <xsl:when test="@function and normalize-space(.) = ''">
+ <xsl:call-template name="inline.boldseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'keycap'"/>
+ <xsl:with-param name="name" select="@function"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="keycode">
@@ -869,7 +911,7 @@
<fo:basic-link internal-destination="{$termid}"
xsl:use-attribute-sets="xref.properties">
- <xsl:call-template name="inline.charseq"/>
+ <xsl:call-template name="inline.italicseq"/>
</fo:basic-link>
</xsl:otherwise>
</xsl:choose>
diff --git a/fo/lists.xsl b/fo/lists.xsl
index fee8de1..6f04014 100644
--- a/fo/lists.xsl
+++ b/fo/lists.xsl
@@ -4,7 +4,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: lists.xsl 9115 2011-10-05 20:12:49Z bobstayton $
+ $Id: lists.xsl 9668 2012-11-28 00:47:59Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -136,17 +136,9 @@
</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:block>
+ <xsl:apply-templates/>
+ </fo:block>
</fo:list-item-body>
</xsl:variable>
@@ -385,15 +377,7 @@
</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:text>em * 0.60</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
@@ -402,15 +386,7 @@
<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:text>em * 0.60</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
@@ -424,17 +400,9 @@
<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:value-of select="$termlength"/>
+ <xsl:text>+</xsl:text>
+ <xsl:value-of select="$label-separation"/>
</xsl:variable>
<xsl:if test="title">
@@ -1352,7 +1320,9 @@
<xsl:text>: ???</xsl:text>
</xsl:when>
<xsl:when test="local-name($target)='co'">
- <xsl:apply-templates select="$target" mode="callout-bug"/>
+ <fo:basic-link internal-destination="{$arearef}">
+ <xsl:apply-templates select="$target" mode="callout-bug"/>
+ </fo:basic-link>
</xsl:when>
<xsl:when test="local-name($target)='areaset'">
<xsl:call-template name="callout-bug">
diff --git a/fo/math.xsl b/fo/math.xsl
index c0c70b5..e25edf2 100644
--- a/fo/math.xsl
+++ b/fo/math.xsl
@@ -6,7 +6,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: math.xsl 9375 2012-05-24 16:33:32Z bobstayton $
+ $Id: math.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -16,18 +16,7 @@
******************************************************************** -->
<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:apply-templates/>
</xsl:template>
<xsl:template match="alt">
@@ -42,24 +31,12 @@
<!-- "Support" for MathML -->
<xsl:template match="mml:math" xmlns:mml="http://www.w3.org/1998/Math/MathML">
- <xsl:choose>
- <!-- * If user is using passivetex, we don't wrap the output in -->
- <!-- * fo:instream-foreign-object (which passivetex doesn't support). -->
- <xsl:when test="not($passivetex.extensions = 0)">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:when>
- <xsl:otherwise>
- <fo:instream-foreign-object>
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates/>
- </xsl:copy>
- </fo:instream-foreign-object>
- </xsl:otherwise>
- </xsl:choose>
+ <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">
@@ -80,17 +57,6 @@
<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'] |
@@ -99,25 +65,6 @@
<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">
diff --git a/fo/pagesetup.xsl b/fo/pagesetup.xsl
index 2fd7a82..88c22d7 100644
--- a/fo/pagesetup.xsl
+++ b/fo/pagesetup.xsl
@@ -4,7 +4,7 @@
version="1.0">
<!-- ********************************************************************
- $Id: pagesetup.xsl 9157 2011-11-23 22:29:23Z bobstayton $
+ $Id: pagesetup.xsl 9720 2013-01-31 18:24:47Z bobstayton $
********************************************************************
This file is part of the DocBook XSL Stylesheet distribution.
@@ -19,14 +19,21 @@
<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: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:value-of select="$symbol.font.family"/>
+</xsl:param>
+
+<xsl:param name="dingbat.fontset">
+ <xsl:value-of select="$dingbat.font.family"/>
+ <xsl:if test="$dingbat.font.family != ''
+ and $symbol.font.family != ''">,</xsl:if>
+ <xsl:value-of select="$symbol.font.family"/>
</xsl:param>
<!-- These are internal parameters are for the individual precedence attributes -->
@@ -2117,8 +2124,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="titlepage-first"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="titlepage-odd"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2138,8 +2147,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="lot-first"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="lot-odd"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2159,8 +2170,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="front-first"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="front-odd"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2180,8 +2193,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="body-first"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="body-odd"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2201,8 +2216,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="back-first"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="back-odd"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2222,8 +2239,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="index-first"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="index-odd"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2244,8 +2263,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="titlepage-first-draft"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="titlepage-odd-draft"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2265,8 +2286,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="lot-first-draft"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="lot-odd-draft"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2286,8 +2309,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="front-first-draft"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="front-odd-draft"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2307,8 +2332,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="body-first-draft"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="body-odd-draft"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2328,8 +2355,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="back-first-draft"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="back-odd-draft"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -2349,8 +2378,10 @@
<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"/>
+ <xsl:if test="$force.blank.pages != 0">
+ <fo:conditional-page-master-reference master-reference="index-first-draft"
+ page-position="first"/>
+ </xsl:if>
<fo:conditional-page-master-reference master-reference="index-odd-draft"
odd-or-even="odd"/>
<fo:conditional-page-master-reference
@@ -3258,6 +3289,12 @@
<xsl:param name="element" select="local-name(.)"/>
<xsl:param name="master-reference" select="''"/>
+ <xsl:variable name="first">
+ <xsl:choose>
+ <xsl:when test="$force.blank.pages = 0">auto</xsl:when>
+ <xsl:otherwise>auto-odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
<!-- Select the first content that the stylesheet places
after the TOC -->
<xsl:variable name="first.book.content"
@@ -3276,11 +3313,11 @@
<!-- 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>
+ <xsl:when test="$element = 'toc'"><xsl:value-of select="$first"/></xsl:when>
+ <xsl:when test="$element = 'book'"><xsl:value-of select="$first"/></xsl:when>
<!-- preface typically continues TOC roman numerals -->
- <!-- Change page.number.format if not -->
- <xsl:when test="$element = 'preface'">auto-odd</xsl:when>
+ <!-- If changed to 1 here, then change page.number.format too -->
+ <xsl:when test="$element = 'preface'"><xsl:value-of select="$first"/></xsl:when>
<xsl:when test="($element = 'dedication' or $element = 'article')
and not(preceding::chapter
or preceding::preface
@@ -3291,7 +3328,7 @@
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:otherwise><xsl:value-of select="$first"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
@@ -3299,7 +3336,7 @@
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$element = 'toc'">auto</xsl:when>
- <xsl:when test="$element = 'book'">1</xsl:when>
+ <xsl:when test="$element = 'book'">auto</xsl:when>
<xsl:when test="$element = 'preface'">auto</xsl:when>
<xsl:when test="($element = 'dedication' or $element = 'article') and
not(preceding::chapter
@@ -3322,6 +3359,8 @@
<xsl:param name="master-reference" select="''"/>
<xsl:choose>
+ <!-- no automatic even blank pages at end of chapters -->
+ <xsl:when test="$force.blank.pages = 0">no-force</xsl:when>
<!-- double-sided output -->
<xsl:when test="$double.sided != 0">end-on-even</xsl:when>
<!-- single-sided output -->
@@ -3349,7 +3388,7 @@
</xsl:variable>
<xsl:choose>
- <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0">
+ <xsl:when test="$fop.extensions != 0">
<!-- body.start.indent does not work well with these processors -->
</xsl:when>
<xsl:when test="starts-with($pageclass, 'body') or
diff --git a/fo/param.xml b/fo/param.xml
index d821c97..00a4447 100644
--- a/fo/param.xml
+++ b/fo/param.xml
@@ -3,7 +3,7 @@
<info>
<title>FO Parameter Reference</title>
<releaseinfo role="meta">
-$Id: param.xweb 9238 2012-03-02 18:38:42Z bobstayton $
+$Id: param.xweb 9673 2012-12-02 20:06:41Z bobstayton $
</releaseinfo>
<author>
<personname>
@@ -1766,19 +1766,12 @@ should still be used for FOP version 0.20.5 and earlier.
<refsection><info><title>Description</title></info>
-<para>If non-zero,
-<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://projects.oucs.ox.ac.uk/passivetex/">PassiveTeX</link>
-extensions will be used. At present, this consists of PDF bookmarks
-and sorted index terms.
-</para>
+<important><para>The PassiveTeX XSL-FO processor is
+no longer supported by DocBook XSL, beginning with version 1.78.</para></important>
-<para>This parameter can also affect which graphics file formats
-are supported</para>
-
-<note>
- <para>PassiveTeX is incomplete and development has ceased. In most cases,
-another XSL-FO engine is probably a better choice.</para>
-</note>
+<para>PassiveTeX was never a complete implementation of
+XSL-FO, and development has ceased. Setting this parameter will
+have no effect on the output.</para>
</refsection>
</refentry>
@@ -3464,6 +3457,71 @@ identifier does not appear in the document itself. </para>
</refsection>
</refentry>
+<refentry version="5.0" xml:id="activate.external.olinks">
+<refmeta>
+<refentrytitle>activate.external.olinks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>activate.external.olinks</refname>
+<refpurpose>Make external olinks into active links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="activate.external.olinks.frag">
+&lt;xsl:param name="activate.external.olinks" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>activate.external.olinks</parameter> is nonzero
+(the default), then any olinks that reference another document
+become active links that can be clicked on to follow the link.
+If the parameter is set to zero, then external olinks
+will have the appropriate link text generated, but the link is
+not made active. Olinks to destinations in
+the current document remain active.</para>
+
+<para>To make an external olink active for HTML
+outputs, the link text is wrapped in an <tag>a</tag>
+element with an <tag>href</tag> attribute. To
+make an external olink active for FO outputs, the link text is
+wrapped in an <tag>fo:basic-link</tag> element with an
+<tag>external-destination</tag> attribute.</para>
+
+<para>This parameter is useful when you need external olinks
+to resolve but not be clickable. For example, if documents
+in a collection are available independently of each other,
+then having active links between them could lead to
+unresolved links when a given target document is missing.</para>
+
+<para>The epub stylesheets set this parameter to zero by default
+because there is no standard linking mechanism between Epub documents.</para>
+
+<para>If external links are made inactive, you should
+consider setting the
+stylesheet parameter <parameter>olink.doctitle</parameter>
+to <literal>yes</literal>. That will append the external document's
+title to the link text, making it easier for the user to
+locate the other document.</para>
+
+<para>An olink is considered external when the
+<parameter>current.docid</parameter> stylesheet parameter
+is set to some value, and the olink's <tag>targetdoc</tag>
+attribute has a different value. If the two values
+match, then the link is considered internal. If the
+<parameter>current.docid</parameter> parameter is blank, or
+the <tag>olink</tag> element does not have a <tag>targetdoc</tag> attribute,
+then the link is considered to be internal and will become
+an active link.</para>
+
+<para>See also <parameter>olink.doctitle</parameter>,
+<parameter>prefer.internal.olink</parameter>.</para>
+
+</refsection>
+</refentry>
+
<refentry version="5.0" xml:id="collect.xref.targets">
<refmeta>
<refentrytitle>collect.xref.targets</refentrytitle>
@@ -6645,6 +6703,7 @@ that you may have trouble using those symbols for footnotes.</para>
&lt;xsl:attribute name="font-style"&gt;normal&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="text-align"&gt;&lt;xsl:value-of select="$alignment"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="start-indent"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="end-indent"&gt;0pt&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="text-indent"&gt;0pt&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="hyphenate"&gt;&lt;xsl:value-of select="$hyphenate"&gt;&lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="wrap-option"&gt;wrap&lt;/xsl:attribute&gt;
@@ -7700,6 +7759,8 @@ zero by default, so this is simply the page-master margin-right.
&lt;xsl:when test="$paper.type = 'A4landscape'"&gt;210mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'USletter'"&gt;11in&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'USlandscape'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegal'"&gt;14in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegallandscape'"&gt;8.5in&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '4A0'"&gt;2378mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '2A0'"&gt;1682mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'A0'"&gt;1189mm&lt;/xsl:when&gt;
@@ -7823,6 +7884,8 @@ this bug is fixed by RenderX. It does not affect documents
with left-to-right text direction.</para>
</note>
+<para>See also <parameter>writing.mode</parameter>.</para>
+
</refsection>
</refentry>
@@ -7872,6 +7935,8 @@ this bug is fixed by RenderX. It does not affect documents
with left-to-right text direction.</para>
</note>
+<para>See also <parameter>writing.mode</parameter>.</para>
+
</refsection>
</refentry>
@@ -7973,6 +8038,9 @@ landscape orientation, it is vertical.
<programlisting xml:id="page.width.portrait.frag">&lt;xsl:param name="page.width.portrait"&gt;
&lt;xsl:choose&gt;
&lt;xsl:when test="$paper.type = 'USletter'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlandscape'"&gt;11in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegal'"&gt;8.5in&lt;/xsl:when&gt;
+ &lt;xsl:when test="$paper.type = 'USlegallandscape'"&gt;14in&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '4A0'"&gt;1682mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = '2A0'"&gt;1189mm&lt;/xsl:when&gt;
&lt;xsl:when test="$paper.type = 'A0'"&gt;841mm&lt;/xsl:when&gt;
@@ -8109,11 +8177,63 @@ B, and C sizes. See <parameter>page.width.portrait</parameter>, for example.
<refsection><info><title>Description</title></info>
-<para>Double-sided documents are printed with a slightly wider margin
-on the binding edge of the page.
+<para>This parameter is useful when printing a document
+on both sides of the paper.</para>
+
+<para>if set to non-zero, documents are formatted using different page-masters
+for odd and even pages. These can differ by using a slightly wider margin
+on the binding edge of the page, and alternating left-right
+positions of header or footer elements.
+</para>
+
+<para>If set to zero (the default), then only the 'odd' page masters
+are used for both even and odd numbered pages.</para>
+
+<para>See also <parameter>force.blank.pages</parameter>,
+<parameter>page.margin.inner</parameter> and
+<parameter>page.margin.outer</parameter>.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="force.blank.pages">
+<refmeta>
+<refentrytitle>force.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force.blank.pages</refname>
+<refpurpose>Generate blank page to end on even page number</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="force.blank.pages.frag">
+&lt;xsl:param name="force.blank.pages" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), then each page sequence will be forced to
+end on an even-numbered page, by inserting a blank page
+if necessary. This will force the next page sequence to start
+on an odd-numbered page, which is a standard convention
+for printed and bound books.</para>
+
+<para>If zero, then such blank pages will not be inserted.
+Chapters will start on the next available page,
+regardless of whether it is an even or odd number.
+This is useful when publishing online where blank
+pages are not needed.
+</para>
+
+<para>This param is independent of the
+<parameter>double.sided</parameter> parameter, which
+just triggers the use of even and odd page sequence
+masters that differ in their header and footer placement.
+So you can combine the two params for alternating
+headers/footers and no blank pages.
</para>
-<para>FIXME: The current set of parameters does not take writing direction
-into account.</para>
</refsection>
</refentry>
@@ -11656,9 +11776,6 @@ used for all titles below level 5.</para>
<refsynopsisdiv>
<programlisting xml:id="article.appendix.title.properties.frag">
&lt;xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties"&gt;
- &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;
- &lt;xsl:value-of select="$title.margin.left"&gt;&lt;/xsl:value-of&gt;
- &lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
@@ -12613,7 +12730,7 @@ to be treated as case insensitive".</para>
The value is normally taken from the gentext file for the
lang attribute of the document's root element, using the
key name 'writing-mode' to look it up in the gentext file.
-But the param can also be
+But this param can also be
set on the command line to override that gentext value.
</para>
<para>Accepted values are:
@@ -12835,7 +12952,7 @@ around all these parameters.</para>
&lt;!-- This file is generated from param.xweb --&gt;
&lt;!-- ********************************************************************
- $Id: param.xweb 9238 2012-03-02 18:38:42Z bobstayton $
+ $Id: param.xweb 9673 2012-12-02 20:06:41Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -12846,6 +12963,7 @@ around all these parameters.</para>
&lt;src:fragref linkend="abstract.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="abstract.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="activate.external.olinks.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="admon.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="admon.graphics.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="admon.graphics.path.frag"&gt;&lt;/src:fragref&gt;
@@ -12948,6 +13066,7 @@ around all these parameters.</para>
&lt;src:fragref linkend="footnote.sep.leader.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="fop.extensions.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="fop1.extensions.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="force.blank.pages.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="formal.object.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="formal.procedures.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="formal.title.placement.frag"&gt;&lt;/src:fragref&gt;
diff --git a/fo/param.xsl b/fo/param.xsl
index 125689e..b7ce4a2 100644
--- a/fo/param.xsl
+++ b/fo/param.xsl
@@ -4,7 +4,7 @@
<!-- This file is generated from param.xweb -->
<!-- ********************************************************************
- $Id: param.xweb 9238 2012-03-02 18:38:42Z bobstayton $
+ $Id: param.xweb 9673 2012-12-02 20:06:41Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -28,6 +28,7 @@
<xsl:attribute name="hyphenate">false</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
</xsl:attribute-set>
+<xsl:param name="activate.external.olinks" select="1"/>
<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>
@@ -59,9 +60,6 @@
<xsl:param name="appendix.autolabel">A</xsl:param>
<xsl:param name="arbortext.extensions" select="0"/>
<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties">
- <xsl:attribute name="margin-{$direction.align.start}">
- <xsl:value-of select="$title.margin.left"/>
- </xsl:attribute>
</xsl:attribute-set>
<xsl:param name="author.othername.in.middle" select="1"/>
<xsl:param name="autotoc.label.separator">. </xsl:param>
@@ -238,6 +236,7 @@
<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="end-indent">0pt</xsl:attribute>
<xsl:attribute name="text-indent">0pt</xsl:attribute>
<xsl:attribute name="hyphenate"><xsl:value-of select="$hyphenate"/></xsl:attribute>
<xsl:attribute name="wrap-option">wrap</xsl:attribute>
@@ -250,6 +249,7 @@
</xsl:attribute-set>
<xsl:param name="fop.extensions" select="0"/>
<xsl:param name="fop1.extensions" select="0"/>
+<xsl:param name="force.blank.pages" select="1"/>
<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>
@@ -495,6 +495,8 @@ set toc,title
<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 = 'USlegal'">14in</xsl:when>
+ <xsl:when test="$paper.type = 'USlegallandscape'">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>
@@ -561,6 +563,9 @@ set toc,title
<xsl:param name="page.width.portrait">
<xsl:choose>
<xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = 'USlandscape'">11in</xsl:when>
+ <xsl:when test="$paper.type = 'USlegal'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = 'USlegallandscape'">14in</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>
diff --git a/fo/profile-docbook.xsl b/fo/profile-docbook.xsl
index 1734d41..4233e2d 100644
--- a/fo/profile-docbook.xsl
+++ b/fo/profile-docbook.xsl
@@ -9,7 +9,7 @@
<xsl:output method="xml" indent="no"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -76,7 +76,6 @@
<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"/>
diff --git a/fo/refentry.xsl b/fo/refentry.xsl
index 0d0f61f..2beda75 100644
--- a/fo/refentry.xsl
+++ b/fo/refentry.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: refentry.xsl 9153 2011-11-15 22:07:59Z bobstayton $
+ $Id: refentry.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -637,14 +637,6 @@
</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"/>
diff --git a/fo/sections.xsl b/fo/sections.xsl
index 4569f2d..81c5daa 100644
--- a/fo/sections.xsl
+++ b/fo/sections.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: sections.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ $Id: sections.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -294,14 +294,6 @@
</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"/>
diff --git a/fo/spaces.xsl b/fo/spaces.xsl
index d34c9cd..dc3a71a 100644
--- a/fo/spaces.xsl
+++ b/fo/spaces.xsl
@@ -4,7 +4,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: spaces.xsl 8121 2008-09-13 17:21:11Z mzjn $
+ $Id: spaces.xsl 9647 2012-10-26 17:42:03Z bobstayton $
********************************************************************
XSL-FO specification treats all space characters like ordinary spaces.
We need to map them to fo:leader with different widths in order to
@@ -12,23 +12,10 @@
******************************************************************** -->
<xsl:template match="text()[namespace-uri(..) = '' or
- namespace-uri(..) = 'http://docbook.org/ns/docbook']">
- <xsl:choose>
- <xsl:when test="$passivetex.extensions != 0">
- <xsl:call-template name="passivetex.dash.subst">
- <xsl:with-param name="string">
- <xsl:call-template name="space.2000.subst">
- <xsl:with-param name="string" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="space.2000.subst">
- <xsl:with-param name="string" select="."/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
+ namespace-uri(..) = 'http://docbook.org/ns/docbook']">
+ <xsl:call-template name="space.2000.subst">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
</xsl:template>
<xsl:param name="space.enquad.width">0.5em</xsl:param> <!-- U+2000 -->
diff --git a/fo/table.xml b/fo/table.xml
index 850a3c6..bf7bf6b 100644
--- a/fo/table.xml
+++ b/fo/table.xml
@@ -5,7 +5,7 @@
<info>
<title>Formatting Object Table Reference</title>
<releaseinfo role="meta">
- $Id: table.xsl 9345 2012-05-11 03:46:46Z bobstayton $
+ $Id: table.xsl 9666 2012-11-14 04:42:56Z bobstayton $
</releaseinfo>
</info>
<partintro xml:id="partintro">
diff --git a/fo/table.xsl b/fo/table.xsl
index 3a720af..d639efe 100644
--- a/fo/table.xsl
+++ b/fo/table.xsl
@@ -13,7 +13,7 @@
<xsl:include href="../common/table.xsl"/>
<!-- ********************************************************************
- $Id: table.xsl 9345 2012-05-11 03:46:46Z bobstayton $
+ $Id: table.xsl 9666 2012-11-14 04:42:56Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -27,7 +27,7 @@
<info>
<title>Formatting Object Table Reference</title>
<releaseinfo role="meta">
- $Id: table.xsl 9345 2012-05-11 03:46:46Z bobstayton $
+ $Id: table.xsl 9666 2012-11-14 04:42:56Z bobstayton $
</releaseinfo>
</info>
<partintro xml:id="partintro">
@@ -173,6 +173,11 @@
<xsl:otherwise>
<fo:block id="{$id}"
xsl:use-attribute-sets="informaltable.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="$table.layout"/>
<xsl:call-template name="table.footnote.block"/>
</fo:block>
@@ -197,8 +202,7 @@
<xsl:param name="table.block"/>
<xsl:choose>
<xsl:when test="@orient='land' and
- $fop.extensions = 0 and
- $passivetex.extensions = 0" >
+ $fop.extensions = 0" >
<fo:block-container reference-orientation="90"
padding="6pt"
xsl:use-attribute-sets="list.block.spacing">
@@ -508,8 +512,7 @@
select=".//colspec[contains(@colwidth, '*')]"/>
<xsl:if test="count($prop-columns) != 0 or
$fop.extensions != 0 or
- $fop1.extensions != 0 or
- $passivetex.extensions != 0">
+ $fop1.extensions != 0">
<xsl:attribute name="table-layout">fixed</xsl:attribute>
</xsl:if>
@@ -642,8 +645,7 @@
<xsl:choose>
<!-- These processors don't support table-layout="auto" -->
<xsl:when test="$fop.extensions != 0 or
- $fop1.extensions != 0 or
- $passivetex.extensions != 0">
+ $fop1.extensions != 0">
<xsl:text>100%</xsl:text>
</xsl:when>
<!-- Proportional columns imply 100% width -->
@@ -672,7 +674,7 @@
<fo:table-header start-indent="0pt" end-indent="0pt">
<xsl:choose>
<!-- Use recursion if @morerows is used -->
- <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
<xsl:apply-templates select="row[1]">
<xsl:with-param name="spans">
<xsl:call-template name="blank.spans">
@@ -702,7 +704,7 @@
<fo:table-footer start-indent="0pt" end-indent="0pt">
<xsl:choose>
<!-- Use recursion if @morerows is used -->
- <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
<xsl:apply-templates select="row[1]">
<xsl:with-param name="spans">
<xsl:call-template name="blank.spans">
@@ -732,7 +734,7 @@
<fo:table-body start-indent="0pt" end-indent="0pt">
<xsl:choose>
<!-- Use recursion if @morerows is used -->
- <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+ <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
<xsl:apply-templates select="row[1]">
<xsl:with-param name="spans">
<xsl:call-template name="blank.spans">
@@ -1132,7 +1134,7 @@
-->
<xsl:choose>
- <xsl:when test="$fop.extensions = 0 and $passivetex.extensions = 0
+ <xsl:when test="$fop.extensions = 0
and $orientation != ''">
<fo:block-container reference-orientation="{$orientation}">
<xsl:if test="$rotated-width != ''">
diff --git a/fo/titlepage.templates.xml b/fo/titlepage.templates.xml
index 6d63b19..1ab91f9 100644
--- a/fo/titlepage.templates.xml
+++ b/fo/titlepage.templates.xml
@@ -18,7 +18,7 @@
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- ********************************************************************
- $Id: titlepage.templates.xml 9294 2012-04-19 18:52:39Z bobstayton $
+ $Id: titlepage.templates.xml 9722 2013-02-01 19:44:13Z bobstayton $
********************************************************************
This file is part of the DocBook XSL Stylesheet distribution.
@@ -1207,7 +1207,6 @@
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"
@@ -1237,7 +1236,6 @@
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"
@@ -1267,7 +1265,6 @@
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"
@@ -1297,7 +1294,6 @@
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"
@@ -1327,7 +1323,6 @@
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"
@@ -1357,7 +1352,6 @@
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"
@@ -1387,7 +1381,6 @@
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"
diff --git a/fo/titlepage.templates.xsl b/fo/titlepage.templates.xsl
index ed0cffd..e3404e3 100644
--- a/fo/titlepage.templates.xsl
+++ b/fo/titlepage.templates.xsl
@@ -5098,7 +5098,7 @@
</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}">
+ <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" 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>
@@ -5165,7 +5165,7 @@
</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}">
+ <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" 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>
@@ -5232,7 +5232,7 @@
</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}">
+ <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" 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>
@@ -5299,7 +5299,7 @@
</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}">
+ <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" 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>
@@ -5366,7 +5366,7 @@
</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}">
+ <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" 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>
@@ -5433,7 +5433,7 @@
</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}">
+ <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" 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>
@@ -5500,7 +5500,7 @@
</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}">
+ <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" 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>
diff --git a/fo/verbatim.xsl b/fo/verbatim.xsl
index 51d8926..319ffcf 100644
--- a/fo/verbatim.xsl
+++ b/fo/verbatim.xsl
@@ -9,7 +9,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: verbatim.xsl 9043 2011-08-30 13:30:50Z dcramer $
+ $Id: verbatim.xsl 9590 2012-09-02 20:53:23Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -398,7 +398,7 @@
</xsl:when>
<xsl:when test="$listings[1]/@continuation='continues'">
<xsl:call-template name="lastLineNumber">
- <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="listings" select="$listings[position() &gt; 1]"/>
<xsl:with-param name="number" select="$number + $lines"/>
</xsl:call-template>
</xsl:when>
diff --git a/fo/xref.xsl b/fo/xref.xsl
index 90d609c..8210d56 100644
--- a/fo/xref.xsl
+++ b/fo/xref.xsl
@@ -7,7 +7,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: xref.xsl 9286 2012-04-19 10:10:58Z bobstayton $
+ $Id: xref.xsl 9723 2013-02-06 13:08:06Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -318,7 +318,7 @@
|constraintdef|formalpara|glossdiv|important|indexdiv
|itemizedlist|legalnotice|lot|msg|msgexplan|msgmain
|msgrel|msgset|msgsub|note|orderedlist|partintro
- |productionset|qandadiv|refsynopsisdiv|segmentedlist
+ |productionset|qandadiv|refsynopsisdiv|screenshot|segmentedlist
|set|setindex|sidebar|tip|toc|variablelist|warning"
mode="xref-to">
<xsl:param name="referrer"/>
@@ -987,7 +987,7 @@
<!-- * and the value of its content is not a URL that is the same as -->
<!-- * URL it links to, and if ulink.show is non-zero. -->
<xsl:choose>
- <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)">
+ <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote) and not(ancestor::*[@floatstyle='before'])">
<!-- * ulink.show and ulink.footnote are both non-zero; that -->
<!-- * means we display the URL as a footnote (instead of inline) -->
<fo:footnote>
@@ -1098,8 +1098,6 @@
<!-- olink content may be passed in from xlink olink -->
<xsl:param name="content" select="NOTANELEMENT"/>
- <xsl:variable name="localinfo" select="@localinfo"/>
-
<xsl:choose>
<!-- olinks resolved by stylesheet and target database -->
<xsl:when test="@targetdoc or @targetptr or
@@ -1342,14 +1340,6 @@
</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">
@@ -1441,9 +1431,8 @@
<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 test="$purpose = 'xref'">
+ <xsl:copy-of select="$title"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$title"/>
diff --git a/highlighting/bourne-hl.xml b/highlighting/bourne-hl.xml
new file mode 100644
index 0000000..e2cd98d
--- /dev/null
+++ b/highlighting/bourne-hl.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Syntax highlighting definition for SH
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2010 Mathieu Malaterre
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="heredoc">
+ <start>&lt;&lt;</start>
+ <quote>'</quote>
+ <quote>"</quote>
+ <flag>-</flag>
+ <noWhiteSpace />
+ <looseTerminator />
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- reserved words -->
+ <keyword>if</keyword>
+ <keyword>then</keyword>
+ <keyword>else</keyword>
+ <keyword>elif</keyword>
+ <keyword>fi</keyword>
+ <keyword>case</keyword>
+ <keyword>esac</keyword>
+ <keyword>for</keyword>
+ <keyword>while</keyword>
+ <keyword>until</keyword>
+ <keyword>do</keyword>
+ <keyword>done</keyword>
+ <!-- built-ins -->
+ <keyword>exec</keyword>
+ <keyword>shift</keyword>
+ <keyword>exit</keyword>
+ <keyword>times</keyword>
+ <keyword>break</keyword>
+ <keyword>export</keyword>
+ <keyword>trap</keyword>
+ <keyword>continue</keyword>
+ <keyword>readonly</keyword>
+ <keyword>wait</keyword>
+ <keyword>eval</keyword>
+ <keyword>return</keyword>
+ <!-- other commands -->
+ <keyword>cd</keyword>
+ <keyword>echo</keyword>
+ <keyword>hash</keyword>
+ <keyword>pwd</keyword>
+ <keyword>read</keyword>
+ <keyword>set</keyword>
+ <keyword>test</keyword>
+ <keyword>type</keyword>
+ <keyword>ulimit</keyword>
+ <keyword>umask</keyword>
+ <keyword>unset</keyword>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/c-hl.xml b/highlighting/c-hl.xml
index 1503dd1..81077ac 100644
--- a/highlighting/c-hl.xml
+++ b/highlighting/c-hl.xml
@@ -1,16 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
- <!--
- Syntax highlighting definition for C xslthl - XSLT Syntax Highlighting http://sourceforge.net/projects/xslthl/
- Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks This software is provided 'as-is', without any
- express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this
- software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and
- to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not
- be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an
- acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must
- be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be
- removed or altered from any source distribution. Michal Molhanec <mol1111 at users.sourceforge.net> Jirka Kosek <kosek
- at users.sourceforge.net> Michiel Hendriks <elmuerte at users.sourceforge.net>
- -->
+<!--
+Syntax highlighting definition for C
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+-->
<highlighters>
<highlighter type="multiline-comment">
<start>/**</start>
@@ -18,7 +33,7 @@
<style>doccomment</style>
</highlighter>
<highlighter type="oneline-comment">
- <start>///</start>
+ <start><![CDATA[/// ]]></start>
<style>doccomment</style>
</highlighter>
<highlighter type="multiline-comment">
@@ -31,6 +46,7 @@
<start>#</start>
<lineBreakEscape>\</lineBreakEscape>
<style>directive</style>
+ <solitary />
</highlighter>
<highlighter type="string">
<string>"</string>
diff --git a/highlighting/cmake-hl.xml b/highlighting/cmake-hl.xml
new file mode 100644
index 0000000..22921f4
--- /dev/null
+++ b/highlighting/cmake-hl.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for CMake
+Copyright (c) 2010 Mathieu Malaterre
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+claim that you wrote the original software. If you use this software
+in a product, an acknowledgment in the product documentation would be
+appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">#</highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <endString>"</endString>
+ <spanNewLines />
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ <style>string</style>
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <ignoreCase />
+ <style>string</style>
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- system variable -->
+ <keyword>WIN32</keyword>
+ <keyword>UNIX</keyword>
+ <keyword>APPLE</keyword>
+ <keyword>CYGWIN</keyword>
+ <keyword>BORLAND</keyword>
+ <keyword>MINGW</keyword>
+ <keyword>MSVC</keyword>
+ <keyword>MSVC_IDE</keyword>
+ <keyword>MSVC60</keyword>
+ <keyword>MSVC70</keyword>
+ <keyword>MSVC71</keyword>
+ <keyword>MSVC80</keyword>
+ <style>attribute</style>
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- operators -->
+ <keyword>AND</keyword>
+ <keyword>BOOL</keyword>
+ <keyword>CACHE</keyword>
+ <keyword>COMMAND</keyword>
+ <keyword>DEFINED</keyword>
+ <keyword>DOC</keyword>
+ <keyword>EQUAL</keyword>
+ <keyword>EXISTS</keyword>
+ <keyword>FALSE</keyword>
+ <keyword>GREATER</keyword>
+ <keyword>INTERNAL</keyword>
+ <keyword>LESS</keyword>
+ <keyword>MATCHES</keyword>
+ <keyword>NAME</keyword>
+ <keyword>NAMES</keyword>
+ <keyword>NAME_WE</keyword>
+ <keyword>NOT</keyword>
+ <keyword>OFF</keyword>
+ <keyword>ON</keyword>
+ <keyword>OR</keyword>
+ <keyword>PATH</keyword>
+ <keyword>PATHS</keyword>
+ <keyword>PROGRAM</keyword>
+ <keyword>STREQUAL</keyword>
+ <keyword>STRGREATER</keyword>
+ <keyword>STRING</keyword>
+ <keyword>STRLESS</keyword>
+ <keyword>TRUE</keyword>
+ <!-- color in blue -->
+ <!--style>doccomment</style> -->
+ <style>keyword</style>
+ </highlighter>
+ <highlighter type="keywords">
+ <!-- statement -->
+ <keyword>ADD_CUSTOM_COMMAND</keyword>
+ <keyword>ADD_CUSTOM_TARGET</keyword>
+ <keyword>ADD_DEFINITIONS</keyword>
+ <keyword>ADD_DEPENDENCIES</keyword>
+ <keyword>ADD_EXECUTABLE</keyword>
+ <keyword>ADD_LIBRARY</keyword>
+ <keyword>ADD_SUBDIRECTORY</keyword>
+ <keyword>ADD_TEST</keyword>
+ <keyword>AUX_SOURCE_DIRECTORY</keyword>
+ <keyword>BUILD_COMMAND</keyword>
+ <keyword>BUILD_NAME</keyword>
+ <keyword>CMAKE_MINIMUM_REQUIRED</keyword>
+ <keyword>CONFIGURE_FILE</keyword>
+ <keyword>CREATE_TEST_SOURCELIST</keyword>
+ <keyword>ELSE</keyword>
+ <keyword>ELSEIF</keyword>
+ <keyword>ENABLE_LANGUAGE</keyword>
+ <keyword>ENABLE_TESTING</keyword>
+ <keyword>ENDFOREACH</keyword>
+ <keyword>ENDIF</keyword>
+ <keyword>ENDWHILE</keyword>
+ <keyword>EXEC_PROGRAM</keyword>
+ <keyword>EXECUTE_PROCESS</keyword>
+ <keyword>EXPORT_LIBRARY_DEPENDENCIES</keyword>
+ <keyword>FILE</keyword>
+ <keyword>FIND_FILE</keyword>
+ <keyword>FIND_LIBRARY</keyword>
+ <keyword>FIND_PACKAGE</keyword>
+ <keyword>FIND_PATH</keyword>
+ <keyword>FIND_PROGRAM</keyword>
+ <keyword>FLTK_WRAP_UI</keyword>
+ <keyword>FOREACH</keyword>
+ <keyword>GET_CMAKE_PROPERTY</keyword>
+ <keyword>GET_DIRECTORY_PROPERTY</keyword>
+ <keyword>GET_FILENAME_COMPONENT</keyword>
+ <keyword>GET_SOURCE_FILE_PROPERTY</keyword>
+ <keyword>GET_TARGET_PROPERTY</keyword>
+ <keyword>GET_TEST_PROPERTY</keyword>
+ <keyword>IF</keyword>
+ <keyword>INCLUDE</keyword>
+ <keyword>INCLUDE_DIRECTORIES</keyword>
+ <keyword>INCLUDE_EXTERNAL_MSPROJECT</keyword>
+ <keyword>INCLUDE_REGULAR_EXPRESSION</keyword>
+ <keyword>INSTALL</keyword>
+ <keyword>INSTALL_FILES</keyword>
+ <keyword>INSTALL_PROGRAMS</keyword>
+ <keyword>INSTALL_TARGETS</keyword>
+ <keyword>LINK_DIRECTORIES</keyword>
+ <keyword>LINK_LIBRARIES</keyword>
+ <keyword>LIST</keyword>
+ <keyword>LOAD_CACHE</keyword>
+ <keyword>LOAD_COMMAND</keyword>
+ <keyword>MACRO</keyword>
+ <keyword>MAKE_DIRECTORY</keyword>
+ <keyword>MARK_AS_ADVANCED</keyword>
+ <keyword>MATH</keyword>
+ <keyword>MESSAGE</keyword>
+ <keyword>OPTION</keyword>
+ <keyword>OUTPUT_REQUIRED_FILES</keyword>
+ <keyword>PROJECT</keyword>
+ <keyword>QT_WRAP_CPP</keyword>
+ <keyword>QT_WRAP_UI</keyword>
+ <keyword>REMOVE</keyword>
+ <keyword>REMOVE_DEFINITIONS</keyword>
+ <keyword>SEPARATE_ARGUMENTS</keyword>
+ <keyword>SET</keyword>
+ <keyword>SET_DIRECTORY_PROPERTIES</keyword>
+ <keyword>SET_SOURCE_FILES_PROPERTIES</keyword>
+ <keyword>SET_TARGET_PROPERTIES</keyword>
+ <keyword>SET_TESTS_PROPERTIES</keyword>
+ <keyword>SITE_NAME</keyword>
+ <keyword>SOURCE_GROUP</keyword>
+ <keyword>STRING</keyword>
+ <keyword>SUBDIR_DEPENDS</keyword>
+ <keyword>SUBDIRS</keyword>
+ <keyword>TARGET_LINK_LIBRARIES</keyword>
+ <keyword>TRY_COMPILE</keyword>
+ <keyword>TRY_RUN</keyword>
+ <keyword>USE_MANGLED_MESA</keyword>
+ <keyword>UTILITY_SOURCE</keyword>
+ <keyword>VARIABLE_REQUIRES</keyword>
+ <keyword>VTK_MAKE_INSTANTIATOR</keyword>
+ <keyword>VTK_WRAP_JAVA</keyword>
+ <keyword>VTK_WRAP_PYTHON</keyword>
+ <keyword>VTK_WRAP_TCL</keyword>
+ <keyword>WHILE</keyword>
+ <keyword>WRITE_FILE</keyword>
+ <keyword>ENDMACRO</keyword>
+ <ignoreCase />
+ <beginChars>()</beginChars>
+ <partChars>()</partChars>
+ <style>directive</style>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/cpp-hl.xml b/highlighting/cpp-hl.xml
index db57d5e..347eb72 100644
--- a/highlighting/cpp-hl.xml
+++ b/highlighting/cpp-hl.xml
@@ -35,7 +35,7 @@ Michiel Hendriks <elmuerte at users.sourceforge.net>
<style>doccomment</style>
</highlighter>
<highlighter type="oneline-comment">
- <start>///</start>
+ <start><![CDATA[/// ]]></start>
<style>doccomment</style>
</highlighter>
<highlighter type="multiline-comment">
@@ -48,6 +48,7 @@ Michiel Hendriks <elmuerte at users.sourceforge.net>
<start>#</start>
<lineBreakEscape>\</lineBreakEscape>
<style>directive</style>
+ <solitary/>
</highlighter>
<highlighter type="string">
<string>"</string>
diff --git a/highlighting/csharp-hl.xml b/highlighting/csharp-hl.xml
index 8ab5fda..f352ead 100644
--- a/highlighting/csharp-hl.xml
+++ b/highlighting/csharp-hl.xml
@@ -55,6 +55,7 @@ Michiel Hendriks <elmuerte at users.sourceforge.net>
<start>#</start>
<lineBreakEscape>\</lineBreakEscape>
<style>directive</style>
+ <solitary/>
</highlighter>
<highlighter type="string">
<!-- strings starting with an "@" can span multiple lines -->
diff --git a/highlighting/css21-hl.xml b/highlighting/css21-hl.xml
new file mode 100644
index 0000000..2a42b7c
--- /dev/null
+++ b/highlighting/css21-hl.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for CSS files
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2011-2012 Martin Hujer, Michiel Hendriks
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Martin Hujer <mhujer at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+
+Reference: http://www.w3.org/TR/CSS21/propidx.html
+
+-->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ </highlighter>
+ <highlighter type="word">
+ <word>@charset</word>
+ <word>@import</word>
+ <word>@media</word>
+ <word>@page</word>
+ <style>directive</style>
+ </highlighter>
+ <highlighter type="keywords">
+ <partChars>-</partChars>
+ <keyword>azimuth</keyword>
+ <keyword>background-attachment</keyword>
+ <keyword>background-color</keyword>
+ <keyword>background-image</keyword>
+ <keyword>background-position</keyword>
+ <keyword>background-repeat</keyword>
+ <keyword>background</keyword>
+ <keyword>border-collapse</keyword>
+ <keyword>border-color</keyword>
+ <keyword>border-spacing</keyword>
+ <keyword>border-style</keyword>
+ <keyword>border-top</keyword>
+ <keyword>border-right</keyword>
+ <keyword>border-bottom</keyword>
+ <keyword>border-left</keyword>
+ <keyword>border-top-color</keyword>
+ <keyword>border-right-color</keyword>
+ <keyword>border-bottom-color</keyword>
+ <keyword>border-left-color</keyword>
+ <keyword>border-top-style</keyword>
+ <keyword>border-right-style</keyword>
+ <keyword>border-bottom-style</keyword>
+ <keyword>border-left-style</keyword>
+ <keyword>border-top-width</keyword>
+ <keyword>border-right-width</keyword>
+ <keyword>border-bottom-width</keyword>
+ <keyword>border-left-width</keyword>
+ <keyword>border-width</keyword>
+ <keyword>border</keyword>
+ <keyword>bottom</keyword>
+ <keyword>caption-side</keyword>
+ <keyword>clear</keyword>
+ <keyword>clip</keyword>
+ <keyword>color</keyword>
+ <keyword>content</keyword>
+ <keyword>counter-increment</keyword>
+ <keyword>counter-reset</keyword>
+ <keyword>cue-after</keyword>
+ <keyword>cue-before</keyword>
+ <keyword>cue</keyword>
+ <keyword>cursor</keyword>
+ <keyword>direction</keyword>
+ <keyword>display</keyword>
+ <keyword>elevation</keyword>
+ <keyword>empty-cells</keyword>
+ <keyword>float</keyword>
+ <keyword>font-family</keyword>
+ <keyword>font-size</keyword>
+ <keyword>font-style</keyword>
+ <keyword>font-variant</keyword>
+ <keyword>font-weight</keyword>
+ <keyword>font</keyword>
+ <keyword>height</keyword>
+ <keyword>left</keyword>
+ <keyword>letter-spacing</keyword>
+ <keyword>line-height</keyword>
+ <keyword>list-style-image</keyword>
+ <keyword>list-style-position</keyword>
+ <keyword>list-style-type</keyword>
+ <keyword>list-style</keyword>
+ <keyword>margin-right</keyword>
+ <keyword>margin-left</keyword>
+ <keyword>margin-top</keyword>
+ <keyword>margin-bottom</keyword>
+ <keyword>margin</keyword>
+ <keyword>max-height</keyword>
+ <keyword>max-width</keyword>
+ <keyword>min-height</keyword>
+ <keyword>min-width</keyword>
+ <keyword>orphans</keyword>
+ <keyword>outline-color</keyword>
+ <keyword>outline-style</keyword>
+ <keyword>outline-width</keyword>
+ <keyword>outline</keyword>
+ <keyword>overflow</keyword>
+ <keyword>padding-top</keyword>
+ <keyword>padding-right</keyword>
+ <keyword>padding-bottom</keyword>
+ <keyword>padding-left</keyword>
+ <keyword>padding</keyword>
+ <keyword>page-break-after</keyword>
+ <keyword>page-break-before</keyword>
+ <keyword>page-break-inside</keyword>
+ <keyword>pause-after</keyword>
+ <keyword>pause-before</keyword>
+ <keyword>pause</keyword>
+ <keyword>pitch-range</keyword>
+ <keyword>pitch</keyword>
+ <keyword>play-during</keyword>
+ <keyword>position</keyword>
+ <keyword>quotes</keyword>
+ <keyword>richness</keyword>
+ <keyword>right</keyword>
+ <keyword>speak-header</keyword>
+ <keyword>speak-numeral</keyword>
+ <keyword>speak-punctuation</keyword>
+ <keyword>speak</keyword>
+ <keyword>speech-rate</keyword>
+ <keyword>stress</keyword>
+ <keyword>table-layout</keyword>
+ <keyword>text-align</keyword>
+ <keyword>text-decoration</keyword>
+ <keyword>text-indent</keyword>
+ <keyword>text-transform</keyword>
+ <keyword>top</keyword>
+ <keyword>unicode-bidi</keyword>
+ <keyword>vertical-align</keyword>
+ <keyword>visibility</keyword>
+ <keyword>voice-family</keyword>
+ <keyword>volume</keyword>
+ <keyword>white-space</keyword>
+ <keyword>widows</keyword>
+ <keyword>width</keyword>
+ <keyword>word-spacing</keyword>
+ <keyword>z-index</keyword>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/lua-hl.xml b/highlighting/lua-hl.xml
new file mode 100644
index 0000000..525fba9
--- /dev/null
+++ b/highlighting/lua-hl.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Syntax highlighting definition for Lua 5.1 and 5.2
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2012 Patrick Rapin
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+ If you want to send an e-mail to Patrick Rapin, please execute the
+ following decrypting script in Lua 5.1 or 5.2:
+ print(('oc mia.l@kmgrtci.naparip'):gsub('(..)(..)','%2%1'):reverse())
+-->
+
+<highlighters>
+ <highlighter type="keywords">
+ <keyword>and</keyword>
+ <keyword>break</keyword>
+ <keyword>do</keyword>
+ <keyword>else</keyword>
+ <keyword>elseif</keyword>
+ <keyword>end</keyword>
+ <keyword>false</keyword>
+ <keyword>for</keyword>
+ <keyword>function</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>in</keyword>
+ <keyword>local</keyword>
+ <keyword>nil</keyword>
+ <keyword>not</keyword>
+ <keyword>or</keyword>
+ <keyword>repeat</keyword>
+ <keyword>return</keyword>
+ <keyword>then</keyword>
+ <keyword>true</keyword>
+ <keyword>until</keyword>
+ <keyword>while</keyword>
+ </highlighter>
+
+ <!-- Multiline comments can have any number of equal signs
+ between brackets. Let's support up to 4 -->
+ <highlighter type="multiline-comment">
+ <start>--[[</start>
+ <end>]]</end>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>--[=[</start>
+ <end>]=]</end>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>--[==[</start>
+ <end>]==]</end>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>--[===[</start>
+ <end>]===]</end>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>--[====[</start>
+ <end>]====]</end>
+ </highlighter>
+
+ <highlighter type="oneline-comment">
+ --
+ </highlighter>
+
+ <highlighter type="string">
+ <string>"</string>
+ <endString>"</endString>
+ <escape>\</escape>
+ <spanNewLines/>
+ </highlighter>
+
+ <highlighter type="string">
+ <string>'</string>
+ <endString>'</endString>
+ <escape>\</escape>
+ <spanNewLines/>
+ </highlighter>
+
+ <!-- Long strings can also have any number of equal signs. -->
+ <highlighter type="string">
+ <string>[[</string>
+ <endString>]]</endString>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="string">
+ <string>[=[</string>
+ <endString>]=]</endString>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="string">
+ <string>[==[</string>
+ <endString>]==]</endString>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="string">
+ <string>[===[</string>
+ <endString>]===]</endString>
+ <spanNewLines/>
+ </highlighter>
+ <highlighter type="string">
+ <string>[====[</string>
+ <endString>]====]</endString>
+ <spanNewLines/>
+ </highlighter>
+
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <point>.</point>
+ <pointStarts />
+ <exponent>p</exponent>
+ <ignoreCase />
+ </highlighter>
+
+</highlighters>
diff --git a/highlighting/php-hl.xml b/highlighting/php-hl.xml
index 4a70225..73f926c 100644
--- a/highlighting/php-hl.xml
+++ b/highlighting/php-hl.xml
@@ -35,7 +35,7 @@ Michiel Hendriks <elmuerte at users.sourceforge.net>
<style>doccomment</style>
</highlighter>
<highlighter type="oneline-comment">
- <start>///</start>
+ <start><![CDATA[/// ]]></start>
<style>doccomment</style>
</highlighter>
<highlighter type="multiline-comment">
@@ -137,6 +137,11 @@ Michiel Hendriks <elmuerte at users.sourceforge.net>
<keyword>old_function</keyword>
<keyword>true</keyword>
<keyword>false</keyword>
+ <!-- PHP 5.3 -->
+ <keyword>namespace</keyword>
+ <keyword>__NAMESPACE__</keyword>
+ <keyword>goto</keyword>
+ <keyword>__DIR__</keyword>
<ignoreCase />
</highlighter>
<highlighter type="word">
diff --git a/highlighting/sql1999-hl.xml b/highlighting/sql1999-hl.xml
new file mode 100644
index 0000000..61b2411
--- /dev/null
+++ b/highlighting/sql1999-hl.xml
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Syntax highlighting definition for SQL:1999
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2012 Michiel Hendriks, Martin Hujer, k42b3
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">--</highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>B'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>N'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>X'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <ignoreCase />
+ <!-- reserved -->
+ <keyword>ABSOLUTE</keyword>
+ <keyword>ACTION</keyword>
+ <keyword>ADD</keyword>
+ <keyword>AFTER</keyword>
+ <keyword>ALL</keyword>
+ <keyword>ALLOCATE</keyword>
+ <keyword>ALTER</keyword>
+ <keyword>AND</keyword>
+ <keyword>ANY</keyword>
+ <keyword>ARE</keyword>
+ <keyword>ARRAY</keyword>
+ <keyword>AS</keyword>
+ <keyword>ASC</keyword>
+ <keyword>ASSERTION</keyword>
+ <keyword>AT</keyword>
+ <keyword>AUTHORIZATION</keyword>
+ <keyword>BEFORE</keyword>
+ <keyword>BEGIN</keyword>
+ <keyword>BETWEEN</keyword>
+ <keyword>BINARY</keyword>
+ <keyword>BIT</keyword>
+ <keyword>BLOB</keyword>
+ <keyword>BOOLEAN</keyword>
+ <keyword>BOTH</keyword>
+ <keyword>BREADTH</keyword>
+ <keyword>BY</keyword>
+ <keyword>CALL</keyword>
+ <keyword>CASCADE</keyword>
+ <keyword>CASCADED</keyword>
+ <keyword>CASE</keyword>
+ <keyword>CAST</keyword>
+ <keyword>CATALOG</keyword>
+ <keyword>CHAR</keyword>
+ <keyword>CHARACTER</keyword>
+ <keyword>CHECK</keyword>
+ <keyword>CLOB</keyword>
+ <keyword>CLOSE</keyword>
+ <keyword>COLLATE</keyword>
+ <keyword>COLLATION</keyword>
+ <keyword>COLUMN</keyword>
+ <keyword>COMMIT</keyword>
+ <keyword>CONDITION</keyword>
+ <keyword>CONNECT</keyword>
+ <keyword>CONNECTION</keyword>
+ <keyword>CONSTRAINT</keyword>
+ <keyword>CONSTRAINTS</keyword>
+ <keyword>CONSTRUCTOR</keyword>
+ <keyword>CONTINUE</keyword>
+ <keyword>CORRESPONDING</keyword>
+ <keyword>CREATE</keyword>
+ <keyword>CROSS</keyword>
+ <keyword>CUBE</keyword>
+ <keyword>CURRENT</keyword>
+ <keyword>CURRENT_DATE</keyword>
+ <keyword>CURRENT_DEFAULT_TRANSFORM_GROUP</keyword>
+ <keyword>CURRENT_TRANSFORM_GROUP_FOR_TYPE</keyword>
+ <keyword>CURRENT_PATH</keyword>
+ <keyword>CURRENT_ROLE</keyword>
+ <keyword>CURRENT_TIME</keyword>
+ <keyword>CURRENT_TIMESTAMP</keyword>
+ <keyword>CURRENT_USER</keyword>
+ <keyword>CURSOR</keyword>
+ <keyword>CYCLE</keyword>
+ <keyword>DATA</keyword>
+ <keyword>DATE</keyword>
+ <keyword>DAY</keyword>
+ <keyword>DEALLOCATE</keyword>
+ <keyword>DEC</keyword>
+ <keyword>DECIMAL</keyword>
+ <keyword>DECLARE</keyword>
+ <keyword>DEFAULT</keyword>
+ <keyword>DEFERRABLE</keyword>
+ <keyword>DEFERRED</keyword>
+ <keyword>DELETE</keyword>
+ <keyword>DEPTH</keyword>
+ <keyword>DEREF</keyword>
+ <keyword>DESC</keyword>
+ <keyword>DESCRIBE</keyword>
+ <keyword>DESCRIPTOR</keyword>
+ <keyword>DETERMINISTIC</keyword>
+ <keyword>DIAGNOSTICS</keyword>
+ <keyword>DISCONNECT</keyword>
+ <keyword>DISTINCT</keyword>
+ <keyword>DO</keyword>
+ <keyword>DOMAIN</keyword>
+ <keyword>DOUBLE</keyword>
+ <keyword>DROP</keyword>
+ <keyword>DYNAMIC</keyword>
+ <keyword>EACH</keyword>
+ <keyword>ELSE</keyword>
+ <keyword>ELSEIF</keyword>
+ <keyword>END</keyword>
+ <keyword>END-EXEC</keyword>
+ <keyword>EQUALS</keyword>
+ <keyword>ESCAPE</keyword>
+ <keyword>EXCEPT</keyword>
+ <keyword>EXCEPTION</keyword>
+ <keyword>EXEC</keyword>
+ <keyword>EXECUTE</keyword>
+ <keyword>EXISTS</keyword>
+ <keyword>EXIT</keyword>
+ <keyword>EXTERNAL</keyword>
+ <keyword>FALSE</keyword>
+ <keyword>FETCH</keyword>
+ <keyword>FIRST</keyword>
+ <keyword>FLOAT</keyword>
+ <keyword>FOR</keyword>
+ <keyword>FOREIGN</keyword>
+ <keyword>FOUND</keyword>
+ <keyword>FROM</keyword>
+ <keyword>FREE</keyword>
+ <keyword>FULL</keyword>
+ <keyword>FUNCTION</keyword>
+ <keyword>GENERAL</keyword>
+ <keyword>GET</keyword>
+ <keyword>GLOBAL</keyword>
+ <keyword>GO</keyword>
+ <keyword>GOTO</keyword>
+ <keyword>GRANT</keyword>
+ <keyword>GROUP</keyword>
+ <keyword>GROUPING</keyword>
+ <keyword>HANDLE</keyword>
+ <keyword>HAVING</keyword>
+ <keyword>HOLD</keyword>
+ <keyword>HOUR</keyword>
+ <keyword>IDENTITY</keyword>
+ <keyword>IF</keyword>
+ <keyword>IMMEDIATE</keyword>
+ <keyword>IN</keyword>
+ <keyword>INDICATOR</keyword>
+ <keyword>INITIALLY</keyword>
+ <keyword>INNER</keyword>
+ <keyword>INOUT</keyword>
+ <keyword>INPUT</keyword>
+ <keyword>INSERT</keyword>
+ <keyword>INT</keyword>
+ <keyword>INTEGER</keyword>
+ <keyword>INTERSECT</keyword>
+ <keyword>INTERVAL</keyword>
+ <keyword>INTO</keyword>
+ <keyword>IS</keyword>
+ <keyword>ISOLATION</keyword>
+ <keyword>JOIN</keyword>
+ <keyword>KEY</keyword>
+ <keyword>LANGUAGE</keyword>
+ <keyword>LARGE</keyword>
+ <keyword>LAST</keyword>
+ <keyword>LATERAL</keyword>
+ <keyword>LEADING</keyword>
+ <keyword>LEAVE</keyword>
+ <keyword>LEFT</keyword>
+ <keyword>LEVEL</keyword>
+ <keyword>LIKE</keyword>
+ <keyword>LOCAL</keyword>
+ <keyword>LOCALTIME</keyword>
+ <keyword>LOCALTIMESTAMP</keyword>
+ <keyword>LOCATOR</keyword>
+ <keyword>LOOP</keyword>
+ <keyword>MAP</keyword>
+ <keyword>MATCH</keyword>
+ <keyword>METHOD</keyword>
+ <keyword>MINUTE</keyword>
+ <keyword>MODIFIES</keyword>
+ <keyword>MODULE</keyword>
+ <keyword>MONTH</keyword>
+ <keyword>NAMES</keyword>
+ <keyword>NATIONAL</keyword>
+ <keyword>NATURAL</keyword>
+ <keyword>NCHAR</keyword>
+ <keyword>NCLOB</keyword>
+ <keyword>NESTING</keyword>
+ <keyword>NEW</keyword>
+ <keyword>NEXT</keyword>
+ <keyword>NO</keyword>
+ <keyword>NONE</keyword>
+ <keyword>NOT</keyword>
+ <keyword>NULL</keyword>
+ <keyword>NUMERIC</keyword>
+ <keyword>OBJECT</keyword>
+ <keyword>OF</keyword>
+ <keyword>OLD</keyword>
+ <keyword>ON</keyword>
+ <keyword>ONLY</keyword>
+ <keyword>OPEN</keyword>
+ <keyword>OPTION</keyword>
+ <keyword>OR</keyword>
+ <keyword>ORDER</keyword>
+ <keyword>ORDINALITY</keyword>
+ <keyword>OUT</keyword>
+ <keyword>OUTER</keyword>
+ <keyword>OUTPUT</keyword>
+ <keyword>OVERLAPS</keyword>
+ <keyword>PAD</keyword>
+ <keyword>PARAMETER</keyword>
+ <keyword>PARTIAL</keyword>
+ <keyword>PATH</keyword>
+ <keyword>PRECISION</keyword>
+ <keyword>PREPARE</keyword>
+ <keyword>PRESERVE</keyword>
+ <keyword>PRIMARY</keyword>
+ <keyword>PRIOR</keyword>
+ <keyword>PRIVILEGES</keyword>
+ <keyword>PROCEDURE</keyword>
+ <keyword>PUBLIC</keyword>
+ <keyword>READ</keyword>
+ <keyword>READS</keyword>
+ <keyword>REAL</keyword>
+ <keyword>RECURSIVE</keyword>
+ <keyword>REDO</keyword>
+ <keyword>REF</keyword>
+ <keyword>REFERENCES</keyword>
+ <keyword>REFERENCING</keyword>
+ <keyword>RELATIVE</keyword>
+ <keyword>RELEASE</keyword>
+ <keyword>REPEAT</keyword>
+ <keyword>RESIGNAL</keyword>
+ <keyword>RESTRICT</keyword>
+ <keyword>RESULT</keyword>
+ <keyword>RETURN</keyword>
+ <keyword>RETURNS</keyword>
+ <keyword>REVOKE</keyword>
+ <keyword>RIGHT</keyword>
+ <keyword>ROLE</keyword>
+ <keyword>ROLLBACK</keyword>
+ <keyword>ROLLUP</keyword>
+ <keyword>ROUTINE</keyword>
+ <keyword>ROW</keyword>
+ <keyword>ROWS</keyword>
+ <keyword>SAVEPOINT</keyword>
+ <keyword>SCHEMA</keyword>
+ <keyword>SCROLL</keyword>
+ <keyword>SEARCH</keyword>
+ <keyword>SECOND</keyword>
+ <keyword>SECTION</keyword>
+ <keyword>SELECT</keyword>
+ <keyword>SESSION</keyword>
+ <keyword>SESSION_USER</keyword>
+ <keyword>SET</keyword>
+ <keyword>SETS</keyword>
+ <keyword>SIGNAL</keyword>
+ <keyword>SIMILAR</keyword>
+ <keyword>SIZE</keyword>
+ <keyword>SMALLINT</keyword>
+ <keyword>SOME</keyword>
+ <keyword>SPACE</keyword>
+ <keyword>SPECIFIC</keyword>
+ <keyword>SPECIFICTYPE</keyword>
+ <keyword>SQL</keyword>
+ <keyword>SQLEXCEPTION</keyword>
+ <keyword>SQLSTATE</keyword>
+ <keyword>SQLWARNING</keyword>
+ <keyword>START</keyword>
+ <keyword>STATE</keyword>
+ <keyword>STATIC</keyword>
+ <keyword>SYSTEM_USER</keyword>
+ <keyword>TABLE</keyword>
+ <keyword>TEMPORARY</keyword>
+ <keyword>THEN</keyword>
+ <keyword>TIME</keyword>
+ <keyword>TIMESTAMP</keyword>
+ <keyword>TIMEZONE_HOUR</keyword>
+ <keyword>TIMEZONE_MINUTE</keyword>
+ <keyword>TO</keyword>
+ <keyword>TRAILING</keyword>
+ <keyword>TRANSACTION</keyword>
+ <keyword>TRANSLATION</keyword>
+ <keyword>TREAT</keyword>
+ <keyword>TRIGGER</keyword>
+ <keyword>TRUE</keyword>
+ <keyword>UNDER</keyword>
+ <keyword>UNDO</keyword>
+ <keyword>UNION</keyword>
+ <keyword>UNIQUE</keyword>
+ <keyword>UNKNOWN</keyword>
+ <keyword>UNNEST</keyword>
+ <keyword>UNTIL</keyword>
+ <keyword>UPDATE</keyword>
+ <keyword>USAGE</keyword>
+ <keyword>USER</keyword>
+ <keyword>USING</keyword>
+ <keyword>VALUE</keyword>
+ <keyword>VALUES</keyword>
+ <keyword>VARCHAR</keyword>
+ <keyword>VARYING</keyword>
+ <keyword>VIEW</keyword>
+ <keyword>WHEN</keyword>
+ <keyword>WHENEVER</keyword>
+ <keyword>WHERE</keyword>
+ <keyword>WHILE</keyword>
+ <keyword>WITH</keyword>
+ <keyword>WITHOUT</keyword>
+ <keyword>WORK</keyword>
+ <keyword>WRITE</keyword>
+ <keyword>YEAR</keyword>
+ <keyword>ZONE</keyword>
+ <!-- non reserved -->
+ <keyword>ABS</keyword>
+ <keyword>ADA</keyword>
+ <keyword>ADMIN</keyword>
+ <keyword>ASENSITIVE</keyword>
+ <keyword>ASSIGNMENT</keyword>
+ <keyword>ASYMMETRIC</keyword>
+ <keyword>ATOMIC</keyword>
+ <keyword>ATTRIBUTE</keyword>
+ <keyword>AVG</keyword>
+ <keyword>BIT_LENGTH</keyword>
+ <keyword>C</keyword>
+ <keyword>CALLED</keyword>
+ <keyword>CARDINALITY</keyword>
+ <keyword>CATALOG_NAME</keyword>
+ <keyword>CHAIN</keyword>
+ <keyword>CHAR_LENGTH</keyword>
+ <keyword>CHARACTERISTICS</keyword>
+ <keyword>CHARACTER_LENGTH</keyword>
+ <keyword>CHARACTER_SET_CATALOG</keyword>
+ <keyword>CHARACTER_SET_NAME</keyword>
+ <keyword>CHARACTER_SET_SCHEMA</keyword>
+ <keyword>CHECKED</keyword>
+ <keyword>CLASS_ORIGIN</keyword>
+ <keyword>COALESCE</keyword>
+ <keyword>COBOL</keyword>
+ <keyword>COLLATION_CATALOG</keyword>
+ <keyword>COLLATION_NAME</keyword>
+ <keyword>COLLATION_SCHEMA</keyword>
+ <keyword>COLUMN_NAME</keyword>
+ <keyword>COMMAND_FUNCTION</keyword>
+ <keyword>COMMAND_FUNCTION_CODE</keyword>
+ <keyword>COMMITTED</keyword>
+ <keyword>CONDITION_IDENTIFIER</keyword>
+ <keyword>CONDITION_NUMBER</keyword>
+ <keyword>CONNECTION_NAME</keyword>
+ <keyword>CONSTRAINT_CATALOG</keyword>
+ <keyword>CONSTRAINT_NAME</keyword>
+ <keyword>CONSTRAINT_SCHEMA</keyword>
+ <keyword>CONTAINS</keyword>
+ <keyword>CONVERT</keyword>
+ <keyword>COUNT</keyword>
+ <keyword>CURSOR_NAME</keyword>
+ <keyword>DATETIME_INTERVAL_CODE</keyword>
+ <keyword>DATETIME_INTERVAL_PRECISION</keyword>
+ <keyword>DEFINED</keyword>
+ <keyword>DEFINER</keyword>
+ <keyword>DEGREE</keyword>
+ <keyword>DERIVED</keyword>
+ <keyword>DISPATCH</keyword>
+ <keyword>EVERY</keyword>
+ <keyword>EXTRACT</keyword>
+ <keyword>FINAL</keyword>
+ <keyword>FORTRAN</keyword>
+ <keyword>G</keyword>
+ <keyword>GENERATED</keyword>
+ <keyword>GRANTED</keyword>
+ <keyword>HIERARCHY</keyword>
+ <keyword>IMPLEMENTATION</keyword>
+ <keyword>INSENSITIVE</keyword>
+ <keyword>INSTANCE</keyword>
+ <keyword>INSTANTIABLE</keyword>
+ <keyword>INVOKER</keyword>
+ <keyword>K</keyword>
+ <keyword>KEY_MEMBER</keyword>
+ <keyword>KEY_TYPE</keyword>
+ <keyword>LENGTH</keyword>
+ <keyword>LOWER</keyword>
+ <keyword>M</keyword>
+ <keyword>MAX</keyword>
+ <keyword>MIN</keyword>
+ <keyword>MESSAGE_LENGTH</keyword>
+ <keyword>MESSAGE_OCTET_LENGTH</keyword>
+ <keyword>MESSAGE_TEXT</keyword>
+ <keyword>MOD</keyword>
+ <keyword>MORE</keyword>
+ <keyword>MUMPS</keyword>
+ <keyword>NAME</keyword>
+ <keyword>NULLABLE</keyword>
+ <keyword>NUMBER</keyword>
+ <keyword>NULLIF</keyword>
+ <keyword>OCTET_LENGTH</keyword>
+ <keyword>ORDERING</keyword>
+ <keyword>OPTIONS</keyword>
+ <keyword>OVERLAY</keyword>
+ <keyword>OVERRIDING</keyword>
+ <keyword>PASCAL</keyword>
+ <keyword>PARAMETER_MODE</keyword>
+ <keyword>PARAMETER_NAME</keyword>
+ <keyword>PARAMETER_ORDINAL_POSITION</keyword>
+ <keyword>PARAMETER_SPECIFIC_CATALOG</keyword>
+ <keyword>PARAMETER_SPECIFIC_NAME</keyword>
+ <keyword>PARAMETER_SPECIFIC_SCHEMA</keyword>
+ <keyword>PLI</keyword>
+ <keyword>POSITION</keyword>
+ <keyword>REPEATABLE</keyword>
+ <keyword>RETURNED_CARDINALITY</keyword>
+ <keyword>RETURNED_LENGTH</keyword>
+ <keyword>RETURNED_OCTET_LENGTH</keyword>
+ <keyword>RETURNED_SQLSTATE</keyword>
+ <keyword>ROUTINE_CATALOG</keyword>
+ <keyword>ROUTINE_NAME</keyword>
+ <keyword>ROUTINE_SCHEMA</keyword>
+ <keyword>ROW_COUNT</keyword>
+ <keyword>SCALE</keyword>
+ <keyword>SCHEMA_NAME</keyword>
+ <keyword>SCOPE</keyword>
+ <keyword>SECURITY</keyword>
+ <keyword>SELF</keyword>
+ <keyword>SENSITIVE</keyword>
+ <keyword>SERIALIZABLE</keyword>
+ <keyword>SERVER_NAME</keyword>
+ <keyword>SIMPLE</keyword>
+ <keyword>SOURCE</keyword>
+ <keyword>SPECIFIC_NAME</keyword>
+ <keyword>STATEMENT</keyword>
+ <keyword>STRUCTURE</keyword>
+ <keyword>STYLE</keyword>
+ <keyword>SUBCLASS_ORIGIN</keyword>
+ <keyword>SUBSTRING</keyword>
+ <keyword>SUM</keyword>
+ <keyword>SYMMETRIC</keyword>
+ <keyword>SYSTEM</keyword>
+ <keyword>TABLE_NAME</keyword>
+ <keyword>TOP_LEVEL_COUNT</keyword>
+ <keyword>TRANSACTIONS_COMMITTED</keyword>
+ <keyword>TRANSACTIONS_ROLLED_BACK</keyword>
+ <keyword>TRANSACTION_ACTIVE</keyword>
+ <keyword>TRANSFORM</keyword>
+ <keyword>TRANSFORMS</keyword>
+ <keyword>TRANSLATE</keyword>
+ <keyword>TRIGGER_CATALOG</keyword>
+ <keyword>TRIGGER_SCHEMA</keyword>
+ <keyword>TRIGGER_NAME</keyword>
+ <keyword>TRIM</keyword>
+ <keyword>TYPE</keyword>
+ <keyword>UNCOMMITTED</keyword>
+ <keyword>UNNAMED</keyword>
+ <keyword>UPPER</keyword>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/sql2003-hl.xml b/highlighting/sql2003-hl.xml
new file mode 100644
index 0000000..ac1d5d0
--- /dev/null
+++ b/highlighting/sql2003-hl.xml
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Syntax highlighting definition for SQL:1999
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2012 Michiel Hendriks, Martin Hujer, k42b3
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">--</highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>U'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>B'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>N'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>X'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <ignoreCase />
+ <!-- reserved -->
+ <keyword>A</keyword>
+ <keyword>ABS</keyword>
+ <keyword>ABSOLUTE</keyword>
+ <keyword>ACTION</keyword>
+ <keyword>ADA</keyword>
+ <keyword>ADMIN</keyword>
+ <keyword>AFTER</keyword>
+ <keyword>ALWAYS</keyword>
+ <keyword>ASC</keyword>
+ <keyword>ASSERTION</keyword>
+ <keyword>ASSIGNMENT</keyword>
+ <keyword>ATTRIBUTE</keyword>
+ <keyword>ATTRIBUTES</keyword>
+ <keyword>AVG</keyword>
+ <keyword>BEFORE</keyword>
+ <keyword>BERNOULLI</keyword>
+ <keyword>BREADTH</keyword>
+ <keyword>C</keyword>
+ <keyword>CARDINALITY</keyword>
+ <keyword>CASCADE</keyword>
+ <keyword>CATALOG_NAME</keyword>
+ <keyword>CATALOG</keyword>
+ <keyword>CEIL</keyword>
+ <keyword>CEILING</keyword>
+ <keyword>CHAIN</keyword>
+ <keyword>CHAR_LENGTH</keyword>
+ <keyword>CHARACTER_LENGTH</keyword>
+ <keyword>CHARACTER_SET_CATALOG</keyword>
+ <keyword>CHARACTER_SET_NAME</keyword>
+ <keyword>CHARACTER_SET_SCHEMA</keyword>
+ <keyword>CHARACTERISTICS</keyword>
+ <keyword>CHARACTERS</keyword>
+ <keyword>CHECKED</keyword>
+ <keyword>CLASS_ORIGIN</keyword>
+ <keyword>COALESCE</keyword>
+ <keyword>COBOL</keyword>
+ <keyword>CODE_UNITS</keyword>
+ <keyword>COLLATION_CATALOG</keyword>
+ <keyword>COLLATION_NAME</keyword>
+ <keyword>COLLATION_SCHEMA</keyword>
+ <keyword>COLLATION</keyword>
+ <keyword>COLLECT</keyword>
+ <keyword>COLUMN_NAME</keyword>
+ <keyword>COMMAND_FUNCTION_CODE</keyword>
+ <keyword>COMMAND_FUNCTION</keyword>
+ <keyword>COMMITTED</keyword>
+ <keyword>CONDITION_NUMBER</keyword>
+ <keyword>CONDITION</keyword>
+ <keyword>CONNECTION_NAME</keyword>
+ <keyword>CONSTRAINT_CATALOG</keyword>
+ <keyword>CONSTRAINT_NAME</keyword>
+ <keyword>CONSTRAINT_SCHEMA</keyword>
+ <keyword>CONSTRAINTS</keyword>
+ <keyword>CONSTRUCTORS</keyword>
+ <keyword>CONTAINS</keyword>
+ <keyword>CONVERT</keyword>
+ <keyword>CORR</keyword>
+ <keyword>COUNT</keyword>
+ <keyword>COVAR_POP</keyword>
+ <keyword>COVAR_SAMP</keyword>
+ <keyword>CUME_DIST</keyword>
+ <keyword>CURRENT_COLLATION</keyword>
+ <keyword>CURSOR_NAME</keyword>
+ <keyword>DATA</keyword>
+ <keyword>DATETIME_INTERVAL_CODE</keyword>
+ <keyword>DATETIME_INTERVAL_PRECISION</keyword>
+ <keyword>DEFAULTS</keyword>
+ <keyword>DEFERRABLE</keyword>
+ <keyword>DEFERRED</keyword>
+ <keyword>DEFINED</keyword>
+ <keyword>DEFINER</keyword>
+ <keyword>DEGREE</keyword>
+ <keyword>DENSE_RANK</keyword>
+ <keyword>DEPTH</keyword>
+ <keyword>DERIVED</keyword>
+ <keyword>DESC</keyword>
+ <keyword>DESCRIPTOR</keyword>
+ <keyword>DIAGNOSTICS</keyword>
+ <keyword>DISPATCH</keyword>
+ <keyword>DOMAIN</keyword>
+ <keyword>DYNAMIC_FUNCTION_CODE</keyword>
+ <keyword>DYNAMIC_FUNCTION</keyword>
+ <keyword>EQUALS</keyword>
+ <keyword>EVERY</keyword>
+ <keyword>EXCEPTION</keyword>
+ <keyword>EXCLUDE</keyword>
+ <keyword>EXCLUDING</keyword>
+ <keyword>EXP</keyword>
+ <keyword>EXTRACT</keyword>
+ <keyword>FINAL</keyword>
+ <keyword>FIRST</keyword>
+ <keyword>FLOOR</keyword>
+ <keyword>FOLLOWING</keyword>
+ <keyword>FORTRAN</keyword>
+ <keyword>FOUND</keyword>
+ <keyword>FUSION</keyword>
+ <keyword>G</keyword>
+ <keyword>GENERAL</keyword>
+ <keyword>GO</keyword>
+ <keyword>GOTO</keyword>
+ <keyword>GRANTED</keyword>
+ <keyword>HIERARCHY</keyword>
+ <keyword>IMPLEMENTATION</keyword>
+ <keyword>INCLUDING</keyword>
+ <keyword>INCREMENT</keyword>
+ <keyword>INITIALLY</keyword>
+ <keyword>INSTANCE</keyword>
+ <keyword>INSTANTIABLE</keyword>
+ <keyword>INTERSECTION</keyword>
+ <keyword>INVOKER</keyword>
+ <keyword>ISOLATION</keyword>
+ <keyword>K</keyword>
+ <keyword>KEY_MEMBER</keyword>
+ <keyword>KEY_TYPE</keyword>
+ <keyword>KEY</keyword>
+ <keyword>LAST</keyword>
+ <keyword>LENGTH</keyword>
+ <keyword>LEVEL</keyword>
+ <keyword>LN</keyword>
+ <keyword>LOCATOR</keyword>
+ <keyword>LOWER</keyword>
+ <keyword>M</keyword>
+ <keyword>MAP</keyword>
+ <keyword>MATCHED</keyword>
+ <keyword>MAX</keyword>
+ <keyword>MAXVALUE</keyword>
+ <keyword>MESSAGE_LENGTH</keyword>
+ <keyword>MESSAGE_OCTET_LENGTH</keyword>
+ <keyword>MESSAGE_TEXT</keyword>
+ <keyword>MIN</keyword>
+ <keyword>MINVALUE</keyword>
+ <keyword>MOD</keyword>
+ <keyword>MORE</keyword>
+ <keyword>MUMPS</keyword>
+ <keyword>NAME</keyword>
+ <keyword>NAMES</keyword>
+ <keyword>NESTING</keyword>
+ <keyword>NEXT</keyword>
+ <keyword>NORMALIZE</keyword>
+ <keyword>NORMALIZED</keyword>
+ <keyword>NULLABLE</keyword>
+ <keyword>NULLIF</keyword>
+ <keyword>NULLS</keyword>
+ <keyword>NUMBER</keyword>
+ <keyword>OBJECT</keyword>
+ <keyword>OCTET_LENGTH</keyword>
+ <keyword>OCTETS</keyword>
+ <keyword>OPTION</keyword>
+ <keyword>OPTIONS</keyword>
+ <keyword>ORDERING</keyword>
+ <keyword>ORDINALITY</keyword>
+ <keyword>OTHERS</keyword>
+ <keyword>OVERLAY</keyword>
+ <keyword>OVERRIDING</keyword>
+ <keyword>PAD</keyword>
+ <keyword>PARAMETER_MODE</keyword>
+ <keyword>PARAMETER_NAME</keyword>
+ <keyword>PARAMETER_ORDINAL_POSITION</keyword>
+ <keyword>PARAMETER_SPECIFIC_CATALOG</keyword>
+ <keyword>PARAMETER_SPECIFIC_NAME</keyword>
+ <keyword>PARAMETER_SPECIFIC_SCHEMA</keyword>
+ <keyword>PARTIAL</keyword>
+ <keyword>PASCAL</keyword>
+ <keyword>PATH</keyword>
+ <keyword>PERCENT_RANK</keyword>
+ <keyword>PERCENTILE_CONT</keyword>
+ <keyword>PERCENTILE_DISC</keyword>
+ <keyword>PLACING</keyword>
+ <keyword>PLI</keyword>
+ <keyword>POSITION</keyword>
+ <keyword>POWER</keyword>
+ <keyword>PRECEDING</keyword>
+ <keyword>PRESERVE</keyword>
+ <keyword>PRIOR</keyword>
+ <keyword>PRIVILEGES</keyword>
+ <keyword>PUBLIC</keyword>
+ <keyword>RANK</keyword>
+ <keyword>READ</keyword>
+ <keyword>RELATIVE</keyword>
+ <keyword>REPEATABLE</keyword>
+ <keyword>RESTART</keyword>
+ <keyword>RETURNED_CARDINALITY</keyword>
+ <keyword>RETURNED_LENGTH</keyword>
+ <keyword>RETURNED_OCTET_LENGTH</keyword>
+ <keyword>RETURNED_SQLSTATE</keyword>
+ <keyword>ROLE</keyword>
+ <keyword>ROUTINE_CATALOG</keyword>
+ <keyword>ROUTINE_NAME</keyword>
+ <keyword>ROUTINE_SCHEMA</keyword>
+ <keyword>ROUTINE</keyword>
+ <keyword>ROW_COUNT</keyword>
+ <keyword>ROW_NUMBER</keyword>
+ <keyword>SCALE</keyword>
+ <keyword>SCHEMA_NAME</keyword>
+ <keyword>SCHEMA</keyword>
+ <keyword>SCOPE_CATALOG</keyword>
+ <keyword>SCOPE_NAME</keyword>
+ <keyword>SCOPE_SCHEMA</keyword>
+ <keyword>SECTION</keyword>
+ <keyword>SECURITY</keyword>
+ <keyword>SELF</keyword>
+ <keyword>SEQUENCE</keyword>
+ <keyword>SERIALIZABLE</keyword>
+ <keyword>SERVER_NAME</keyword>
+ <keyword>SESSION</keyword>
+ <keyword>SETS</keyword>
+ <keyword>SIMPLE</keyword>
+ <keyword>SIZE</keyword>
+ <keyword>SOURCE</keyword>
+ <keyword>SPACE</keyword>
+ <keyword>SPECIFIC_NAME</keyword>
+ <keyword>SQRT</keyword>
+ <keyword>STATE</keyword>
+ <keyword>STATEMENT</keyword>
+ <keyword>STDDEV_POP</keyword>
+ <keyword>STDDEV_SAMP</keyword>
+ <keyword>STRUCTURE</keyword>
+ <keyword>STYLE</keyword>
+ <keyword>SUBCLASS_ORIGIN</keyword>
+ <keyword>SUBSTRING</keyword>
+ <keyword>SUM</keyword>
+ <keyword>TABLE_NAME</keyword>
+ <keyword>TABLESAMPLE</keyword>
+ <keyword>TEMPORARY</keyword>
+ <keyword>TIES</keyword>
+ <keyword>TOP_LEVEL_COUNT</keyword>
+ <keyword>TRANSACTION_ACTIVE</keyword>
+ <keyword>TRANSACTION</keyword>
+ <keyword>TRANSACTIONS_COMMITTED</keyword>
+ <keyword>TRANSACTIONS_ROLLED_BACK</keyword>
+ <keyword>TRANSFORM</keyword>
+ <keyword>TRANSFORMS</keyword>
+ <keyword>TRANSLATE</keyword>
+ <keyword>TRIGGER_CATALOG</keyword>
+ <keyword>TRIGGER_NAME</keyword>
+ <keyword>TRIGGER_SCHEMA</keyword>
+ <keyword>TRIM</keyword>
+ <keyword>TYPE</keyword>
+ <keyword>UNBOUNDED</keyword>
+ <keyword>UNCOMMITTED</keyword>
+ <keyword>UNDER</keyword>
+ <keyword>UNNAMED</keyword>
+ <keyword>USAGE</keyword>
+ <keyword>USER_DEFINED_TYPE_CATALOG</keyword>
+ <keyword>USER_DEFINED_TYPE_CODE</keyword>
+ <keyword>USER_DEFINED_TYPE_NAME</keyword>
+ <keyword>USER_DEFINED_TYPE_SCHEMA</keyword>
+ <keyword>VIEW</keyword>
+ <keyword>WORK</keyword>
+ <keyword>WRITE</keyword>
+ <keyword>ZONE</keyword>
+ <!-- non reserved -->
+ <keyword>ADD</keyword>
+ <keyword>ALL</keyword>
+ <keyword>ALLOCATE</keyword>
+ <keyword>ALTER</keyword>
+ <keyword>AND</keyword>
+ <keyword>ANY</keyword>
+ <keyword>ARE</keyword>
+ <keyword>ARRAY</keyword>
+ <keyword>AS</keyword>
+ <keyword>ASENSITIVE</keyword>
+ <keyword>ASYMMETRIC</keyword>
+ <keyword>AT</keyword>
+ <keyword>ATOMIC</keyword>
+ <keyword>AUTHORIZATION</keyword>
+ <keyword>BEGIN</keyword>
+ <keyword>BETWEEN</keyword>
+ <keyword>BIGINT</keyword>
+ <keyword>BINARY</keyword>
+ <keyword>BLOB</keyword>
+ <keyword>BOOLEAN</keyword>
+ <keyword>BOTH</keyword>
+ <keyword>BY</keyword>
+ <keyword>CALL</keyword>
+ <keyword>CALLED</keyword>
+ <keyword>CASCADED</keyword>
+ <keyword>CASE</keyword>
+ <keyword>CAST</keyword>
+ <keyword>CHAR</keyword>
+ <keyword>CHARACTER</keyword>
+ <keyword>CHECK</keyword>
+ <keyword>CLOB</keyword>
+ <keyword>CLOSE</keyword>
+ <keyword>COLLATE</keyword>
+ <keyword>COLUMN</keyword>
+ <keyword>COMMIT</keyword>
+ <keyword>CONNECT</keyword>
+ <keyword>CONSTRAINT</keyword>
+ <keyword>CONTINUE</keyword>
+ <keyword>CORRESPONDING</keyword>
+ <keyword>CREATE</keyword>
+ <keyword>CROSS</keyword>
+ <keyword>CUBE</keyword>
+ <keyword>CURRENT_DATE</keyword>
+ <keyword>CURRENT_DEFAULT_TRANSFORM_GROUP</keyword>
+ <keyword>CURRENT_PATH</keyword>
+ <keyword>CURRENT_ROLE</keyword>
+ <keyword>CURRENT_TIME</keyword>
+ <keyword>CURRENT_TIMESTAMP</keyword>
+ <keyword>CURRENT_TRANSFORM_GROUP_FOR_TYPE</keyword>
+ <keyword>CURRENT_USER</keyword>
+ <keyword>CURRENT</keyword>
+ <keyword>CURSOR</keyword>
+ <keyword>CYCLE</keyword>
+ <keyword>DATE</keyword>
+ <keyword>DAY</keyword>
+ <keyword>DEALLOCATE</keyword>
+ <keyword>DEC</keyword>
+ <keyword>DECIMAL</keyword>
+ <keyword>DECLARE</keyword>
+ <keyword>DEFAULT</keyword>
+ <keyword>DELETE</keyword>
+ <keyword>DEREF</keyword>
+ <keyword>DESCRIBE</keyword>
+ <keyword>DETERMINISTIC</keyword>
+ <keyword>DISCONNECT</keyword>
+ <keyword>DISTINCT</keyword>
+ <keyword>DOUBLE</keyword>
+ <keyword>DROP</keyword>
+ <keyword>DYNAMIC</keyword>
+ <keyword>EACH</keyword>
+ <keyword>ELEMENT</keyword>
+ <keyword>ELSE</keyword>
+ <keyword>END</keyword>
+ <keyword>END-EXEC</keyword>
+ <keyword>ESCAPE</keyword>
+ <keyword>EXCEPT</keyword>
+ <keyword>EXEC</keyword>
+ <keyword>EXECUTE</keyword>
+ <keyword>EXISTS</keyword>
+ <keyword>EXTERNAL</keyword>
+ <keyword>FALSE</keyword>
+ <keyword>FETCH</keyword>
+ <keyword>FILTER</keyword>
+ <keyword>FLOAT</keyword>
+ <keyword>FOR</keyword>
+ <keyword>FOREIGN</keyword>
+ <keyword>FREE</keyword>
+ <keyword>FROM</keyword>
+ <keyword>FULL</keyword>
+ <keyword>FUNCTION</keyword>
+ <keyword>GET</keyword>
+ <keyword>GLOBAL</keyword>
+ <keyword>GRANT</keyword>
+ <keyword>GROUP</keyword>
+ <keyword>GROUPING</keyword>
+ <keyword>HAVING</keyword>
+ <keyword>HOLD</keyword>
+ <keyword>HOUR</keyword>
+ <keyword>IDENTITY</keyword>
+ <keyword>IMMEDIATE</keyword>
+ <keyword>IN</keyword>
+ <keyword>INDICATOR</keyword>
+ <keyword>INNER</keyword>
+ <keyword>INOUT</keyword>
+ <keyword>INPUT</keyword>
+ <keyword>INSENSITIVE</keyword>
+ <keyword>INSERT</keyword>
+ <keyword>INT</keyword>
+ <keyword>INTEGER</keyword>
+ <keyword>INTERSECT</keyword>
+ <keyword>INTERVAL</keyword>
+ <keyword>INTO</keyword>
+ <keyword>IS</keyword>
+ <keyword>ISOLATION</keyword>
+ <keyword>JOIN</keyword>
+ <keyword>LANGUAGE</keyword>
+ <keyword>LARGE</keyword>
+ <keyword>LATERAL</keyword>
+ <keyword>LEADING</keyword>
+ <keyword>LEFT</keyword>
+ <keyword>LIKE</keyword>
+ <keyword>LOCAL</keyword>
+ <keyword>LOCALTIME</keyword>
+ <keyword>LOCALTIMESTAMP</keyword>
+ <keyword>MATCH</keyword>
+ <keyword>MEMBER</keyword>
+ <keyword>MERGE</keyword>
+ <keyword>METHOD</keyword>
+ <keyword>MINUTE</keyword>
+ <keyword>MODIFIES</keyword>
+ <keyword>MODULE</keyword>
+ <keyword>MONTH</keyword>
+ <keyword>MULTISET</keyword>
+ <keyword>NATIONAL</keyword>
+ <keyword>NATURAL</keyword>
+ <keyword>NCHAR</keyword>
+ <keyword>NCLOB</keyword>
+ <keyword>NEW</keyword>
+ <keyword>NO</keyword>
+ <keyword>NONE</keyword>
+ <keyword>NOT</keyword>
+ <keyword>NULL</keyword>
+ <keyword>NUMERIC</keyword>
+ <keyword>OF</keyword>
+ <keyword>OLD</keyword>
+ <keyword>ON</keyword>
+ <keyword>ONLY</keyword>
+ <keyword>OPEN</keyword>
+ <keyword>OR</keyword>
+ <keyword>ORDER</keyword>
+ <keyword>OUT</keyword>
+ <keyword>OUTER</keyword>
+ <keyword>OUTPUT</keyword>
+ <keyword>OVER</keyword>
+ <keyword>OVERLAPS</keyword>
+ <keyword>PARAMETER</keyword>
+ <keyword>PARTITION</keyword>
+ <keyword>PRECISION</keyword>
+ <keyword>PREPARE</keyword>
+ <keyword>PRIMARY</keyword>
+ <keyword>PROCEDURE</keyword>
+ <keyword>RANGE</keyword>
+ <keyword>READS</keyword>
+ <keyword>REAL</keyword>
+ <keyword>RECURSIVE</keyword>
+ <keyword>REF</keyword>
+ <keyword>REFERENCES</keyword>
+ <keyword>REFERENCING</keyword>
+ <keyword>REGR_AVGX</keyword>
+ <keyword>REGR_AVGY</keyword>
+ <keyword>REGR_COUNT</keyword>
+ <keyword>REGR_INTERCEPT</keyword>
+ <keyword>REGR_R2</keyword>
+ <keyword>REGR_SLOPE</keyword>
+ <keyword>REGR_SXX</keyword>
+ <keyword>REGR_SXY</keyword>
+ <keyword>REGR_SYY</keyword>
+ <keyword>RELEASE</keyword>
+ <keyword>RESULT</keyword>
+ <keyword>RETURN</keyword>
+ <keyword>RETURNS</keyword>
+ <keyword>REVOKE</keyword>
+ <keyword>RIGHT</keyword>
+ <keyword>ROLLBACK</keyword>
+ <keyword>ROLLUP</keyword>
+ <keyword>ROW</keyword>
+ <keyword>ROWS</keyword>
+ <keyword>SAVEPOINT</keyword>
+ <keyword>SCROLL</keyword>
+ <keyword>SEARCH</keyword>
+ <keyword>SECOND</keyword>
+ <keyword>SELECT</keyword>
+ <keyword>SENSITIVE</keyword>
+ <keyword>SESSION_USER</keyword>
+ <keyword>SET</keyword>
+ <keyword>SIMILAR</keyword>
+ <keyword>SMALLINT</keyword>
+ <keyword>SOME</keyword>
+ <keyword>SPECIFIC</keyword>
+ <keyword>SPECIFICTYPE</keyword>
+ <keyword>SQL</keyword>
+ <keyword>SQLEXCEPTION</keyword>
+ <keyword>SQLSTATE</keyword>
+ <keyword>SQLWARNING</keyword>
+ <keyword>START</keyword>
+ <keyword>STATIC</keyword>
+ <keyword>SUBMULTISET</keyword>
+ <keyword>SYMMETRIC</keyword>
+ <keyword>SYSTEM_USER</keyword>
+ <keyword>SYSTEM</keyword>
+ <keyword>TABLE</keyword>
+ <keyword>THEN</keyword>
+ <keyword>TIME</keyword>
+ <keyword>TIMESTAMP</keyword>
+ <keyword>TIMEZONE_HOUR</keyword>
+ <keyword>TIMEZONE_MINUTE</keyword>
+ <keyword>TO</keyword>
+ <keyword>TRAILING</keyword>
+ <keyword>TRANSLATION</keyword>
+ <keyword>TREAT</keyword>
+ <keyword>TRIGGER</keyword>
+ <keyword>TRUE</keyword>
+ <keyword>UESCAPE</keyword>
+ <keyword>UNION</keyword>
+ <keyword>UNIQUE</keyword>
+ <keyword>UNKNOWN</keyword>
+ <keyword>UNNEST</keyword>
+ <keyword>UPDATE</keyword>
+ <keyword>UPPER</keyword>
+ <keyword>USER</keyword>
+ <keyword>USING</keyword>
+ <keyword>VALUE</keyword>
+ <keyword>VALUES</keyword>
+ <keyword>VAR_POP</keyword>
+ <keyword>VAR_SAMP</keyword>
+ <keyword>VARCHAR</keyword>
+ <keyword>VARYING</keyword>
+ <keyword>WHEN</keyword>
+ <keyword>WHENEVER</keyword>
+ <keyword>WHERE</keyword>
+ <keyword>WIDTH_BUCKET</keyword>
+ <keyword>WINDOW</keyword>
+ <keyword>WITH</keyword>
+ <keyword>WITHIN</keyword>
+ <keyword>WITHOUT</keyword>
+ <keyword>YEAR</keyword>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/sql92-hl.xml b/highlighting/sql92-hl.xml
new file mode 100644
index 0000000..111c519
--- /dev/null
+++ b/highlighting/sql92-hl.xml
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Syntax highlighting definition for SQL-92
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2012 Michiel Hendriks, Martin Hujer, k42b3
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+-->
+<highlighters>
+ <highlighter type="oneline-comment">--</highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>B'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>N'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="string">
+ <string>X'</string>
+ <endString>'</endString>
+ <doubleEscapes />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <ignoreCase />
+ <!-- reserved -->
+ <keyword>ABSOLUTE</keyword>
+ <keyword>ACTION</keyword>
+ <keyword>ADD</keyword>
+ <keyword>ALL</keyword>
+ <keyword>ALLOCATE</keyword>
+ <keyword>ALTER</keyword>
+ <keyword>AND</keyword>
+ <keyword>ANY</keyword>
+ <keyword>ARE</keyword>
+ <keyword>AS</keyword>
+ <keyword>ASC</keyword>
+ <keyword>ASSERTION</keyword>
+ <keyword>AT</keyword>
+ <keyword>AUTHORIZATION</keyword>
+ <keyword>AVG</keyword>
+ <keyword>BEGIN</keyword>
+ <keyword>BETWEEN</keyword>
+ <keyword>BIT_LENGTH</keyword>
+ <keyword>BIT</keyword>
+ <keyword>BOTH</keyword>
+ <keyword>BY</keyword>
+ <keyword>CASCADE</keyword>
+ <keyword>CASCADED</keyword>
+ <keyword>CASE</keyword>
+ <keyword>CAST</keyword>
+ <keyword>CATALOG</keyword>
+ <keyword>CHAR_LENGTH</keyword>
+ <keyword>CHAR</keyword>
+ <keyword>CHARACTER_LENGTH</keyword>
+ <keyword>CHARACTER</keyword>
+ <keyword>CHECK</keyword>
+ <keyword>CLOSE</keyword>
+ <keyword>COALESCE</keyword>
+ <keyword>COLLATE</keyword>
+ <keyword>COLLATION</keyword>
+ <keyword>COLUMN</keyword>
+ <keyword>COMMIT</keyword>
+ <keyword>CONNECT</keyword>
+ <keyword>CONNECTION</keyword>
+ <keyword>CONSTRAINT</keyword>
+ <keyword>CONSTRAINTS</keyword>
+ <keyword>CONTINUE</keyword>
+ <keyword>CONVERT</keyword>
+ <keyword>CORRESPONDING</keyword>
+ <keyword>CREATE</keyword>
+ <keyword>CROSS</keyword>
+ <keyword>CURRENT_DATE</keyword>
+ <keyword>CURRENT_TIME</keyword>
+ <keyword>CURRENT_TIMESTAMP</keyword>
+ <keyword>CURRENT_USER</keyword>
+ <keyword>CURRENT</keyword>
+ <keyword>CURSOR</keyword>
+ <keyword>DATE</keyword>
+ <keyword>DAY</keyword>
+ <keyword>DEALLOCATE</keyword>
+ <keyword>DEC</keyword>
+ <keyword>DECIMAL</keyword>
+ <keyword>DECLARE</keyword>
+ <keyword>DEFAULT</keyword>
+ <keyword>DEFERRABLE</keyword>
+ <keyword>DEFERRED</keyword>
+ <keyword>DELETE</keyword>
+ <keyword>DESC</keyword>
+ <keyword>DESCRIBE</keyword>
+ <keyword>DESCRIPTOR</keyword>
+ <keyword>DIAGNOSTICS</keyword>
+ <keyword>DISCONNECT</keyword>
+ <keyword>DISTINCT</keyword>
+ <keyword>DOMAIN</keyword>
+ <keyword>DOUBLE</keyword>
+ <keyword>DROP</keyword>
+ <keyword>ELSE</keyword>
+ <keyword>END</keyword>
+ <keyword>END-EXEC</keyword>
+ <keyword>ESCAPE</keyword>
+ <keyword>EXCEPT</keyword>
+ <keyword>EXCEPTION</keyword>
+ <keyword>EXEC</keyword>
+ <keyword>EXECUTE</keyword>
+ <keyword>EXISTS</keyword>
+ <keyword>EXTERNAL</keyword>
+ <keyword>EXTRACT</keyword>
+ <keyword>FALSE</keyword>
+ <keyword>FETCH</keyword>
+ <keyword>FIRST</keyword>
+ <keyword>FLOAT</keyword>
+ <keyword>FOR</keyword>
+ <keyword>FOREIGN</keyword>
+ <keyword>FOUND</keyword>
+ <keyword>FROM</keyword>
+ <keyword>FULL</keyword>
+ <keyword>GET</keyword>
+ <keyword>GLOBAL</keyword>
+ <keyword>GO</keyword>
+ <keyword>GOTO</keyword>
+ <keyword>GRANT</keyword>
+ <keyword>GROUP</keyword>
+ <keyword>HAVING</keyword>
+ <keyword>HOUR</keyword>
+ <keyword>IDENTITY</keyword>
+ <keyword>IMMEDIATE</keyword>
+ <keyword>IN</keyword>
+ <keyword>INDICATOR</keyword>
+ <keyword>INITIALLY</keyword>
+ <keyword>INNER</keyword>
+ <keyword>INPUT</keyword>
+ <keyword>INSENSITIVE</keyword>
+ <keyword>INSERT</keyword>
+ <keyword>INT</keyword>
+ <keyword>INTEGER</keyword>
+ <keyword>INTERSECT</keyword>
+ <keyword>INTERVAL</keyword>
+ <keyword>INTO</keyword>
+ <keyword>IS</keyword>
+ <keyword>ISOLATION</keyword>
+ <keyword>JOIN</keyword>
+ <keyword>KEY</keyword>
+ <keyword>LANGUAGE</keyword>
+ <keyword>LAST</keyword>
+ <keyword>LEADING</keyword>
+ <keyword>LEFT</keyword>
+ <keyword>LEVEL</keyword>
+ <keyword>LIKE</keyword>
+ <keyword>LOCAL</keyword>
+ <keyword>LOWER</keyword>
+ <keyword>MATCH</keyword>
+ <keyword>MAX</keyword>
+ <keyword>MIN</keyword>
+ <keyword>MINUTE</keyword>
+ <keyword>MODULE</keyword>
+ <keyword>MONTH</keyword>
+ <keyword>NAMES</keyword>
+ <keyword>NATIONAL</keyword>
+ <keyword>NATURAL</keyword>
+ <keyword>NCHAR</keyword>
+ <keyword>NEXT</keyword>
+ <keyword>NO</keyword>
+ <keyword>NOT</keyword>
+ <keyword>NULL</keyword>
+ <keyword>NULLIF</keyword>
+ <keyword>NUMERIC</keyword>
+ <keyword>OCTET_LENGTH</keyword>
+ <keyword>OF</keyword>
+ <keyword>ON</keyword>
+ <keyword>ONLY</keyword>
+ <keyword>OPEN</keyword>
+ <keyword>OPTION</keyword>
+ <keyword>OR</keyword>
+ <keyword>ORDER</keyword>
+ <keyword>OUTER</keyword>
+ <keyword>OUTPUT</keyword>
+ <keyword>OVERLAPS</keyword>
+ <keyword>PAD</keyword>
+ <keyword>PARTIAL</keyword>
+ <keyword>POSITION</keyword>
+ <keyword>PRECISION</keyword>
+ <keyword>PREPARE</keyword>
+ <keyword>PRESERVE</keyword>
+ <keyword>PRIMARY</keyword>
+ <keyword>PRIOR</keyword>
+ <keyword>PRIVILEGES</keyword>
+ <keyword>PROCEDURE</keyword>
+ <keyword>PUBLIC</keyword>
+ <keyword>READ</keyword>
+ <keyword>REAL</keyword>
+ <keyword>REFERENCES</keyword>
+ <keyword>RELATIVE</keyword>
+ <keyword>RESTRICT</keyword>
+ <keyword>REVOKE</keyword>
+ <keyword>RIGHT</keyword>
+ <keyword>ROLLBACK</keyword>
+ <keyword>ROWS</keyword>
+ <keyword>SCHEMA</keyword>
+ <keyword>SCROLL</keyword>
+ <keyword>SECOND</keyword>
+ <keyword>SECTION</keyword>
+ <keyword>SELECT</keyword>
+ <keyword>SESSION_USER</keyword>
+ <keyword>SESSION</keyword>
+ <keyword>SET</keyword>
+ <keyword>SIZE</keyword>
+ <keyword>SMALLINT</keyword>
+ <keyword>SOME</keyword>
+ <keyword>SPACE</keyword>
+ <keyword>SQL</keyword>
+ <keyword>SQLCODE</keyword>
+ <keyword>SQLERROR</keyword>
+ <keyword>SQLSTATE</keyword>
+ <keyword>SUBSTRING</keyword>
+ <keyword>SUM</keyword>
+ <keyword>SYSTEM_USER</keyword>
+ <keyword>TABLE</keyword>
+ <keyword>TEMPORARY</keyword>
+ <keyword>THEN</keyword>
+ <keyword>TIME</keyword>
+ <keyword>TIMESTAMP</keyword>
+ <keyword>TIMEZONE_HOUR</keyword>
+ <keyword>TIMEZONE_MINUTE</keyword>
+ <keyword>TO</keyword>
+ <keyword>TRAILING</keyword>
+ <keyword>TRANSACTION</keyword>
+ <keyword>TRANSLATE</keyword>
+ <keyword>TRANSLATION</keyword>
+ <keyword>TRIM</keyword>
+ <keyword>TRUE</keyword>
+ <keyword>UNION</keyword>
+ <keyword>UNIQUE</keyword>
+ <keyword>UNKNOWN</keyword>
+ <keyword>UPDATE</keyword>
+ <keyword>UPPER</keyword>
+ <keyword>USAGE</keyword>
+ <keyword>USER</keyword>
+ <keyword>USING</keyword>
+ <keyword>VALUE</keyword>
+ <keyword>VALUES</keyword>
+ <keyword>VARCHAR</keyword>
+ <keyword>VARYING</keyword>
+ <keyword>VIEW</keyword>
+ <keyword>WHEN</keyword>
+ <keyword>WHENEVER</keyword>
+ <keyword>WHERE</keyword>
+ <keyword>WITH</keyword>
+ <keyword>WORK</keyword>
+ <keyword>WRITE</keyword>
+ <keyword>YEAR</keyword>
+ <keyword>ZONE</keyword>
+ <!-- non reserved keywords -->
+ <keyword>ADA</keyword>
+ <keyword>C</keyword>
+ <keyword>CATALOG_NAME</keyword>
+ <keyword>CHARACTER_SET_CATALOG</keyword>
+ <keyword>CHARACTER_SET_NAME</keyword>
+ <keyword>CHARACTER_SET_SCHEMA</keyword>
+ <keyword>CLASS_ORIGIN</keyword>
+ <keyword>COBOL</keyword>
+ <keyword>COLLATION_CATALOG</keyword>
+ <keyword>COLLATION_NAME</keyword>
+ <keyword>COLLATION_SCHEMA</keyword>
+ <keyword>COLUMN_NAME</keyword>
+ <keyword>COMMAND_FUNCTION</keyword>
+ <keyword>COMMITTED</keyword>
+ <keyword>CONDITION_NUMBER</keyword>
+ <keyword>CONNECTION_NAME</keyword>
+ <keyword>CONSTRAINT_CATALOG</keyword>
+ <keyword>CONSTRAINT_NAME</keyword>
+ <keyword>CONSTRAINT_SCHEMA</keyword>
+ <keyword>CURSOR_NAME</keyword>
+ <keyword>DATA</keyword>
+ <keyword>DATETIME_INTERVAL_CODE</keyword>
+ <keyword>DATETIME_INTERVAL_PRECISION</keyword>
+ <keyword>DYNAMIC_FUNCTION</keyword>
+ <keyword>FORTRAN</keyword>
+ <keyword>LENGTH</keyword>
+ <keyword>MESSAGE_LENGTH</keyword>
+ <keyword>MESSAGE_OCTET_LENGTH</keyword>
+ <keyword>MESSAGE_TEXT</keyword>
+ <keyword>MORE</keyword>
+ <keyword>MUMPS</keyword>
+ <keyword>NAME</keyword>
+ <keyword>NULLABLE</keyword>
+ <keyword>NUMBER</keyword>
+ <keyword>PASCAL</keyword>
+ <keyword>PLI</keyword>
+ <keyword>REPEATABLE</keyword>
+ <keyword>RETURNED_LENGTH</keyword>
+ <keyword>RETURNED_OCTET_LENGTH</keyword>
+ <keyword>RETURNED_SQLSTATE</keyword>
+ <keyword>ROW_COUNT</keyword>
+ <keyword>SCALE</keyword>
+ <keyword>SCHEMA_NAME</keyword>
+ <keyword>SERIALIZABLE</keyword>
+ <keyword>SERVER_NAME</keyword>
+ <keyword>SUBCLASS_ORIGIN</keyword>
+ <keyword>TABLE_NAME</keyword>
+ <keyword>TYPE</keyword>
+ <keyword>UNCOMMITTED</keyword>
+ <keyword>UNNAMED</keyword>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/upc-hl.xml b/highlighting/upc-hl.xml
new file mode 100644
index 0000000..a6b9688
--- /dev/null
+++ b/highlighting/upc-hl.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Syntax highlighting definition for Unified Parallel C
+
+xslthl - XSLT Syntax Highlighting
+http://sourceforge.net/projects/xslthl/
+Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks,
+ Viraj Sinha
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Michal Molhanec <mol1111 at users.sourceforge.net>
+Jirka Kosek <kosek at users.sourceforge.net>
+Michiel Hendriks <elmuerte at users.sourceforge.net>
+-->
+<!-- This file is a modified version of c-hl.xml adapted for UPC compatability
+ by , who in no way takes credit for the original creation of this
+ file or the rest of xslthl. -->
+<highlighters>
+ <highlighter type="multiline-comment">
+ <start>/**</start>
+ <end>*/</end>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="oneline-comment">
+ <start><![CDATA[/// ]]></start>
+ <style>doccomment</style>
+ </highlighter>
+ <highlighter type="multiline-comment">
+ <start>/*</start>
+ <end>*/</end>
+ </highlighter>
+ <highlighter type="oneline-comment">//</highlighter>
+ <highlighter type="oneline-comment">
+ <!-- use the online-comment highlighter to detect directives -->
+ <start>#</start>
+ <lineBreakEscape>\</lineBreakEscape>
+ <style>directive</style>
+ <solitary />
+ </highlighter>
+ <highlighter type="string">
+ <string>"</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="string">
+ <string>'</string>
+ <escape>\</escape>
+ </highlighter>
+ <highlighter type="hexnumber">
+ <prefix>0x</prefix>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="number">
+ <point>.</point>
+ <pointStarts />
+ <exponent>e</exponent>
+ <suffix>ul</suffix>
+ <suffix>lu</suffix>
+ <suffix>u</suffix>
+ <suffix>f</suffix>
+ <suffix>l</suffix>
+ <ignoreCase />
+ </highlighter>
+ <highlighter type="keywords">
+ <keyword>auto</keyword>
+ <keyword>_Bool</keyword>
+ <keyword>break</keyword>
+ <keyword>case</keyword>
+ <keyword>char</keyword>
+ <keyword>_Complex</keyword>
+ <keyword>const</keyword>
+ <keyword>continue</keyword>
+ <keyword>default</keyword>
+ <keyword>do</keyword>
+ <keyword>double</keyword>
+ <keyword>else</keyword>
+ <keyword>enum</keyword>
+ <keyword>extern</keyword>
+ <keyword>float</keyword>
+ <keyword>for</keyword>
+ <keyword>goto</keyword>
+ <keyword>if</keyword>
+ <keyword>_Imaginary</keyword>
+ <keyword>inline</keyword>
+ <keyword>int</keyword>
+ <keyword>long</keyword>
+ <keyword>register</keyword>
+ <keyword>relaxed</keyword>
+ <keyword>restrict</keyword>
+ <keyword>return</keyword>
+ <keyword>shared</keyword>
+ <keyword>strict</keyword>
+ <keyword>short</keyword>
+ <keyword>signed</keyword>
+ <keyword>sizeof</keyword>
+ <keyword>static</keyword>
+ <keyword>struct</keyword>
+ <keyword>switch</keyword>
+ <keyword>typedef</keyword>
+ <keyword>union</keyword>
+ <keyword>unsigned</keyword>
+ <keyword>upc_blocksizeof</keyword>
+ <keyword>upc_elemsizeof</keyword>
+ <keyword>upc_localsizeof</keyword>
+ <keyword>upc_lock_t</keyword>
+ <keyword>upc_forall</keyword>
+ <keyword>upc_barrier</keyword>
+ <keyword>upc_wait</keyword>
+ <keyword>upc_notify</keyword>
+ <keyword>upc_fence</keyword>
+ <keyword>void</keyword>
+ <keyword>volatile</keyword>
+ <keyword>while</keyword>
+ </highlighter>
+</highlighters>
diff --git a/highlighting/xslthl-config.xml b/highlighting/xslthl-config.xml
index b24e469..9751222 100644
--- a/highlighting/xslthl-config.xml
+++ b/highlighting/xslthl-config.xml
@@ -3,7 +3,7 @@
xslthl - XSLT Syntax Highlighting
http://sourceforge.net/projects/xslthl/
-Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks
+Copyright (C) 2005-2012 Michal Molhanec, Jirka Kosek, Michiel Hendriks
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -42,5 +42,15 @@ Michiel Hendriks <elmuerte at users.sourceforge.net>
<highlighter id="ruby" file="ruby-hl.xml" />
<highlighter id="perl" file="perl-hl.xml" />
<highlighter id="javascript" file="javascript-hl.xml" />
+ <highlighter id="bourne" file="bourne-hl.xml" />
+ <highlighter id="css" file="css21-hl.xml" />
+ <highlighter id="css21" file="css21-hl.xml" />
+ <highlighter id="cmake" file="cmake-hl.xml" />
+ <highlighter id="upc" file="upc-hl.xml" />
+ <highlighter id="lua" file="lua-hl.xml" />
+ <highlighter id="sql92" file="sql92-hl.xml" />
+ <highlighter id="sql1999" file="sql1999-hl.xml" />
+ <highlighter id="sql2003" file="sql2003-hl.xml" />
+ <highlighter id="sql" file="sql2003-hl.xml" />
<namespace prefix="xslthl" uri="http://xslthl.sf.net" />
</xslthl-config> \ No newline at end of file
diff --git a/html/admon.xsl b/html/admon.xsl
index 192f679..7e1e33a 100644
--- a/html/admon.xsl
+++ b/html/admon.xsl
@@ -3,7 +3,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: admon.xsl 9352 2012-05-12 23:17:11Z bobstayton $
+ $Id: admon.xsl 9728 2013-03-08 00:16:41Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -63,7 +63,7 @@
<div>
<xsl:call-template name="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
- <xsl:if test="$admon.style != ''">
+ <xsl:if test="$admon.style != '' and $make.clean.html = 0">
<xsl:attribute name="style">
<xsl:value-of select="$admon.style"/>
</xsl:attribute>
@@ -113,7 +113,7 @@
<xsl:with-param name="inherit" select="1"/>
</xsl:call-template>
<xsl:call-template name="id.attribute"/>
- <xsl:if test="$admon.style">
+ <xsl:if test="$admon.style != '' and $make.clean.html = 0">
<xsl:attribute name="style">
<xsl:value-of select="$admon.style"/>
</xsl:attribute>
diff --git a/html/autoidx.xsl b/html/autoidx.xsl
index 10844d3..c33996b 100644
--- a/html/autoidx.xsl
+++ b/html/autoidx.xsl
@@ -10,7 +10,7 @@
version="1.0">
<!-- ********************************************************************
- $Id: autoidx.xsl 9376 2012-05-24 18:32:40Z bobstayton $
+ $Id: autoidx.xsl 9707 2013-01-21 17:18:44Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -598,7 +598,7 @@
<xsl:apply-templates select="." mode="class.attribute"/>
<xsl:variable name="title">
<xsl:choose>
- <xsl:when test="&section;/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:when test="$index.prefer.titleabbrev != 0">
<xsl:apply-templates select="&section;" mode="titleabbrev.markup"/>
</xsl:when>
<xsl:otherwise>
diff --git a/html/autotoc.xsl b/html/autotoc.xsl
index e39ae26..864ea79 100644
--- a/html/autotoc.xsl
+++ b/html/autotoc.xsl
@@ -3,7 +3,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: autotoc.xsl 9295 2012-04-19 19:05:29Z bobstayton $
+ $Id: autotoc.xsl 9692 2012-12-16 02:31:34Z dcramer $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -68,6 +68,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:call-template name="manual-toc">
<xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
</xsl:call-template>
@@ -82,6 +87,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:apply-templates select="$nodes.plus" mode="toc">
<xsl:with-param name="toc-context" select="$toc-context"/>
</xsl:apply-templates>
@@ -94,6 +104,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:apply-templates select="$nodes" mode="toc">
<xsl:with-param name="toc-context" select="$toc-context"/>
</xsl:apply-templates>
@@ -107,6 +122,14 @@
</xsl:choose>
</xsl:template>
+<xsl:template name="toc.list.attributes">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:attribute name="class">toc</xsl:attribute>
+</xsl:template>
+
<xsl:template name="make.lots">
<xsl:param name="toc.params" select="''"/>
<xsl:param name="toc"/>
@@ -591,6 +614,8 @@
<xsl:template name="manual-toc">
<xsl:param name="toc-context" select="."/>
<xsl:param name="tocentry"/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
<!-- be careful, we don't want to change the current document to the other tree! -->
@@ -618,6 +643,11 @@
<xsl:if test="$tocentry/*">
<xsl:element name="{$toc.list.type}">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:call-template name="manual-toc">
<xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
</xsl:call-template>
diff --git a/html/block.xsl b/html/block.xsl
index bff561e..bbb7367 100644
--- a/html/block.xsl
+++ b/html/block.xsl
@@ -3,7 +3,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: block.xsl 9353 2012-05-12 23:24:54Z bobstayton $
+ $Id: block.xsl 9667 2012-11-26 23:10:44Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -249,7 +249,7 @@
<!-- ==================================================================== -->
-<xsl:template match="abstract|sidebar">
+<xsl:template match="sidebar">
<div>
<xsl:call-template name="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
@@ -264,6 +264,21 @@
<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+<xsl:template match="abstract">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
<!-- ==================================================================== -->
<xsl:template match="msgset">
diff --git a/html/chunk-common.xsl b/html/chunk-common.xsl
index c65dbac..693dc03 100644
--- a/html/chunk-common.xsl
+++ b/html/chunk-common.xsl
@@ -7,7 +7,7 @@
exclude-result-prefixes="exsl cf ng db">
<!-- ********************************************************************
- $Id: chunk-common.xsl 9362 2012-05-12 23:41:56Z bobstayton $
+ $Id: chunk-common.xsl 9717 2013-01-25 18:13:36Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -896,9 +896,10 @@
</xsl:when>
<xsl:when test="$css.decoration != 0">
<xsl:attribute name="style">
- <xsl:value-of select="concat('width:100; align:',
+ <xsl:value-of select="concat('width:100; text-align:',
$direction.align.start,
- ';')"/>
+ ';',
+ 'margin-', $direction.align.start, ': 0')"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
@@ -1292,7 +1293,7 @@
<xsl:variable name="currentdoc.key" >
<xsl:for-each select="$target.database" >
<xsl:value-of select="key('targetdoc-key',
- $current.docid)/@targetdoc" />
+ $current.docid)[1]/@targetdoc" />
</xsl:for-each>
</xsl:variable>
<xsl:choose>
@@ -1300,7 +1301,7 @@
<xsl:for-each select="$target.database" >
<xsl:call-template name="targetpath" >
<xsl:with-param name="dirnode"
- select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ select="key('targetdoc-key', $current.docid)[1]/parent::dir"/>
<xsl:with-param name="targetdoc" select="$targetdoc"/>
</xsl:call-template>
</xsl:for-each >
@@ -1325,7 +1326,7 @@
<!-- In either case, add baseuri from its document entry-->
<xsl:variable name="docbaseuri">
<xsl:for-each select="$target.database" >
- <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri" />
</xsl:for-each>
</xsl:variable>
<xsl:if test="$docbaseuri != ''" >
@@ -1337,7 +1338,7 @@
<!-- Just use any baseuri from its document entry -->
<xsl:variable name="docbaseuri">
<xsl:for-each select="$target.database" >
- <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" />
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri" />
</xsl:for-each>
</xsl:variable>
<xsl:if test="$docbaseuri != ''" >
@@ -1347,24 +1348,41 @@
</xsl:choose>
</xsl:variable>
- <!-- Form the href information -->
- <xsl:if test="not(contains($baseuri, ':'))">
- <!-- if not an absolute uri, add upward path from olink chunk -->
- <xsl:value-of select="$upward.from.path"/>
- </xsl:if>
+ <!-- Is this olink to be active? -->
+ <xsl:variable name="active.olink">
+ <xsl:choose>
+ <xsl:when test="$activate.external.olinks = 0">
+ <xsl:choose>
+ <xsl:when test="$current.docid = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = $current.docid">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
- <xsl:if test="$baseuri != ''">
- <xsl:value-of select="$baseuri"/>
- <xsl:if test="substring($target.href,1,1) != '#'">
- <!--xsl:text>/</xsl:text-->
+ <xsl:if test="$active.olink != 0">
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and
+ translate(substring($baseuri, string-length($baseuri) - 3),
+ 'PDF', 'pdf') = '.pdf'
+ and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
</xsl:if>
- </xsl:if>
- <!-- optionally turn off frag for PDF references -->
- <xsl:if test="not($insert.olink.pdf.frag = 0 and
- translate(substring($baseuri, string-length($baseuri) - 3),
- 'PDF', 'pdf') = '.pdf'
- and starts-with($target.href, '#') )">
- <xsl:value-of select="$target.href"/>
</xsl:if>
</xsl:if>
</xsl:template>
diff --git a/html/chunker.xsl b/html/chunker.xsl
index c6d01b2..785c4f7 100644
--- a/html/chunker.xsl
+++ b/html/chunker.xsl
@@ -9,7 +9,7 @@
extension-element-prefixes="saxon redirect lxslt exsl">
<!-- ********************************************************************
- $Id: chunker.xsl 9147 2011-11-12 00:05:44Z bobstayton $
+ $Id: chunker.xsl 9656 2012-10-29 18:09:53Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -60,13 +60,13 @@
<!-- put Saxon first to work around a bug in libxslt -->
<xsl:when test="element-available('saxon:output')">
<!-- Saxon doesn't make the chunks relative -->
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:when test="element-available('exsl:document')">
<!-- EXSL document does make the chunks relative, I think -->
<xsl:choose>
<xsl:when test="count(parent::*) = 0">
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$base.name"/>
@@ -75,7 +75,7 @@
</xsl:when>
<xsl:when test="element-available('redirect:write')">
<!-- Xalan doesn't make the chunks relative -->
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">
@@ -438,7 +438,7 @@
<xsl:with-param name="method" select="$method"/>
<xsl:with-param name="encoding" select="$encoding"/>
<xsl:with-param name="indent" select="'no'"/>
- <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
<xsl:with-param name="standalone" select="'no'"/>
<xsl:with-param name="doctype-public"/>
<xsl:with-param name="doctype-system"/>
diff --git a/html/component.xsl b/html/component.xsl
index ef6af71..6ef4926 100644
--- a/html/component.xsl
+++ b/html/component.xsl
@@ -3,7 +3,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: component.xsl 9356 2012-05-12 23:33:15Z bobstayton $
+ $Id: component.xsl 9500 2012-07-15 23:24:21Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -42,7 +42,6 @@
<xsl:element name="h{$level+1}">
<xsl:attribute name="class">title</xsl:attribute>
- <xsl:call-template name="id.attribute"/>
<xsl:call-template name="anchor">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="conditional" select="0"/>
diff --git a/html/docbook.xsl b/html/docbook.xsl
index 64fa19f..d3ce9d4 100644
--- a/html/docbook.xsl
+++ b/html/docbook.xsl
@@ -12,7 +12,7 @@
indent="no"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -125,18 +125,84 @@
</xsl:if>
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo
+ |bookinfo
+ |prefaceinfo
+ |chapterinfo
+ |appendixinfo
+ |sectioninfo
+ |sect1info
+ |sect2info
+ |sect3info
+ |sect4info
+ |sect5info
+ |referenceinfo
+ |refentryinfo
+ |partinfo
+ |info
+ |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -155,58 +221,28 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made"
- href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo
- |bookinfo
- |prefaceinfo
- |chapterinfo
- |appendixinfo
- |sectioninfo
- |sect1info
- |sect2info
- |sect3info
- |sect4info
- |sect5info
- |referenceinfo
- |refentryinfo
- |partinfo
- |info
- |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or
($draft.mode = 'maybe' and
ancestor-or-self::*[@status][1]/@status = 'draft'))
and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -337,6 +373,15 @@ body { background-image: url('</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>
diff --git a/html/ebnf.xsl b/html/ebnf.xsl
index 352a135..f6cbe54 100644
--- a/html/ebnf.xsl
+++ b/html/ebnf.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: ebnf.xsl 9358 2012-05-12 23:37:10Z bobstayton $
+ $Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -17,7 +17,7 @@
<doc:reference xmlns="">
<referenceinfo>
<releaseinfo role="meta">
-$Id: ebnf.xsl 9358 2012-05-12 23:37:10Z bobstayton $
+$Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
</releaseinfo>
<author><surname>Walsh</surname>
<firstname>Norman</firstname></author>
@@ -107,7 +107,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
<tr>
<td align="{$direction.align.start}" valign="top" width="3%">
<xsl:text>[</xsl:text>
- <xsl:number count="production" level="any"/>
+ <xsl:apply-templates select="." mode="label.markup"/>
<xsl:text>]</xsl:text>
</td>
<td align="{$direction.align.end}" valign="top" width="10%">
diff --git a/html/footnote.xsl b/html/footnote.xsl
index b665490..9a4e3c3 100644
--- a/html/footnote.xsl
+++ b/html/footnote.xsl
@@ -5,7 +5,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: footnote.xsl 9361 2012-05-12 23:39:44Z bobstayton $
+ $Id: footnote.xsl 9665 2012-11-08 14:26:20Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -19,23 +19,29 @@ The footnote text is handled in name="process.footnote".
The footnote marker gets an id of @id, while the
footnote text gets an id of #ftn.@id. They cross link to each other. -->
<xsl:template match="footnote">
- <xsl:variable name="href">
- <xsl:text>#ftn.</xsl:text>
+ <xsl:variable name="name">
<xsl:call-template name="object.id">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
</xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="$name"/>
+ </xsl:variable>
<a href="{$href}">
<xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:attribute name="name">
+ <xsl:value-of select="$name"/>
+ </xsl:attribute>
+ </xsl:if>
+
<sup>
<xsl:apply-templates select="." mode="class.attribute"/>
<xsl:call-template name="id.attribute">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
- <xsl:call-template name="anchor">
- <xsl:with-param name="conditional" select="0"/>
- </xsl:call-template>
<xsl:text>[</xsl:text>
<xsl:apply-templates select="." mode="footnote.number"/>
<xsl:text>]</xsl:text>
@@ -259,9 +265,10 @@ linkend/id: <xsl:value-of select="@linkend"/>
</xsl:when>
<xsl:when test="$css.decoration != 0">
<xsl:attribute name="style">
- <xsl:value-of select="concat('width:100; align:',
+ <xsl:value-of select="concat('width:100; text-align:',
$direction.align.start,
- ';')"/>
+ ';',
+ 'margin-', $direction.align.start, ': 0')"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
diff --git a/html/formal.xsl b/html/formal.xsl
index b9a55e9..2e80c96 100644
--- a/html/formal.xsl
+++ b/html/formal.xsl
@@ -3,7 +3,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: formal.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: formal.xsl 9501 2012-07-16 00:14:50Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -206,13 +206,15 @@
</xsl:when>
<xsl:otherwise>
<!-- do not use xsl:copy because of XHTML's needs -->
- <xsl:element name="table" namespace="">
- <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
- <xsl:call-template name="htmlTable"/>
- </xsl:element>
+ <div>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:element name="table" namespace="">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -430,13 +432,15 @@
<xsl:call-template name="informal.object"/>
</xsl:when>
<xsl:otherwise>
- <xsl:element name="table" namespace="">
- <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
- <xsl:call-template name="htmlTable"/>
- </xsl:element>
+ <div>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:element name="table" namespace="">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
diff --git a/html/glossary.xsl b/html/glossary.xsl
index 5fc2db2..6f49312 100644
--- a/html/glossary.xsl
+++ b/html/glossary.xsl
@@ -9,7 +9,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: glossary.xsl 9364 2012-05-12 23:43:04Z bobstayton $
+ $Id: glossary.xsl 9709 2013-01-22 18:56:09Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -242,7 +242,12 @@ GlossEntry ::=
</xsl:template>
<xsl:template match="glossentry/glossterm">
- <xsl:apply-templates/>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </span>
<xsl:if test="following-sibling::glossterm">, </xsl:if>
</xsl:template>
@@ -318,6 +323,9 @@ GlossEntry ::=
<xsl:template match="glossentry/glossdef">
<dd>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
<xsl:if test="glossseealso">
<p>
diff --git a/html/graphics.xsl b/html/graphics.xsl
index da5bf9a..ce0e6ed 100644
--- a/html/graphics.xsl
+++ b/html/graphics.xsl
@@ -11,7 +11,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: graphics.xsl 9367 2012-05-12 23:46:35Z bobstayton $
+ $Id: graphics.xsl 9710 2013-01-22 19:34:18Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -77,10 +77,17 @@
<div>
<xsl:apply-templates select="." mode="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</div>
</xsl:template>
+<xsl:template match="screenshot/title">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
<xsl:template match="screeninfo">
</xsl:template>
@@ -388,7 +395,7 @@
<xsl:with-param name="em.size" select="$points.per.em"/>
</xsl:call-template>
</xsl:variable>
- <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ <xsl:value-of select="round($cwidth.in.points div 72.0 * $pixels.per.inch * $scale)"/>
</xsl:if>
</xsl:variable>
@@ -455,7 +462,7 @@
<xsl:with-param name="em.size" select="$points.per.em"/>
</xsl:call-template>
</xsl:variable>
- <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ <xsl:value-of select="round($cdepth.in.points div 72.0 * $pixels.per.inch * $scale)"/>
</xsl:if>
</xsl:variable>
@@ -657,7 +664,10 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:copy-of select="$alt"/>
</xsl:when>
<xsl:when test="ancestor::figure">
- <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ <xsl:variable name="fig.title">
+ <xsl:apply-templates select="ancestor::figure/title/node()"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($fig.title)"/>
</xsl:when>
</xsl:choose>
</xsl:with-param>
@@ -1055,8 +1065,12 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
</xsl:choose>
</xsl:attribute>
</xsl:if>
+
+ <xsl:call-template name="extension.process.image.attributes"/>
</xsl:template>
+<xsl:template name="extension.process.image.attributes"/>
+
<!-- ==================================================================== -->
<xsl:template match="graphic">
@@ -1273,7 +1287,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="alt">
- <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
<xsl:with-param name="longdesc">
<xsl:call-template name="write.longdesc">
@@ -1416,6 +1437,10 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<!-- ==================================================================== -->
+<xsl:template match="mediaobject/alt">
+ <xsl:apply-templates/>
+</xsl:template>
+
<xsl:template match="videoobject">
<xsl:apply-templates select="videodata"/>
</xsl:template>
@@ -1424,7 +1449,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="tag" select="'embed'"/>
<xsl:with-param name="alt">
- <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor::mediaobject/textobject/phrase)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -1439,7 +1471,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="tag" select="'embed'"/>
<xsl:with-param name="alt">
- <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor::mediaobject/textobject/phrase)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
diff --git a/html/highlight.xsl b/html/highlight.xsl
index f7307a4..0579f75 100644
--- a/html/highlight.xsl
+++ b/html/highlight.xsl
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslthl="http://xslthl.sf.net" exclude-result-prefixes="xslthl" version="1.0">
<!-- ********************************************************************
- $Id: highlight.xsl 8911 2010-09-28 17:02:06Z abdelazer $
+ $Id: highlight.xsl 9725 2013-02-28 14:49:03Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -47,12 +47,10 @@
<xsl:apply-templates mode="xslthl"/>
</span>
</xsl:template>
- <xsl:template match="xslthl:html" mode="xslthl">
- <strong>
- <em style="color: red">
- <xsl:apply-templates mode="xslthl"/>
- </em>
- </strong>
+ <xsl:template match='xslthl:html' mode="xslthl">
+ <span class="hl-html" style="color: navy; font-weight: bold">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
</xsl:template>
<xsl:template match="xslthl:xslt" mode="xslthl">
<strong style="color: #0066FF">
diff --git a/html/htmltbl.xsl b/html/htmltbl.xsl
index e21712b..3e31235 100644
--- a/html/htmltbl.xsl
+++ b/html/htmltbl.xsl
@@ -3,7 +3,7 @@
version="1.0">
<!-- ********************************************************************
- $Id: htmltbl.xsl 9140 2011-10-30 03:42:11Z bobstayton $
+ $Id: htmltbl.xsl 9501 2012-07-16 00:14:50Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -17,9 +17,6 @@
<xsl:template match="table" mode="htmlTable">
<xsl:element name="table" namespace="">
<xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
<xsl:call-template name="htmlTable"/>
</xsl:element>
</xsl:template>
diff --git a/html/inline.xsl b/html/inline.xsl
index a5799c6..b79ea19 100644
--- a/html/inline.xsl
+++ b/html/inline.xsl
@@ -10,7 +10,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: inline.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: inline.xsl 9663 2012-11-06 19:09:16Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -558,14 +558,14 @@
<xsl:template match="function/parameter" priority="2">
<xsl:call-template name="inline.italicmonoseq"/>
- <xsl:if test="following-sibling::*">
+ <xsl:if test="$function.parens != 0 and 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:if test="$function.parens != 0 and following-sibling::*">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
@@ -607,7 +607,21 @@
</xsl:template>
<xsl:template match="keycap">
- <xsl:call-template name="inline.boldseq"/>
+ <xsl:choose>
+ <xsl:when test="@function and normalize-space(.) = ''">
+ <xsl:call-template name="inline.boldseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'keycap'"/>
+ <xsl:with-param name="name" select="@function"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="keycode">
diff --git a/html/param.xml b/html/param.xml
index 97b0f00..e065049 100644
--- a/html/param.xml
+++ b/html/param.xml
@@ -3,7 +3,7 @@
<info>
<title>HTML Parameter Reference</title>
<releaseinfo role="meta">
-$Id: param.xweb 9333 2012-05-06 19:41:03Z dcramer $
+$Id: param.xweb 9658 2012-10-29 22:28:34Z bobstayton $
</releaseinfo>
<author>
<personname>
@@ -4837,6 +4837,71 @@ values are still supported and mapped to 'no' and 'yes', respectively.
</refsection>
</refentry>
+<refentry version="5.0" xml:id="activate.external.olinks">
+<refmeta>
+<refentrytitle>activate.external.olinks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>activate.external.olinks</refname>
+<refpurpose>Make external olinks into active links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="activate.external.olinks.frag">
+&lt;xsl:param name="activate.external.olinks" select="1"&gt;&lt;/xsl:param&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>activate.external.olinks</parameter> is nonzero
+(the default), then any olinks that reference another document
+become active links that can be clicked on to follow the link.
+If the parameter is set to zero, then external olinks
+will have the appropriate link text generated, but the link is
+not made active. Olinks to destinations in
+the current document remain active.</para>
+
+<para>To make an external olink active for HTML
+outputs, the link text is wrapped in an <tag>a</tag>
+element with an <tag>href</tag> attribute. To
+make an external olink active for FO outputs, the link text is
+wrapped in an <tag>fo:basic-link</tag> element with an
+<tag>external-destination</tag> attribute.</para>
+
+<para>This parameter is useful when you need external olinks
+to resolve but not be clickable. For example, if documents
+in a collection are available independently of each other,
+then having active links between them could lead to
+unresolved links when a given target document is missing.</para>
+
+<para>The epub stylesheets set this parameter to zero by default
+because there is no standard linking mechanism between Epub documents.</para>
+
+<para>If external links are made inactive, you should
+consider setting the
+stylesheet parameter <parameter>olink.doctitle</parameter>
+to <literal>yes</literal>. That will append the external document's
+title to the link text, making it easier for the user to
+locate the other document.</para>
+
+<para>An olink is considered external when the
+<parameter>current.docid</parameter> stylesheet parameter
+is set to some value, and the olink's <tag>targetdoc</tag>
+attribute has a different value. If the two values
+match, then the link is considered internal. If the
+<parameter>current.docid</parameter> parameter is blank, or
+the <tag>olink</tag> element does not have a <tag>targetdoc</tag> attribute,
+then the link is considered to be internal and will become
+an active link.</para>
+
+<para>See also <parameter>olink.doctitle</parameter>,
+<parameter>prefer.internal.olink</parameter>.</para>
+
+</refsection>
+</refentry>
+
<refentry version="5.0" xml:id="olink.debug">
<refmeta>
<refentrytitle>olink.debug</refentrytitle>
@@ -5244,114 +5309,6 @@ on anchors generated for <tag>ulink</tag>s.</para>
</refsection>
</refentry>
-<refentry version="5.0" xml:id="olink.fragid">
-<refmeta>
-<refentrytitle>olink.fragid</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.fragid</refname>
-<refpurpose>Names the fragment identifier portion of an OLink resolver query</refpurpose>
-</refnamediv>
-<refsynopsisdiv>
-<programlisting xml:id="olink.fragid.frag">
-&lt;xsl:param name="olink.fragid"&gt;fragid=&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-<refsection><info><title>Description</title></info>
-<para>The fragment identifier portion of an <tag>olink</tag> target.</para>
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="olink.outline.ext">
-<refmeta>
-<refentrytitle>olink.outline.ext</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.outline.ext</refname>
-<refpurpose>The extension of OLink outline files</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="olink.outline.ext.frag">
-&lt;xsl:param name="olink.outline.ext"&gt;.olink&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>The extension to be expected for OLink outline files</para>
-<para>Bob has this parameter as dead. Please don't use</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="olink.pubid">
-<refmeta>
-<refentrytitle>olink.pubid</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.pubid</refname>
-<refpurpose>Names the public identifier portion of an OLink resolver query</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="olink.pubid.frag">
-&lt;xsl:param name="olink.pubid"&gt;pubid&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para/>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="olink.sysid">
-<refmeta>
-<refentrytitle>olink.sysid</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.sysid</refname>
-<refpurpose>Names the system identifier portion of an OLink resolver query</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="olink.sysid.frag">
-&lt;xsl:param name="olink.sysid"&gt;sysid&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="olink.resolver">
-<refmeta>
-<refentrytitle>olink.resolver</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>olink.resolver</refname>
-<refpurpose>The root name of the OLink resolver (usually a script)</refpurpose>
-</refnamediv>
-<refsynopsisdiv>
-<programlisting xml:id="olink.resolver.frag">
- &lt;xsl:param name="olink.resolver"&gt;/cgi-bin/olink&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-<refsection><info><title>Description</title></info>
-<para>FIXME:</para>
-</refsection>
-</refentry>
-
</reference>
<reference xml:id="xrefs"><title>Cross References</title>
<refentry version="5.0" xml:id="collect.xref.targets">
@@ -10623,7 +10580,7 @@ configure the name of the file that is redirected to.
<refsynopsisdiv>
<programlisting xml:id="webhelp.include.search.tab.frag">
-&lt;xsl:param name="webhelp.include.search.tab"&gt;true&lt;/xsl:param&gt;
+&lt;xsl:param name="webhelp.include.search.tab"&gt;1&lt;/xsl:param&gt;
</programlisting>
</refsynopsisdiv>
@@ -10957,7 +10914,7 @@ to be treated as case insensitive".</para>
The value is normally taken from the gentext file for the
lang attribute of the document's root element, using the
key name 'writing-mode' to look it up in the gentext file.
-But the param can also be
+But this param can also be
set on the command line to override that gentext value.
</para>
<para>Accepted values are:
@@ -11018,7 +10975,7 @@ around all these parameters.</para>
&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
&lt;!-- ********************************************************************
- $Id: param.xweb 9333 2012-05-06 19:41:03Z dcramer $
+ $Id: param.xweb 9658 2012-10-29 22:28:34Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -11028,6 +10985,7 @@ around all these parameters.</para>
******************************************************************** --&gt;
&lt;src:fragref linkend="abstract.notitle.enabled.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="activate.external.olinks.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="admon.graphics.extension.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="admon.graphics.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="admon.graphics.path.frag"&gt;&lt;/src:fragref&gt;
@@ -11239,13 +11197,8 @@ around all these parameters.</para>
&lt;src:fragref linkend="olink.base.uri.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="olink.debug.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="olink.doctitle.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="olink.fragid.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="olink.lang.fallback.sequence.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="olink.outline.ext.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="olink.properties.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="olink.pubid.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="olink.resolver.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="olink.sysid.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="othercredit.like.author.enabled.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="para.propagates.style.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="part.autolabel.frag"&gt;&lt;/src:fragref&gt;
diff --git a/html/param.xsl b/html/param.xsl
index 4ef913d..e42f4b0 100644
--- a/html/param.xsl
+++ b/html/param.xsl
@@ -3,7 +3,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- ********************************************************************
- $Id: param.xweb 9333 2012-05-06 19:41:03Z dcramer $
+ $Id: param.xweb 9658 2012-10-29 22:28:34Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -13,6 +13,7 @@
******************************************************************** -->
<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="activate.external.olinks" select="1"/>
<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>
@@ -317,15 +318,10 @@ set toc,title
<xsl:param name="olink.base.uri"/>
<xsl:param name="olink.debug" select="0"/>
<xsl:param name="olink.doctitle">no</xsl:param>
-<xsl:param name="olink.fragid">fragid=</xsl:param>
<xsl:param name="olink.lang.fallback.sequence"/>
-<xsl:param name="olink.outline.ext">.olink</xsl:param>
<xsl:attribute-set name="olink.properties">
<xsl:attribute name="show-destination">replace</xsl:attribute>
</xsl:attribute-set>
-<xsl:param name="olink.pubid">pubid</xsl:param>
- <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
-<xsl:param name="olink.sysid">sysid</xsl:param>
<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
<xsl:param name="para.propagates.style" select="1"/>
<xsl:param name="part.autolabel">I</xsl:param>
@@ -424,7 +420,7 @@ set toc,title
<xsl:param name="webhelp.base.dir">docs</xsl:param>
<xsl:param name="webhelp.common.dir">../common/</xsl:param>
<xsl:param name="webhelp.default.topic">index.html</xsl:param>
-<xsl:param name="webhelp.include.search.tab">true</xsl:param>
+<xsl:param name="webhelp.include.search.tab">1</xsl:param>
<xsl:param name="webhelp.indexer.language">en</xsl:param>
<xsl:param name="webhelp.start.filename">index.html</xsl:param>
<xsl:param name="webhelp.tree.cookie.id" select="concat( 'treeview-', count(//node()) )"/>
diff --git a/html/profile-chunk-code.xsl b/html/profile-chunk-code.xsl
index 7cb0cf7..196eac3 100644
--- a/html/profile-chunk-code.xsl
+++ b/html/profile-chunk-code.xsl
@@ -441,7 +441,7 @@
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -453,9 +453,9 @@
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="collect.tex.math"/>
</xsl:if>
<xsl:if test="$generate.manifest != 0">
<xsl:call-template name="generate.manifest">
diff --git a/html/profile-docbook.xsl b/html/profile-docbook.xsl
index 8be9e14..0e1b024 100644
--- a/html/profile-docbook.xsl
+++ b/html/profile-docbook.xsl
@@ -6,7 +6,7 @@
<xsl:output method="html" encoding="ISO-8859-1" indent="no"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -119,18 +119,69 @@
</xsl:if>
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -149,39 +200,25 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made" href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -316,6 +353,15 @@ var popup_</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>
@@ -369,7 +415,7 @@ Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -381,9 +427,9 @@ Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="collect.tex.math"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
diff --git a/html/verbatim.xsl b/html/verbatim.xsl
index 2d99e1d..7db9a9c 100644
--- a/html/verbatim.xsl
+++ b/html/verbatim.xsl
@@ -8,7 +8,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: verbatim.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: verbatim.xsl 9589 2012-09-02 20:52:15Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -380,7 +380,7 @@
</xsl:when>
<xsl:when test="$listings[1]/@continuation='continues'">
<xsl:call-template name="lastLineNumber">
- <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="listings" select="$listings[position() &gt; 1]"/>
<xsl:with-param name="number" select="$number + $lines"/>
</xsl:call-template>
</xsl:when>
diff --git a/html/xref.xsl b/html/xref.xsl
index 7069501..0f8ab2b 100644
--- a/html/xref.xsl
+++ b/html/xref.xsl
@@ -7,7 +7,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: xref.xsl 9365 2012-05-12 23:43:49Z bobstayton $
+ $Id: xref.xsl 9713 2013-01-22 22:08:30Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -358,7 +358,7 @@
|constraintdef|formalpara|glossdiv|important|indexdiv
|itemizedlist|legalnotice|lot|msg|msgexplan|msgmain
|msgrel|msgset|msgsub|note|orderedlist|partintro
- |productionset|qandadiv|refsynopsisdiv|segmentedlist
+ |productionset|qandadiv|refsynopsisdiv|screenshot|segmentedlist
|set|setindex|sidebar|tip|toc|variablelist|warning"
mode="xref-to">
<xsl:param name="referrer"/>
@@ -1047,8 +1047,6 @@
<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
@@ -1186,56 +1184,20 @@
</xsl:when>
- <!-- Or use old olink mechanism -->
<xsl:otherwise>
- <xsl:variable name="href">
- <xsl:choose>
- <xsl:when test="@linkmode">
- <!-- use the linkmode to get the base URI, use localinfo as fragid -->
- <xsl:variable name="modespec" select="key('id',@linkmode)"/>
- <xsl:if test="count($modespec) != 1
- or local-name($modespec) != 'modespec'">
- <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
- </xsl:if>
- <xsl:value-of select="$modespec"/>
- <xsl:if test="@localinfo">
- <xsl:text>#</xsl:text>
- <xsl:value-of select="@localinfo"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@type = 'href'">
- <xsl:call-template name="olink.outline">
- <xsl:with-param name="outline.base.uri"
- select="unparsed-entity-uri(@targetdocent)"/>
- <xsl:with-param name="localinfo" select="@localinfo"/>
- <xsl:with-param name="return" select="'href'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$olink.resolver"/>
- <xsl:text>?</xsl:text>
- <xsl:value-of select="$olink.sysid"/>
- <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
- <!-- XSL gives no access to the public identifier (grumble...) -->
- <xsl:if test="@localinfo">
- <xsl:text>&amp;</xsl:text>
- <xsl:value-of select="$olink.fragid"/>
- <xsl:value-of select="@localinfo"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:choose>
- <xsl:when test="$href != ''">
- <a href="{$href}">
- <xsl:apply-templates select="." mode="common.html.attributes"/>
- <xsl:call-template name="id.attribute"/>
- <xsl:call-template name="olink.hottext"/>
- </a>
+ <xsl:when test="@linkmode or @targetdocent or @localinfo">
+ <!-- old olink mechanism -->
+ <xsl:message>
+ <xsl:text>ERROR: olink using obsolete attributes </xsl:text>
+ <xsl:text>@linkmode, @targetdocent, @localinfo are </xsl:text>
+ <xsl:text>not supported.</xsl:text>
+ </xsl:message>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="olink.hottext"/>
+ <xsl:message>
+ <xsl:text>ERROR: olink is missing linking attributes.</xsl:text>
+ </xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
@@ -1246,57 +1208,6 @@
<!-- no-op in HTML -->
</xsl:template>
-
-<xsl:template name="olink.outline">
- <xsl:param name="outline.base.uri"/>
- <xsl:param name="localinfo"/>
- <xsl:param name="return" select="href"/>
-
- <xsl:variable name="outline-file"
- select="concat($outline.base.uri,
- $olink.outline.ext)"/>
-
- <xsl:variable name="outline" select="document($outline-file,.)/div"/>
-
- <xsl:variable name="node-href">
- <xsl:choose>
- <xsl:when test="$localinfo != ''">
- <xsl:variable name="node" select="$outline//
- *[@id=$localinfo or @xml:id=$localinfo]"/>
- <xsl:value-of select="$node/@href"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outline/@href"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="node-xref">
- <xsl:choose>
- <xsl:when test="$localinfo != ''">
- <xsl:variable name="node" select="$outline//
- *[@id=$localinfo or @xml:id=$localinfo]"/>
- <xsl:copy-of select="$node/xref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outline/xref"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$return = 'href'">
- <xsl:value-of select="$node-href"/>
- </xsl:when>
- <xsl:when test="$return = 'xref'">
- <xsl:value-of select="$node-xref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$node-xref"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
<!-- ==================================================================== -->
<xsl:template name="xref.xreflabel">
@@ -1329,9 +1240,8 @@
<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 test="$purpose = 'xref'">
+ <xsl:copy-of select="$title"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$title"/>
diff --git a/htmlhelp/profile-htmlhelp-common.xsl b/htmlhelp/profile-htmlhelp-common.xsl
index 12a8085..8e5e8ac 100644
--- a/htmlhelp/profile-htmlhelp-common.xsl
+++ b/htmlhelp/profile-htmlhelp-common.xsl
@@ -42,7 +42,7 @@
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -51,7 +51,7 @@
</xsl:when>
<xsl:otherwise>
<xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
@@ -70,7 +70,7 @@
<xsl:if test="$collect.xref.targets != 'only'">
<xsl:call-template name="hhp"/>
<xsl:call-template name="hhc"/>
- <xsl:if test="($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid]//processing-instruction('dbhh'))">
+ <xsl:if test="($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid or @xml:id=$rootid]//processing-instruction('dbhh'))">
<xsl:call-template name="hh-map"/>
<xsl:call-template name="hh-alias"/>
</xsl:if>
@@ -109,7 +109,7 @@
<xsl:when test="$htmlhelp.title = ''">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="title.markup"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="title.markup"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes/*" mode="title.markup"/>
@@ -139,7 +139,7 @@
<xsl:with-param name="base.name">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="chunk-filename"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="chunk-filename"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="chunk-filename"/>
@@ -305,7 +305,7 @@ Enhanced decompilation=</xsl:text>
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="enumerate-files"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="enumerate-files"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="enumerate-files"/>
@@ -316,7 +316,7 @@ Enhanced decompilation=</xsl:text>
<xsl:variable name="imagelist">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="enumerate-images"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="enumerate-images"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="enumerate-images"/>
@@ -337,7 +337,7 @@ Enhanced decompilation=</xsl:text>
</xsl:choose>
</xsl:if>
-<xsl:if test="($htmlhelp.force.map.and.alias != 0) or ($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid]//processing-instruction('dbhh'))">
+<xsl:if test="($htmlhelp.force.map.and.alias != 0) or ($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid or @xml:id=$rootid]//processing-instruction('dbhh'))">
<xsl:text>
[ALIAS]
#include </xsl:text><xsl:value-of select="$htmlhelp.alias.file"/><xsl:text>
@@ -507,7 +507,7 @@ Enhanced decompilation=</xsl:text>
<xsl:variable name="content">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hhc"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="hhc"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="hhc"/>
@@ -825,7 +825,7 @@ Enhanced decompilation=</xsl:text>
<xsl:if test="($htmlhelp.use.hhk != 0) and $htmlhelp.generate.index">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hhk"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="hhk"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="hhk"/>
@@ -948,7 +948,7 @@ Enhanced decompilation=</xsl:text>
<xsl:with-param name="content">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hh-map"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="hh-map"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="hh-map"/>
@@ -997,7 +997,7 @@ Enhanced decompilation=</xsl:text>
<xsl:with-param name="content">
<xsl:choose>
<xsl:when test="$rootid != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hh-alias"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="hh-alias"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$profiled-nodes" mode="hh-alias"/>
diff --git a/javahelp/profile-javahelp.xsl b/javahelp/profile-javahelp.xsl
index 8133740..734ef7c 100644
--- a/javahelp/profile-javahelp.xsl
+++ b/javahelp/profile-javahelp.xsl
@@ -34,7 +34,7 @@
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -43,7 +43,7 @@
</xsl:when>
<xsl:otherwise>
<xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message>
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
diff --git a/log b/log
index 9037840..177698f 100644
--- a/log
+++ b/log
@@ -1,4 +1,14 @@
------------------------------------------------------------------------
+r9399 | bobstayton | 2012-06-02 22:50:24 +0000 (Sat, 02 Jun 2012) | 2 lines
+
+Change version to 1.77.1 for release.
+
+------------------------------------------------------------------------
+r9373 | bobstayton | 2012-05-20 22:40:07 +0000 (Sun, 20 May 2012) | 2 lines
+
+Restore VERSION to snapshot state.
+
+------------------------------------------------------------------------
r9371 | bobstayton | 2012-05-19 22:48:13 +0000 (Sat, 19 May 2012) | 2 lines
Version 1.77.0 release
diff --git a/manpages/lists.xsl b/manpages/lists.xsl
index dd90174..d5ee7a8 100644
--- a/manpages/lists.xsl
+++ b/manpages/lists.xsl
@@ -3,7 +3,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: lists.xsl 8530 2009-11-02 02:38:47Z dleidert $
+ $Id: lists.xsl 9684 2012-12-12 17:05:54Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -52,6 +52,7 @@
</xsl:template>
<xsl:template match="variablelist|glosslist">
+ <xsl:text>&#10;</xsl:text>
<xsl:if test="title">
<xsl:text>.PP&#10;</xsl:text>
<xsl:call-template name="bold">
@@ -177,6 +178,16 @@
<xsl:text>.RE&#10;</xsl:text>
</xsl:template>
+<xsl:template match="orderedlist/listitem/title|
+ procedure/step/title">
+ <xsl:call-template name="bold">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>.PP&#10;</xsl:text>
+</xsl:template>
+
<xsl:template match="orderedlist/listitem|procedure/step">
<xsl:text>&#10;</xsl:text>
<xsl:text>.sp</xsl:text>
diff --git a/manpages/utility.xsl b/manpages/utility.xsl
index 26a7513..c0082fc 100644
--- a/manpages/utility.xsl
+++ b/manpages/utility.xsl
@@ -7,7 +7,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: utility.xsl 8236 2009-02-09 17:44:52Z xmldoc $
+ $Id: utility.xsl 9703 2013-01-07 20:13:05Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -63,8 +63,11 @@
</xsl:template>
<xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:apply-templates/>
+ </xsl:param>
<xsl:call-template name="code-inline-start"/>
- <xsl:apply-templates/>
+ <xsl:copy-of select="$content"/>
<xsl:call-template name="code-inline-end"/>
</xsl:template>
@@ -286,6 +289,7 @@
self::address or
self::literallayout or
self::programlisting or
+ self::synopsis or
self::screen or
self::table or
self::informaltable
@@ -302,7 +306,7 @@
or following-sibling::node()[1][self::processing-instruction()]
">
<xsl:if test="normalize-space($content) != ''
- or concat(normalize-space($content), ' ') = ' '">
+ or concat(normalize-space($content), ' ') != ' '">
<xsl:text>&#10;</xsl:text>
</xsl:if>
</xsl:if>
diff --git a/params/activate.external.olinks.xml b/params/activate.external.olinks.xml
new file mode 100755
index 0000000..a28686c
--- /dev/null
+++ b/params/activate.external.olinks.xml
@@ -0,0 +1,69 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="activate.external.olinks">
+<refmeta>
+<refentrytitle>activate.external.olinks</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>activate.external.olinks</refname>
+<refpurpose>Make external olinks into active links</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="activate.external.olinks.frag">
+<xsl:param name="activate.external.olinks" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>activate.external.olinks</parameter> is nonzero
+(the default), then any olinks that reference another document
+become active links that can be clicked on to follow the link.
+If the parameter is set to zero, then external olinks
+will have the appropriate link text generated, but the link is
+not made active. Olinks to destinations in
+the current document remain active.</para>
+
+<para>To make an external olink active for HTML
+outputs, the link text is wrapped in an <tag>a</tag>
+element with an <tag>href</tag> attribute. To
+make an external olink active for FO outputs, the link text is
+wrapped in an <tag>fo:basic-link</tag> element with an
+<tag>external-destination</tag> attribute.</para>
+
+<para>This parameter is useful when you need external olinks
+to resolve but not be clickable. For example, if documents
+in a collection are available independently of each other,
+then having active links between them could lead to
+unresolved links when a given target document is missing.</para>
+
+<para>The epub stylesheets set this parameter to zero by default
+because there is no standard linking mechanism between Epub documents.</para>
+
+<para>If external links are made inactive, you should
+consider setting the
+stylesheet parameter <parameter>olink.doctitle</parameter>
+to <literal>yes</literal>. That will append the external document's
+title to the link text, making it easier for the user to
+locate the other document.</para>
+
+<para>An olink is considered external when the
+<parameter>current.docid</parameter> stylesheet parameter
+is set to some value, and the olink's <tag>targetdoc</tag>
+attribute has a different value. If the two values
+match, then the link is considered internal. If the
+<parameter>current.docid</parameter> parameter is blank, or
+the <tag>olink</tag> element does not have a <tag>targetdoc</tag> attribute,
+then the link is considered to be internal and will become
+an active link.</para>
+
+<para>See also <parameter>olink.doctitle</parameter>,
+<parameter>prefer.internal.olink</parameter>.</para>
+
+</refsection>
+</refentry>
diff --git a/params/article.appendix.title.properties.xml b/params/article.appendix.title.properties.xml
index 61337a1..d42cf87 100644
--- a/params/article.appendix.title.properties.xml
+++ b/params/article.appendix.title.properties.xml
@@ -16,9 +16,6 @@
<refsynopsisdiv>
<src:fragment xml:id="article.appendix.title.properties.frag">
<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties">
- <xsl:attribute name="margin-{$direction.align.start}">
- <xsl:value-of select="$title.margin.left"/>
- </xsl:attribute>
</xsl:attribute-set>
</src:fragment>
</refsynopsisdiv>
diff --git a/params/disable.collapsible.xml b/params/disable.collapsible.xml
new file mode 100644
index 0000000..1f8e6e3
--- /dev/null
+++ b/params/disable.collapsible.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="disable.collapsible">
+<refmeta>
+<refentrytitle>disable.collapsible</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>disable.collapsible</refname>
+<refpurpose>Specifies whether collapsible rendering is enabled</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="disable.collapsible.frag">
+ <xsl:param name="disable.collapsible">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether elements marked as
+ collapsible are generated as such in the output document.</para>
+
+</refsection>
+</refentry>
diff --git a/params/disable.incremental.xml b/params/disable.incremental.xml
new file mode 100644
index 0000000..27f473a
--- /dev/null
+++ b/params/disable.incremental.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="disable.incremental">
+<refmeta>
+<refentrytitle>disable.incremental</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>disable.incremental</refname>
+<refpurpose>Specifies whether incremental rendering is enabled</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="disable.incremental.frag">
+ <xsl:param name="disable.incremental">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether elements marked as
+ incremental are generated as such in the output document.</para>
+
+</refsection>
+</refentry>
diff --git a/params/double.sided.xml b/params/double.sided.xml
index 3758f1f..ac40dcc 100644
--- a/params/double.sided.xml
+++ b/params/double.sided.xml
@@ -21,11 +21,21 @@
<refsection><info><title>Description</title></info>
-<para>Double-sided documents are printed with a slightly wider margin
-on the binding edge of the page.
+<para>This parameter is useful when printing a document
+on both sides of the paper.</para>
+
+<para>if set to non-zero, documents are formatted using different page-masters
+for odd and even pages. These can differ by using a slightly wider margin
+on the binding edge of the page, and alternating left-right
+positions of header or footer elements.
</para>
-<para>FIXME: The current set of parameters does not take writing direction
-into account.</para>
+
+<para>If set to zero (the default), then only the 'odd' page masters
+are used for both even and odd numbered pages.</para>
+
+<para>See also <parameter>force.blank.pages</parameter>,
+<parameter>page.margin.inner</parameter> and
+<parameter>page.margin.outer</parameter>.</para>
</refsection>
</refentry>
diff --git a/params/foil.footer.properties.xml b/params/foil.footer.properties.xml
new file mode 100644
index 0000000..9b50d16
--- /dev/null
+++ b/params/foil.footer.properties.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.footer.properties">
+<refmeta>
+<refentrytitle>foil.footer.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.footer.properties</refname>
+<refpurpose>Specifies properties for slides footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.footer.properties.frag">
+ <xsl:attribute-set name="foil.footer.properties"/>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil footer.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.header.properties.xml b/params/foil.header.properties.xml
new file mode 100644
index 0000000..43c68f5
--- /dev/null
+++ b/params/foil.header.properties.xml
@@ -0,0 +1,36 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.header.properties">
+<refmeta>
+<refentrytitle>foil.header.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.header.properties</refname>
+<refpurpose>Specifies properties for foil header area</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.header.properties.frag">
+ <xsl:attribute-set name="foil.header.properties">
+ <xsl:attribute name="background-color">white</xsl:attribute>
+ <xsl:attribute name="color">black</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil header area.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.master.properties.xml b/params/foil.master.properties.xml
new file mode 100644
index 0000000..fdb8754
--- /dev/null
+++ b/params/foil.master.properties.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.master.properties">
+<refmeta>
+<refentrytitle>foil.master.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.master.properties</refname>
+<refpurpose>Specifies properties for foil master</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.master.properties.frag">
+ <xsl:attribute-set name="foil.master.properties">
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page.width"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page.height"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-top">
+ <xsl:value-of select="$page.margin.top"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-bottom">
+ <xsl:value-of select="$page.margin.bottom"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-right">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil master.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.page-sequence.properties.xml b/params/foil.page-sequence.properties.xml
new file mode 100644
index 0000000..6413130
--- /dev/null
+++ b/params/foil.page-sequence.properties.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.page-sequence.properties">
+<refmeta>
+<refentrytitle>foil.page-sequence.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.page-sequence.properties</refname>
+<refpurpose>Specifies properties for foil page-sequence</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.page-sequence.properties.frag">
+ <xsl:attribute-set name="foil.page-sequence.properties">
+ <xsl:attribute name="hyphenate">
+ <xsl:value-of select="$hyphenate"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for foil page-sequence.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.properties.xml b/params/foil.properties.xml
index 11ad146..cf0ab23 100644
--- a/params/foil.properties.xml
+++ b/params/foil.properties.xml
@@ -24,7 +24,6 @@
<xsl:attribute name="font-size">
<xsl:value-of select="$body.font.size"/>
</xsl:attribute>
- <xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
</src:fragment>
</refsynopsisdiv>
diff --git a/params/foil.region-after.properties.xml b/params/foil.region-after.properties.xml
new file mode 100644
index 0000000..1e71c68
--- /dev/null
+++ b/params/foil.region-after.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.region-after.properties">
+<refmeta>
+<refentrytitle>foil.region-after.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.region-after.properties</refname>
+<refpurpose>Specifies properties for foil region-after</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.region-after.properties.frag">
+ <xsl:attribute-set name="foil.region-after.properties">
+ <xsl:attribute name="extent">
+ <xsl:value-of select="$region.after.extent"/>
+ </xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil region-after.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.region-before.properties.xml b/params/foil.region-before.properties.xml
new file mode 100644
index 0000000..a97fb66
--- /dev/null
+++ b/params/foil.region-before.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.region-before.properties">
+<refmeta>
+<refentrytitle>foil.region-before.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.region-before.properties</refname>
+<refpurpose>Specifies properties for foil region-before</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.region-before.properties.frag">
+ <xsl:attribute-set name="foil.region-before.properties">
+ <xsl:attribute name="extent">
+ <xsl:value-of select="$region.before.extent"/>
+ </xsl:attribute>
+ <xsl:attribute name="display-align">
+ <xsl:value-of select="'before'"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil region-before.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.region-body.properties.xml b/params/foil.region-body.properties.xml
new file mode 100644
index 0000000..8295a1a
--- /dev/null
+++ b/params/foil.region-body.properties.xml
@@ -0,0 +1,37 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.region-body.properties">
+<refmeta>
+<refentrytitle>foil.region-body.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.region-body.properties</refname>
+<refpurpose>Specifies properties for foil region-body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.region-body.properties.frag">
+ <xsl:attribute-set name="foil.region-body.properties">
+ <xsl:attribute name="margin-bottom">
+ <xsl:value-of select="$body.margin.bottom"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-top">
+ <xsl:value-of select="$body.margin.top"/>
+ </xsl:attribute>
+ <xsl:attribute name="column-count">
+ <xsl:value-of select="$column.count.body"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil region-body.</para>
+
+</refsection>
+</refentry>
diff --git a/params/foil.title.properties.xml b/params/foil.title.properties.xml
new file mode 100644
index 0000000..f9d65c0
--- /dev/null
+++ b/params/foil.title.properties.xml
@@ -0,0 +1,31 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="foil.title.properties">
+<refmeta>
+<refentrytitle>foil.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.properties</refname>
+<refpurpose>Specifies properties for foil title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="foil.title.properties.frag">
+ <xsl:attribute-set name="foil.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$foil.title.size"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil title.</para>
+
+</refsection>
+</refentry>
diff --git a/params/footnote.properties.xml b/params/footnote.properties.xml
index f62adee..326712b 100644
--- a/params/footnote.properties.xml
+++ b/params/footnote.properties.xml
@@ -23,6 +23,7 @@
<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="end-indent">0pt</xsl:attribute>
<xsl:attribute name="text-indent">0pt</xsl:attribute>
<xsl:attribute name="hyphenate"><xsl:value-of select="$hyphenate"/></xsl:attribute>
<xsl:attribute name="wrap-option">wrap</xsl:attribute>
diff --git a/params/force.blank.pages.xml b/params/force.blank.pages.xml
new file mode 100755
index 0000000..c6df11d
--- /dev/null
+++ b/params/force.blank.pages.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="force.blank.pages">
+<refmeta>
+<refentrytitle>force.blank.pages</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>force.blank.pages</refname>
+<refpurpose>Generate blank page to end on even page number</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="force.blank.pages.frag">
+<xsl:param name="force.blank.pages" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If non-zero (the default), then each page sequence will be forced to
+end on an even-numbered page, by inserting a blank page
+if necessary. This will force the next page sequence to start
+on an odd-numbered page, which is a standard convention
+for printed and bound books.</para>
+
+<para>If zero, then such blank pages will not be inserted.
+Chapters will start on the next available page,
+regardless of whether it is an even or odd number.
+This is useful when publishing online where blank
+pages are not needed.
+</para>
+
+<para>This param is independent of the
+<parameter>double.sided</parameter> parameter, which
+just triggers the use of even and odd page sequence
+masters that differ in their header and footer placement.
+So you can combine the two params for alternating
+headers/footers and no blank pages.
+</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.copyright.xml b/params/generate.copyright.xml
new file mode 100644
index 0000000..8c0aaaa
--- /dev/null
+++ b/params/generate.copyright.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.copyright">
+<refmeta>
+<refentrytitle>generate.copyright</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.copyright</refname>
+<refpurpose>Specifies whether copyright is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.copyright.frag">
+ <xsl:param name="generate.copyright">1</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the copyright info is generated
+ in the footer area.</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.foilgroup.numbered.toc.xml b/params/generate.foilgroup.numbered.toc.xml
new file mode 100644
index 0000000..f43a8c9
--- /dev/null
+++ b/params/generate.foilgroup.numbered.toc.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.foilgroup.numbered.toc">
+<refmeta>
+<refentrytitle>generate.foilgroup.numbered.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.foilgroup.numbered.toc</refname>
+<refpurpose>Specifies whether foilgroups have a numbered TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.foilgroup.numbered.toc.frag">
+ <xsl:param name="generate.foilgroup.numbered.toc">1</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If TOC generation is turned on, this parameter specifies
+ whether foilgroups have a numbered TOC. If disabled, TOC items
+ will be bulleted, not numbered.</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.foilgroup.toc.xml b/params/generate.foilgroup.toc.xml
new file mode 100644
index 0000000..a6bb674
--- /dev/null
+++ b/params/generate.foilgroup.toc.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.foilgroup.toc">
+<refmeta>
+<refentrytitle>generate.foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.foilgroup.toc</refname>
+<refpurpose>Specifies whether foilgroups have a TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.foilgroup.toc.frag">
+ <xsl:param name="generate.foilgroup.toc">1</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether foilgroups will
+ contain a table of contents of the included foils.</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.handoutnotes.xml b/params/generate.handoutnotes.xml
new file mode 100644
index 0000000..d6138e0
--- /dev/null
+++ b/params/generate.handoutnotes.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.handoutnotes">
+<refmeta>
+<refentrytitle>generate.handoutnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.handoutnotes</refname>
+<refpurpose>Specifies whether handoutnotes are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.handoutnotes.frag">
+ <xsl:param name="generate.handoutnotes">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether handoutnotes shall
+ be generated to the output.</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.page.number.xml b/params/generate.page.number.xml
new file mode 100644
index 0000000..b3e1474
--- /dev/null
+++ b/params/generate.page.number.xml
@@ -0,0 +1,58 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.page.number">
+<refmeta>
+<refentrytitle>generate.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">full<alt>1/2</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">compact<alt>1</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.page.number</refname>
+<refpurpose>Specifies whether page numbers are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.page.number.frag">
+ <xsl:param name="generate.page.number">compact</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how page numbers are generated in
+ the footer area.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>no</term>
+ <listitem>
+ <para>No page numbers generated at all.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>full</term>
+ <listitem>
+ <para>Current page number, a slash and the total number of pages</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>compact</term>
+ <listitem>
+ <para>Current page number only</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>no</term>
+ <listitem>
+ <para>No page numbers generated at all.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/params/generate.pubdate.xml b/params/generate.pubdate.xml
new file mode 100644
index 0000000..14fdd24
--- /dev/null
+++ b/params/generate.pubdate.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.pubdate">
+<refmeta>
+<refentrytitle>generate.pubdate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.pubdate</refname>
+<refpurpose>Specifies whether the pubdate is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.pubdate.frag">
+ <xsl:param name="generate.pubdate">1</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the publication date is generated
+ in the footer area.</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.speakernotes.xml b/params/generate.speakernotes.xml
new file mode 100644
index 0000000..72e41c3
--- /dev/null
+++ b/params/generate.speakernotes.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.speakernotes">
+<refmeta>
+<refentrytitle>generate.speakernotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.speakernotes</refname>
+<refpurpose>Specifies whether speakernotes are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.speakernotes.frag">
+ <xsl:param name="generate.speakernotes">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether speakernotes shall
+ be generated to the output.</para>
+
+</refsection>
+</refentry>
diff --git a/params/generate.titlepage.xml b/params/generate.titlepage.xml
new file mode 100644
index 0000000..86135f8
--- /dev/null
+++ b/params/generate.titlepage.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="generate.titlepage">
+<refmeta>
+<refentrytitle>generate.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.titlepage</refname>
+<refpurpose>Specifies whether titlepage is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="generate.titlepage.frag">
+ <xsl:param name="generate.titlepage">1</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether titlepage is generated
+ for the presentation.</para>
+
+</refsection>
+</refentry>
diff --git a/params/handoutnotes.properties.xml b/params/handoutnotes.properties.xml
new file mode 100644
index 0000000..251e3ac
--- /dev/null
+++ b/params/handoutnotes.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="handoutnotes.properties">
+<refmeta>
+<refentrytitle>handoutnotes.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to handoutnotes
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="handoutnotes.properties.frag">
+<xsl:attribute-set name="handoutnotes.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to handoutnotes.</para>
+
+</refsection>
+</refentry>
diff --git a/params/mml.embedding.mode.fo.xml b/params/mml.embedding.mode.fo.xml
new file mode 100644
index 0000000..171ec9d
--- /dev/null
+++ b/params/mml.embedding.mode.fo.xml
@@ -0,0 +1,54 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="mml.embedding.mode">
+<refmeta>
+<refentrytitle>mml.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">external-graphic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">instream-foreign-object</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mml.embedding.mode</refname>
+<refpurpose>Specifies how inline MathML is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="mml.embedding.mode.fo.frag">
+ <xsl:param name="mml.embedding.mode">external-graphic</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline MathML formulas
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>external-graphic</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>external-graphic</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>instream-foreign-object</term>
+ <listitem>
+ <para>Content is copied over with its namespace inside an
+ <markup>instream-foreign-object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/params/mml.embedding.mode.xml b/params/mml.embedding.mode.xml
new file mode 100644
index 0000000..98a5b53
--- /dev/null
+++ b/params/mml.embedding.mode.xml
@@ -0,0 +1,78 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="mml.embedding.mode">
+<refmeta>
+<refentrytitle>mml.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">object</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">image</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">link</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iframe</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">embed</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mml.embedding.mode</refname>
+<refpurpose>Specifies how inline MathML is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="mml.embedding.mode.frag">
+ <xsl:param name="mml.embedding.mode">inline</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline MathML formulas
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>image</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>img</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>link</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>a</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iframe</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>iframe</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>embed</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>embed</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/params/page.height.portrait.xml b/params/page.height.portrait.xml
index 0dee73e..22f9ca9 100644
--- a/params/page.height.portrait.xml
+++ b/params/page.height.portrait.xml
@@ -19,6 +19,8 @@
<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 = 'USlegal'">14in</xsl:when>
+ <xsl:when test="$paper.type = 'USlegallandscape'">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>
diff --git a/params/page.margin.inner.xml b/params/page.margin.inner.xml
index 97782ba..4e6593e 100644
--- a/params/page.margin.inner.xml
+++ b/params/page.margin.inner.xml
@@ -52,5 +52,7 @@ this bug is fixed by RenderX. It does not affect documents
with left-to-right text direction.</para>
</note>
+<para>See also <parameter>writing.mode</parameter>.</para>
+
</refsection>
</refentry>
diff --git a/params/page.margin.outer.xml b/params/page.margin.outer.xml
index 61dfeb8..4536342 100644
--- a/params/page.margin.outer.xml
+++ b/params/page.margin.outer.xml
@@ -49,5 +49,7 @@ this bug is fixed by RenderX. It does not affect documents
with left-to-right text direction.</para>
</note>
+<para>See also <parameter>writing.mode</parameter>.</para>
+
</refsection>
</refentry>
diff --git a/params/page.width.portrait.xml b/params/page.width.portrait.xml
index 8216fc3..98bf30a 100644
--- a/params/page.width.portrait.xml
+++ b/params/page.width.portrait.xml
@@ -17,6 +17,9 @@
<src:fragment xml:id="page.width.portrait.frag"><xsl:param name="page.width.portrait">
<xsl:choose>
<xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = 'USlandscape'">11in</xsl:when>
+ <xsl:when test="$paper.type = 'USlegal'">8.5in</xsl:when>
+ <xsl:when test="$paper.type = 'USlegallandscape'">14in</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>
diff --git a/params/passivetex.extensions.xml b/params/passivetex.extensions.xml
index 32415ec..36f5977 100644
--- a/params/passivetex.extensions.xml
+++ b/params/passivetex.extensions.xml
@@ -19,19 +19,12 @@
<refsection><info><title>Description</title></info>
-<para>If non-zero,
-<link xlink:href="http://projects.oucs.ox.ac.uk/passivetex/">PassiveTeX</link>
-extensions will be used. At present, this consists of PDF bookmarks
-and sorted index terms.
-</para>
+<important><para>The PassiveTeX XSL-FO processor is
+no longer supported by DocBook XSL, beginning with version 1.78.</para></important>
-<para>This parameter can also affect which graphics file formats
-are supported</para>
-
-<note>
- <para>PassiveTeX is incomplete and development has ceased. In most cases,
-another XSL-FO engine is probably a better choice.</para>
-</note>
+<para>PassiveTeX was never a complete implementation of
+XSL-FO, and development has ceased. Setting this parameter will
+have no effect on the output.</para>
</refsection>
</refentry>
diff --git a/params/s5.controls.xml b/params/s5.controls.xml
new file mode 100644
index 0000000..eae24b8
--- /dev/null
+++ b/params/s5.controls.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.controls">
+<refmeta>
+<refentrytitle>s5.controls</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.controls</refname>
+<refpurpose>Specifies whether S5 controls are visible</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.controls.frag">
+ <xsl:param name="s5.controls">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether S5 navigation controls are
+ visible by default.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.defaultview.xml b/params/s5.defaultview.xml
new file mode 100644
index 0000000..42360aa
--- /dev/null
+++ b/params/s5.defaultview.xml
@@ -0,0 +1,30 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.defaultview">
+<refmeta>
+<refentrytitle>s5.defaultview</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">slideshow</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outline</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.defaultview</refname>
+<refpurpose>Specifies the default S5 view</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.defaultview.frag">
+ <xsl:param name="s5.defaultview">slideshow</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies, which is the default view
+ in the generated S5 presentation.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.opera.css.xml b/params/s5.opera.css.xml
new file mode 100644
index 0000000..791f7a0
--- /dev/null
+++ b/params/s5.opera.css.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.opera.css">
+<refmeta>
+<refentrytitle>s5.opera.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.opera.css</refname>
+<refpurpose>Specifies the name of the S5 Opera-specific CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.opera.css.frag">
+ <xsl:param name="s5.opera.css">opera.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 Opera-specific
+ CSS file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.outline.css.xml b/params/s5.outline.css.xml
new file mode 100644
index 0000000..0afc0c7
--- /dev/null
+++ b/params/s5.outline.css.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.outline.css">
+<refmeta>
+<refentrytitle>s5.outline.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.outline.css</refname>
+<refpurpose>Specifies the name of the S5 outline CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.outline.css.frag">
+ <xsl:param name="s5.outline.css">outline.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 outline CSS file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.path.prefix.xml b/params/s5.path.prefix.xml
new file mode 100644
index 0000000..6913182
--- /dev/null
+++ b/params/s5.path.prefix.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.path.prefix">
+<refmeta>
+<refentrytitle>s5.path.prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.path.prefix</refname>
+<refpurpose>Specifies the path to S5 files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.path.prefix.frag">
+ <xsl:param name="s5.path.prefix">files/s5/ui/default/</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the path where S5 CSS and
+ JavaScript files reside. All the CSS and JavaScript paths
+ will be generated relative to this directory.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.print.css.xml b/params/s5.print.css.xml
new file mode 100644
index 0000000..4e56aab
--- /dev/null
+++ b/params/s5.print.css.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.print.css">
+<refmeta>
+<refentrytitle>s5.print.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.print.css</refname>
+<refpurpose>Specifies the name of the S5 print CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.print.css.frag">
+ <xsl:param name="s5.print.css">print.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 print CSS file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.slides.css.xml b/params/s5.slides.css.xml
new file mode 100644
index 0000000..ca47eb0
--- /dev/null
+++ b/params/s5.slides.css.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.slides.css">
+<refmeta>
+<refentrytitle>s5.slides.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.slides.css</refname>
+<refpurpose>Specifies the name of the S5 slides CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.slides.css.frag">
+ <xsl:param name="s5.slides.css">slides.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 slides CSS file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/s5.slides.js.xml b/params/s5.slides.js.xml
new file mode 100644
index 0000000..f0c3713
--- /dev/null
+++ b/params/s5.slides.js.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="s5.slides.js">
+<refmeta>
+<refentrytitle>s5.slides.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.slides.js</refname>
+<refpurpose>Specifies the name of the S5 slides JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="s5.slides.js.frag">
+ <xsl:param name="s5.slides.js">slides.js</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 slides JavaScript
+ file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.author.properties.xml b/params/slides.titlepage.author.properties.xml
new file mode 100644
index 0000000..041710a
--- /dev/null
+++ b/params/slides.titlepage.author.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.author.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.author.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.author.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.author.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.author.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-size">20.736pt</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the author on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.authorgroup.properties.xml b/params/slides.titlepage.authorgroup.properties.xml
new file mode 100644
index 0000000..81b0cf4
--- /dev/null
+++ b/params/slides.titlepage.authorgroup.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.authorgroup.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.authorgroup.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.authorgroup.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.authorgroup.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.authorgroup.properties"/>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the authorgroup on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.corpauthor.properties.xml b/params/slides.titlepage.corpauthor.properties.xml
new file mode 100644
index 0000000..63f6ba8
--- /dev/null
+++ b/params/slides.titlepage.corpauthor.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.corpauthor.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.corpauthor.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.corpauthor.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.corpauthor.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.corpauthor.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-size">20.736pt</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the corpauthor on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.master.properties.xml b/params/slides.titlepage.master.properties.xml
new file mode 100644
index 0000000..6b0a1c4
--- /dev/null
+++ b/params/slides.titlepage.master.properties.xml
@@ -0,0 +1,46 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.master.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.master.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.master.properties</refname>
+<refpurpose>Specifies properties for slides titlepage master</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.master.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.master.properties">
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page.width"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page.height"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-top">
+ <xsl:value-of select="$page.margin.top"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-bottom">
+ <xsl:value-of select="$page.margin.bottom"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-right">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the slides titlepage master.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.pubdate.properties.xml b/params/slides.titlepage.pubdate.properties.xml
new file mode 100644
index 0000000..59ac6ed
--- /dev/null
+++ b/params/slides.titlepage.pubdate.properties.xml
@@ -0,0 +1,32 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.pubdate.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.pubdate.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.pubdate.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.pubdate.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.pubdate.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-size">17.28pt</xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the pubdate on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.region-body.properties.xml b/params/slides.titlepage.region-body.properties.xml
new file mode 100644
index 0000000..5cfc81d
--- /dev/null
+++ b/params/slides.titlepage.region-body.properties.xml
@@ -0,0 +1,33 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.region-body.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.region-body.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.region-body.properties</refname>
+<refpurpose>Specifies properties for slides titlepage region-body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.region-body.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.region-body.properties">
+ <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="margin-top">0pt</xsl:attribute>
+ <xsl:attribute name="column-count">
+ <xsl:value-of select="$column.count.body"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the slides titlepage region-body.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.subtitle.properties.xml b/params/slides.titlepage.subtitle.properties.xml
new file mode 100644
index 0000000..ecaf193
--- /dev/null
+++ b/params/slides.titlepage.subtitle.properties.xml
@@ -0,0 +1,34 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.subtitle.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.subtitle.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.subtitle.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.subtitle.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the subtitle on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slides.titlepage.title.properties.xml b/params/slides.titlepage.title.properties.xml
new file mode 100644
index 0000000..d4facbc
--- /dev/null
+++ b/params/slides.titlepage.title.properties.xml
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slides.titlepage.title.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.title.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.title.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slides.titlepage.title.properties.frag">
+ <xsl:attribute-set name="slides.titlepage.title.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="padding-top">1.5in</xsl:attribute>
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$foil.title.size"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the title on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slidy.duration.xml b/params/slidy.duration.xml
new file mode 100644
index 0000000..6d81ddf
--- /dev/null
+++ b/params/slidy.duration.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slidy.duration">
+<refmeta>
+<refentrytitle>slidy.duration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.duration</refname>
+<refpurpose>Specifies the duration of the presentation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slidy.duration.frag">
+ <xsl:param name="slidy.duration">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the duration of the presentation
+ in minutes. A JavaScript clock will count down to help the
+ speaker in not running out of time. Can be disabled if set to 0.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slidy.path.prefix.xml b/params/slidy.path.prefix.xml
new file mode 100644
index 0000000..f3da6f3
--- /dev/null
+++ b/params/slidy.path.prefix.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slidy.path.prefix">
+<refmeta>
+<refentrytitle>slidy.path.prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.path.prefix</refname>
+<refpurpose>Specifies the path to Slidy files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slidy.path.prefix.frag">
+ <xsl:param name="slidy.path.prefix">files/slidy/</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the path where Slidy CSS and
+ JavaScript files reside. All the CSS and JavaScript paths
+ will be generated relative to this directory.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slidy.slidy.css.xml b/params/slidy.slidy.css.xml
new file mode 100644
index 0000000..e288b7b
--- /dev/null
+++ b/params/slidy.slidy.css.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slidy.slidy.css">
+<refmeta>
+<refentrytitle>slidy.slidy.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.slidy.css</refname>
+<refpurpose>Specifies the name of the main Slidy CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slidy.slidy.css.frag">
+ <xsl:param name="slidy.slidy.css">styles/slidy.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the main Slidy CSS file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slidy.slidy.js.xml b/params/slidy.slidy.js.xml
new file mode 100644
index 0000000..aba413a
--- /dev/null
+++ b/params/slidy.slidy.js.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slidy.slidy.js">
+<refmeta>
+<refentrytitle>slidy.slidy.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.slidy.js</refname>
+<refpurpose>Specifies the name of the Slidy JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slidy.slidy.js.frag">
+ <xsl:param name="slidy.slidy.js">scripts/slidy.js</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the Slidy JavaScript file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/slidy.user.css.xml b/params/slidy.user.css.xml
new file mode 100644
index 0000000..f14e24f
--- /dev/null
+++ b/params/slidy.user.css.xml
@@ -0,0 +1,27 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="slidy.user.css">
+<refmeta>
+<refentrytitle>slidy.user.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.user.css</refname>
+<refpurpose>Specifies the name of the Slidy user CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="slidy.user.css.frag">
+ <xsl:param name="slidy.user.css">styles/w3c-blue.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the Slidy user CSS file.</para>
+
+</refsection>
+</refentry>
diff --git a/params/speakernotes.properties.xml b/params/speakernotes.properties.xml
new file mode 100644
index 0000000..f652a5d
--- /dev/null
+++ b/params/speakernotes.properties.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="speakernotes.properties">
+<refmeta>
+<refentrytitle>speakernotes.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to speakernotes
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="speakernotes.properties.frag">
+<xsl:attribute-set name="speakernotes.properties"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to speakernotes.</para>
+
+</refsection>
+</refentry>
diff --git a/params/svg.embedding.mode.fo.xml b/params/svg.embedding.mode.fo.xml
new file mode 100644
index 0000000..b501a77
--- /dev/null
+++ b/params/svg.embedding.mode.fo.xml
@@ -0,0 +1,53 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="svg.embedding.mode">
+<refmeta>
+<refentrytitle>svg.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">external-graphic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">instream-foreign-object</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>svg.embedding.mode</refname>
+<refpurpose>Specifies how inline SVG is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="svg.embedding.mode.fo.frag">
+ <xsl:param name="svg.embedding.mode">instream-foreign-object</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline SVG graphics
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>external-graphic</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>external-graphic</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>instream-foreign-object</term>
+ <listitem>
+ <para>Content is copied over with its namespace inside an
+ <markup>instream-foreign-object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/params/svg.embedding.mode.xml b/params/svg.embedding.mode.xml
new file mode 100644
index 0000000..891737f
--- /dev/null
+++ b/params/svg.embedding.mode.xml
@@ -0,0 +1,78 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="svg.embedding.mode">
+<refmeta>
+<refentrytitle>svg.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">object</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">image</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">link</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iframe</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">embed</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>svg.embedding.mode</refname>
+<refpurpose>Specifies how inline SVG is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="svg.embedding.mode.frag">
+ <xsl:param name="svg.embedding.mode">object</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline SVG graphics
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>image</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>img</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>link</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>a</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iframe</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>iframe</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>embed</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>embed</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
diff --git a/params/user.css.xml b/params/user.css.xml
new file mode 100644
index 0000000..e58254f
--- /dev/null
+++ b/params/user.css.xml
@@ -0,0 +1,29 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="user.css">
+<refmeta>
+<refentrytitle>user.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>user.css</refname>
+<refpurpose>Specifies the path to user-supplied CSS</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="user.css.frag">
+ <xsl:param name="user.css">user.css</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the path from where the
+ CSS styling is read. This file can be used to
+ add additional styling to the slides.</para>
+
+</refsection>
+</refentry>
diff --git a/params/webhelp.include.search.tab.xml b/params/webhelp.include.search.tab.xml
index 131f32d..b3d6a5b 100644
--- a/params/webhelp.include.search.tab.xml
+++ b/params/webhelp.include.search.tab.xml
@@ -15,7 +15,7 @@
<refsynopsisdiv>
<src:fragment xml:id="webhelp.include.search.tab.frag">
-<xsl:param name="webhelp.include.search.tab">true</xsl:param>
+<xsl:param name="webhelp.include.search.tab">1</xsl:param>
</src:fragment>
</refsynopsisdiv>
diff --git a/params/wrap.slidecontent.xml b/params/wrap.slidecontent.xml
new file mode 100644
index 0000000..09a515f
--- /dev/null
+++ b/params/wrap.slidecontent.xml
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="5.0" xml:id="wrap.slidecontent">
+<refmeta>
+<refentrytitle>wrap.slidecontent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>wrap.slidecontent</refname>
+<refpurpose>Specifies whether the foil content is wrapped into a div</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <src:fragment xml:id="wrap.slidecontent.frag">
+ <xsl:param name="wrap.slidecontent">0</xsl:param>
+ </src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the foil content is wrapped into
+ a div so that additional styling can be applied.</para>
+
+</refsection>
+</refentry>
diff --git a/params/writing.mode.xml b/params/writing.mode.xml
index c695933..e0f33fc 100644
--- a/params/writing.mode.xml
+++ b/params/writing.mode.xml
@@ -34,7 +34,7 @@
The value is normally taken from the gentext file for the
lang attribute of the document's root element, using the
key name 'writing-mode' to look it up in the gentext file.
-But the param can also be
+But this param can also be
set on the command line to override that gentext value.
</para>
<para>Accepted values are:
diff --git a/profiling/xsl2profile.xsl b/profiling/xsl2profile.xsl
index b6648aa..ecb6501 100644
--- a/profiling/xsl2profile.xsl
+++ b/profiling/xsl2profile.xsl
@@ -116,7 +116,7 @@
<xsl:call-template name="string.subst">
<xsl:with-param name="string" select="."/>
<xsl:with-param name="target">key('id',$rootid)</xsl:with-param>
- <xsl:with-param name="replacement">$profiled-nodes//*[@id=$rootid]</xsl:with-param>
+ <xsl:with-param name="replacement">$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]</xsl:with-param>
</xsl:call-template>
</xsl:attribute>
</xsl:when>
diff --git a/roundtrip/dbk2wordml.xsl b/roundtrip/dbk2wordml.xsl
index c818094..ed6030d 100644
--- a/roundtrip/dbk2wordml.xsl
+++ b/roundtrip/dbk2wordml.xsl
@@ -16,7 +16,7 @@
<xsl:output method="xml" indent='yes' standalone='yes' encoding='UTF-8'/>
<!-- ********************************************************************
- $Id: dbk2wordml.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: dbk2wordml.xsl 9651 2012-10-26 20:44:10Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -61,21 +61,27 @@
<o:Author>
<xsl:choose>
<xsl:when test='$authors'>
- <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
+ <xsl:variable name="content">
+ <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
+ </xsl:variable>
+ <xsl:value-of select="$content"/>
</xsl:when>
<xsl:otherwise>Unknown</xsl:otherwise>
</xsl:choose>
</o:Author>
<o:LastAuthor>
- <xsl:choose>
- <xsl:when test='$info/revhistory/revision[1]/*[self::author|self::authorinitials]'>
- <xsl:apply-templates select='$info/revhistory/revision[1]/*[self::author|self::authorinitials]' mode='doc:docprop.author'/>
- </xsl:when>
- <xsl:when test='$authors'>
- <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
- </xsl:when>
- <xsl:otherwise>Unknown</xsl:otherwise>
- </xsl:choose>
+ <xsl:variable name="content">
+ <xsl:choose>
+ <xsl:when test='$info/revhistory/revision[1]/*[self::author|self::authorinitials]'>
+ <xsl:apply-templates select='$info/revhistory/revision[1]/*[self::author|self::authorinitials]' mode='doc:docprop.author'/>
+ </xsl:when>
+ <xsl:when test='$authors'>
+ <xsl:apply-templates select='$authors[1]' mode='doc:docprop.author'/>
+ </xsl:when>
+ <xsl:otherwise>Unknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$content"/>
</o:LastAuthor>
<o:Revision>1</o:Revision>
<o:TotalTime></o:TotalTime>
diff --git a/slides/README b/slides/README
new file mode 100644
index 0000000..da4a932
--- /dev/null
+++ b/slides/README
@@ -0,0 +1,11 @@
+$Id: README 9639 2012-10-22 18:41:00Z stefan $
+
+README for the DocBook Slides distribution
+
+For a more detailed manual on Slides, please see the doc
+directory.
+
+For information about open DocBook Slides bugs and
+pending feature requests, see the following:
+
+ http://sourceforge.net/search/?group_artifact_id=373747&type_of_search=artifact&group_id=21935&words=slides
diff --git a/slides/RELEASE-NOTES.xml b/slides/RELEASE-NOTES.xml
new file mode 100644
index 0000000..5d7b02e
--- /dev/null
+++ b/slides/RELEASE-NOTES.xml
@@ -0,0 +1,135 @@
+<?xml version='1.0' encoding="utf-8"?>
+<!DOCTYPE article SYSTEM "http://docbook.org/xml/4.4/docbookx.dtd">
+<article>
+ <articleinfo>
+ <title>DocBook Slides Release Notes</title>
+ <pubdate><?dbtimestamp format="Y-m-d"?></pubdate>
+ <releaseinfo role="cvs">$Id: RELEASE-NOTES.xml 9639 2012-10-22 18:41:00Z stefan $</releaseinfo>
+ <corpauthor>DocBook Project Development Team</corpauthor>
+ </articleinfo>
+ <para>These are the release notes for the DocBook Slides
+ distribution. This file provides a high-level overview of features
+ and API changes in each release.</para>
+
+ <para>Bug fixes are (mostly) not documented here. For a complete
+ list of changes, including descriptions of bug fixes, see the <ulink
+ url="NEWS"/> file, which is auto-generated from the commit
+ descriptions for changes in the project CVS repository.</para>
+
+ <section>
+ <title>Release 3.4.0</title>
+ <para>This is a feature release that includes some significant
+ schema changes as well as fixes for a few bugs. The feature
+ changes include newly added support for generating presentations
+ in HTML Help format. There are also experimental versions of
+ stylesheets for generating presentations in Keynote and SVG
+ formats. It also includes a new (and still experimental)
+ <filename><ulink url="install.sh" >install.sh</ulink></filename>
+ script to facilitate XML catalog and locating-rules setup.</para>
+ <section id="V340_schema">
+ <title>Schemas</title>
+ <itemizedlist>
+ <listitem>
+ <para>Slides (non-full) is now based on <ulink
+ url="http://docbook.org/xml/simple/1.1/index.html" >Simplified
+ DocBook 1.1</ulink> and Slides "full" is now based on <ulink
+ url="http://docbook.org/xml/4.4/index.html" >DocBook
+ 4.4</ulink>. The main benefit this provides is the ability to
+ use HTML tables in your Slides XML source (instead of just CALS
+ tables).</para>
+ </listitem>
+ <listitem>
+ <para>RELAX NG schemas in RNC (compact-syntax) form as well as
+ in RNG (XML syntax) form are now included in the
+ distribution. You can use those to do context-sensitive
+ Slides editing in a RELAX NG-aware editor such as Emacs/nXML,
+ oXygen XML Editor, XMLBuddy, or Exchanger XML Editor. (Note
+ that the RELAX NG schemas are currently generated from the
+ DTDs).</para>
+ </listitem>
+ <listitem>
+ <para>A <filename><ulink url="locatingrules.xml"
+ >locatingrules.xml</ulink> </filename> file has been added
+ to the distribution. The
+ <filename><ulink url="locatingrules.xml"
+ >locatingrules.xml</ulink></filename> file tells a
+ "locating rules"-aware editor such as Emacs/nXML to
+ automatically associate the included RELAX NG Slides schema
+ with any document whose root element is
+ <sgmltag>slides</sgmltag>, <sgmltag>foil</sgmltag>,
+ <sgmltag>foilgroup</sgmltag>, or
+ <sgmltag>speakernotes</sgmltag>.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="V340_fo">
+ <title>FO</title>
+ <itemizedlist>
+ <listitem>
+ <simpara>Added attribute-set to easily control appearance of
+ footer</simpara>
+ </listitem>
+ <listitem>
+ <simpara>Added support for
+ <sgmltag>foil</sgmltag>/<sgmltag>subtitle</sgmltag></simpara>
+ </listitem>
+ <listitem>
+ <simpara>Bookmarks in XEP can now contain i18n
+ characters</simpara>
+ </listitem>
+ <listitem>
+ <simpara>Changed attribute namespaces accordingly to new
+ schema used for titlepage templates</simpara>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="V340_html">
+ <title>HTML</title>
+ <itemizedlist>
+ <listitem>
+ <simpara><sgmltag>xref</sgmltag> to <sgmltag>foil</sgmltag>
+ and <sgmltag>foilgroup</sgmltag> is now supported. (You must
+ have the DocBook XSL stylesheets v1.67.0 or greater to use
+ xrefs.)</simpara>
+ </listitem>
+ <listitem>
+ <simpara>Added new parameter
+ <parameter>show.foil.number</parameter> which can enable
+ numbering of slides. Currently works only with
+ <filename>frames.xsl</filename> and
+ <literal>multiframe=0</literal></simpara>
+ </listitem>
+ <listitem>
+ <simpara>Added support for <literal><ulink
+ url="http://www.sagehill.net/docbookxsl/Chunking.html#dbhtmlDirPI"
+ >dbhtml dir</ulink></literal> processing instruction</simpara>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="V340_htmlhelp">
+ <title>HTML Help</title>
+ <itemizedlist>
+ <listitem>
+ <simpara>Slides can now be generated in HTML Help format</simpara>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title id="V340_install">Install</title>
+ <itemizedlist>
+ <listitem>
+ <para>A new (and still experimental) <filename><ulink
+ url="install.sh" >install.sh</ulink></filename> file has
+ been added to the Slides distribution. For information on
+ using it, see the <filename><ulink url="INSTALL"
+ >INSTALL</ulink></filename> file.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+ <section id="old">
+ <title>Older releases</title>
+ <para>Sorry, there are no release notes for releases prior to the
+ 3.4.0 release.</para>
+ </section>
+</article>
diff --git a/slides/browser/CTOCWidget.js b/slides/browser/CTOCWidget.js
deleted file mode 100644
index a411ea9..0000000
--- a/slides/browser/CTOCWidget.js
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * CTOCWidget.js
- * $Revision: 1.3 $ $Date: 2003/07/14 06:02:50 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2003
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-function CTOCWidget(domTOCModel, target)
-{
- if (domTOCModel.documentElement.nodeName != 'toc')
- {
- throw 'CTOCWidget called on non toc Document: ' + domTOCModel.nodeName;
- }
-
- this.model = domTOCModel;
- this.target = target;
- this.view = document.createElement('div');
- this.view.setAttribute('class', CTOCWidget._classprefix + '_view');
-
- var modelItems = domTOCModel.documentElement.childNodes;
- for (var i = 0; i < modelItems.length; i++)
- {
- var modelItem = modelItems.item(i);
- if (modelItem.nodeType == Node.ELEMENT_NODE)
- {
- var viewItem = CTOCWidget.createItemView(modelItem, target);
- this.view.appendChild(viewItem);
- }
- }
-}
-
-CTOCWidget._handleImages = { open: '/toolbox/examples/2003/CTOCWidget/minus.gif', closed: '/toolbox/examples/2003/CTOCWidget/plus.gif', height: '12px', width: '16px'};
-CTOCWidget._classprefix = 'CTOCWidget';
-
-CTOCWidget.createItemView = function (modelItem, target)
-{
- if (modelItem.nodeType != Node.ELEMENT_NODE)
- {
- throw 'CTOCWidget.createItemView called on non-Element: ' + modelItem.nodeName;
- }
-
- var i;
-
- var viewItem = document.createElement('div');
- viewItem.setAttribute('class', CTOCWidget._classprefix + '_item');
-
- var viewItemHandle = document.createElement('div');
- viewItemHandle.setAttribute('class', CTOCWidget._classprefix + '_itemhandle');
- viewItemHandle.style.cursor = 'pointer';
-
- var viewItemHandleImg = document.createElement('img');
- viewItemHandleImg.style.height = CTOCWidget._handleImages.height;
- viewItemHandleImg.style.width = CTOCWidget._handleImages.width;
- viewItemHandleImg.addEventListener('click', CTOCWidget.toggleHandle, false);
-
- var viewItemHandleLink;
- if (!modelItem.getAttribute('url'))
- {
- viewItemHandleLink = document.createElement('span');
- }
- else
- {
- viewItemHandleLink = document.createElement('a');
- viewItemHandleLink.setAttribute('href', modelItem.getAttribute('url'));
- viewItemHandleLink.setAttribute('target', target);
- }
- viewItemHandleLink.appendChild(document.createTextNode(modelItem.getAttribute('title')));
-
- viewItemHandle.appendChild(viewItemHandleImg);
- viewItemHandle.appendChild(viewItemHandleLink);
- viewItem.appendChild(viewItemHandle);
-
- if (modelItem.childNodes.length == 0)
- {
- viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.open);
- }
- else
- {
- viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.closed);
-
- var viewItemChildren = document.createElement('div');
- viewItemChildren.setAttribute('class', CTOCWidget._classprefix + '_itemchildren');
- viewItemChildren.style.display = 'none';
- viewItemChildren.style.position = 'relative';
- viewItemChildren.style.left = '1em';
-
- for (i = 0; i < modelItem.childNodes.length; i++)
- {
- var modelItemChild = modelItem.childNodes.item(i);
- if (modelItemChild.nodeType == Node.ELEMENT_NODE)
- {
- viewItemChildren.appendChild(CTOCWidget.createItemView(modelItemChild, target));
- }
- }
-
- viewItem.appendChild(viewItemChildren);
- }
-
- return viewItem;
-};
-
-// fires on img part of the handle
-CTOCWidget.toggleHandle = function(e)
-{
- switch (e.eventPhase)
- {
- case Event.CAPTURING_PHASE:
- case Event.BUBBLING_PHASE:
- return true;
-
- case Event.AT_TARGET:
-
- e.preventBubble();
-
- var domHandle = e.target.parentNode;
- var domChildren = domHandle.nextSibling;
-
- if (!domChildren)
- {
- return true;
- }
-
- switch(domChildren.style.display)
- {
- case '':
- case 'block':
- domChildren.style.display = 'none';
- e.target.setAttribute('src', CTOCWidget._handleImages.closed);
- break;
- case 'none':
- domChildren.style.display = 'block';
- e.target.setAttribute('src', CTOCWidget._handleImages.open);
- break;
- default:
- return false;
- }
-
- return true;
-
- default:
- dump('Unknown Event Phase ' + e.eventPhase);
- break;
- }
-
- return true;
-}
-
diff --git a/slides/browser/overlay.js b/slides/browser/overlay.js
deleted file mode 100644
index fc010fb..0000000
--- a/slides/browser/overlay.js
+++ /dev/null
@@ -1,142 +0,0 @@
-// -*- Java -*-
-//
-// Overlay.js, adapted from Floating image II on dynamicdrive.com
-/* Usage:
-<html>
-<head>
-<script LANGUAGE="JavaScript1.2" src="overlay.js"></script>
-...rest of head...
-</head>
-<body onload="overlaySetup(corner)">
-<div id="overlayDiv" STYLE="position:absolute;visibility:visible;">
-...body of overlay...
-</div>
-...rest of page...
-*/
-
-var overlayNS4 = document.layers ? 1 : 0;
-var overlayIE = document.all ? 1 : 0;
-var overlayNS6 = document.getElementById && !document.all ? 1 : 0;
-
-var overlayPadX = 15;
-var overlayPadY = 15;
-var overlayDelay = 60;
-
-var overlayCorner = 'ur'; // ul, ll, ur, lr, uc, lc, cl, cr
-
-function overlayRefresh() {
- var overlayLx = 0;
- var overlayLy = 0;
-
- var overlayX = 0;
- var overlayY = 0;
- var overlayW = 0;
- var overlayH = 0;
- var contentH = 0;
-
- var links = document.getElementsByTagName("body")[0];
-
- if (overlayIE) {
- overlayLx = document.body.clientWidth;
- overlayLy = document.body.clientHeight;
-
- if (document.body.parentElement) {
- // For IE6
- overlayLx = document.body.parentElement.clientWidth;
- overlayLy = document.body.parentElement.clientHeight;
- }
-
- overlayH = overlayDiv.offsetHeight;
- overlayW = body.offsetWidth; // overlayDiv.offsetWidth;
- contentH = body.offsetHeight;
- } else if (overlayNS4) {
- overlayLy = window.innerHeight;
- overlayLx = window.innerWidth;
- overlayH = document.overlayDiv.clip.height;
- overlayW = body.clip.width; // document.overlayDiv.clip.width;
- contentH = body.clip.height;
- } else if (overlayNS6) {
- var odiv = document.getElementById('overlayDiv');
-
- overlayLy = window.innerHeight;
- overlayLx = window.innerWidth;
- overlayH = odiv.offsetHeight;
- overlayW = odiv.offsetWidth; // body.offsetWidth;
- contentH = odiv.offsetHeight;
- }
-
- if (overlayCorner == 'ul') {
- overlayX = overlayPadX;
- overlayY = overlayPadY;
- } else if (overlayCorner == 'cl') {
- overlayX = overlayPadX;
- overlayY = (overlayLy - overlayH) / 2;
- } else if (overlayCorner == 'll') {
- overlayX = overlayPadX;
- overlayY = (overlayLy - overlayH) - overlayPadY;
- } else if (overlayCorner == 'ur') {
- overlayX = (overlayLx - overlayW) - overlayPadX;
- overlayY = overlayPadY;
- } else if (overlayCorner == 'cr') {
- overlayX = (overlayLx - overlayW) - overlayPadX;
- overlayY = (overlayLy - overlayH) / 2;
- } else if (overlayCorner == 'lr') {
- overlayX = (overlayLx - overlayW) - overlayPadX;
- overlayY = (overlayLy - overlayH) - overlayPadY;
- } else if (overlayCorner == 'uc') {
- overlayX = (overlayLx - overlayW) / 2;
- overlayY = overlayPadY;
- } else { // overlayCorner == 'lc'
- overlayX = (overlayLx - overlayW) / 2;
- overlayY = (overlayLy - overlayH) - overlayPadY;
- }
-
- if (overlayIE) {
- overlayDiv.style.left=overlayX;
- overlayDiv.style.top=overlayY+document.body.scrollTop;
-
- if (contentH > overlayLy) {
- overlayDiv.style.visibility = "hidden";
- }
- } else if (overlayNS4) {
- document.overlayDiv.pageX=overlayX;
- document.overlayDiv.pageY=overlayY+window.pageYOffset;
- document.overlayDiv.visibility="visible";
-
- if (contentH > overlayLy) {
- document.overlayDiv.style.visibility = "hidden";
- }
- } else if (overlayNS6) {
- var div = document.getElementById("overlayDiv");
- var leftpx = overlayX;
- var toppx = overlayY+window.pageYOffset;
- var widthpx = overlayW;
-
- div.style.left = leftpx + "px";
- div.style.top = toppx + "px";
- div.style.width = widthpx + "px";
-
- if (contentH > overlayLy) {
- div.style.visibility = "hidden";
- } else {
- div.style.visibility = "visible";
- }
- }
-}
-
-function onad() {
- loopfunc();
-}
-
-function loopfunc() {
- overlayRefresh();
- setTimeout('loopfunc()',overlayDelay);
-}
-
-function overlaySetup(corner) {
- overlayCorner = corner;
-
- if (overlayIE || overlayNS4 || overlayNS6) {
- onad();
- }
-}
diff --git a/slides/browser/slides-default.css b/slides/browser/slides-default.css
deleted file mode 100644
index 1022d6b..0000000
--- a/slides/browser/slides-default.css
+++ /dev/null
@@ -1,9 +0,0 @@
-@import url('slides.css');
-
-.toclink { font-size: 10pt;
- font-weight: normal;
- }
-
-.toclink a { color: blue; }
-.toclink a:link { color: blue; }
-.toclink a:visited { color: blue; }
diff --git a/slides/browser/slides-frames.css b/slides/browser/slides-frames.css
deleted file mode 100644
index 698b6a3..0000000
--- a/slides/browser/slides-frames.css
+++ /dev/null
@@ -1,73 +0,0 @@
-@import url('slides.css');
-
-.toc-body { margin-left: 2px;
- margin-right: 2px;
- }
-
-.foil-body { margin-left: 2px;
- margin-right: 2px;
- }
-
-h1.title { margin-top: 0px;
- padding-top: 0px;
- }
-
-.navhead { visibility: visible;
- }
-
-.navfoot { visibility: visible;
- }
-
-/* ====================================================================== */
-
-.navfoot { border-top: 1px solid black;
- margin-top: 10px;
- padding-top: 4px;
- }
-/* ====================================================================== */
-
-.toc { font-weight: bold;
- font-size: 10pt;
- }
-
-.toc a { text-decoration: none; }
-.toc a:link { color: blue; }
-.toc a:visited { color: blue; }
-
-.toc .toc-foilgroup a { color: red; }
-.toc .toc-foilgroup a:link { color: red; }
-.toc .toc-foilgroup a:visited { color: red; }
-
-.toc .toc-titlefoil a { color: black; }
-.toc .toc-titlefoil a:link { color: black; }
-.toc .toc-titlefoil a:visited { color: black; }
-
-.toc .toc-foil a { color: blue; }
-.toc .toc-foil a:link { color: blue; }
-.toc .toc-foil a:visited { color: blue; }
-
-.toc-slidesinfo { font-family: sans-serif;
- font-weight: bold;
- text-align: center;
- }
-
-.toc-titlefoil { font-family: sans-serif;
- font-weight: bold;
- text-align: center;
- }
-
-.toc-foilgroup { font-family: sans-serif;
- margin-left: 0.25in;
- text-indent: -0.25in;
- font-weight: bold;
- color: red;
- }
-
-.toc-foil { font-family: sans-serif;
- font-size: 10pt;
- margin-left: 0.25in;
- text-indent: -0.4in;
- font-weight: bold;
- color: blue;
- }
-
diff --git a/slides/browser/slides-plain.css b/slides/browser/slides-plain.css
deleted file mode 100644
index c22f289..0000000
--- a/slides/browser/slides-plain.css
+++ /dev/null
@@ -1 +0,0 @@
-@import url('slides.css');
diff --git a/slides/browser/slides-table.css b/slides/browser/slides-table.css
deleted file mode 100644
index 1c195c9..0000000
--- a/slides/browser/slides-table.css
+++ /dev/null
@@ -1,41 +0,0 @@
-@import url('slides.css');
-
-.toc-body { margin-left: 2px;
- margin-right: 2px;
- }
-
-.foil-body { margin-left: 2px;
- margin-right: 2px;
- }
-
-.foilgroup-body { margin-left: 2px;
- margin-right: 2px;
- }
-
-h1.title {
- margin-top: 0px;
- padding-top: 0px;
- }
-
-/* ToC Stuff */
-
-.ttoc {
- font-size: 10pt;
- color: white;
- }
-
-.ttoc a { text-decoration: none; }
-.ttoc a:link { color: white }
-.ttoc a:visited { color: white }
-
-.ttoc-title {
- font-size: 10pt;
- }
-
-.ttoc-foilset {
- font-size: 10pt;
- }
-
-.ttoc-foil {
- font-size: 10pt;
- }
diff --git a/slides/browser/slides-w3c.css b/slides/browser/slides-w3c.css
deleted file mode 100644
index c22f289..0000000
--- a/slides/browser/slides-w3c.css
+++ /dev/null
@@ -1 +0,0 @@
-@import url('slides.css');
diff --git a/slides/browser/slides.css b/slides/browser/slides.css
deleted file mode 100644
index 1007478..0000000
--- a/slides/browser/slides.css
+++ /dev/null
@@ -1,119 +0,0 @@
-/* General formatting */
-
-body { font-family: sans-serif;
- font-weight: bold;
- }
-
-.copyright { color: #7F7F7F;
- }
-
-/* Title page formatting */
-
-
-.slidesinfo { text-align: center;
- font-size: 16pt;
- }
-
-.slidesinfo h1.title { color: blue;
- }
-.slidesinfo h2.subtitle { color: blue;
- }
-.slidesinfo h1.author { color: green;
- }
-
-.slidesinfo .copyright { color: black;
- }
-
-
-/* ToC page formatting */
-
-.tocpage h1.title { color: blue;
- text-align: center;
- }
-
-.tocpage a { text-decoration: none; }
-.tocpage a:link { color: blue; }
-.tocpage a:visited { color: blue; }
-
-.toc-body { margin-left: 0.5in;
- margin-right: 0.5in;
- }
-
-/* Foil page formatting */
-
-.foil { font-size: 16pt;
- }
-.foil h1.title { text-align: center;
- color: blue;
- padding-top: 0pt;
- margin-top: 0pt;
- }
-.foil h2.subtitle { text-align: center;
- color: blue;
- padding-top: 0pt;
- margin-top: 0pt;
- }
-
-.foil pre { font-size: 16pt;
- }
-
-.foil-body { margin-left: 0.5in;
- margin-right: 0.5in;
- }
-
-/* Foilgroup page formatting */
-
-.foilgroup { font-size: 16pt;
- }
-.foilgroup h1.title { text-align: center;
- color: red;
- padding-top: 0pt;
- margin-top: 0pt;
- }
-.foilgroup h2.subtitle { text-align: center;
- color: blue;
- padding-top: 0pt;
- margin-top: 0pt;
- }
-
-.foilgroup-body { margin-left: 0.5in;
- margin-right: 0.5in;
- }
-
-/* Navigation header formatting */
-
-.navhead { border-bottom: 1px solid black;
- margin-bottom: 10px;
- padding-bottom: 4px;
- }
-
-.navhead hr.top-nav-sep { display: none; }
-
-.navhead .slidestitle { font-weight: normal;
- font-size: 10pt;
- font-style: italic;
- }
-
-/* Navigation footer formatting */
-
-.navfoot { border-top: 1px solid black;
- margin-top: 10px;
- padding-top: 4px;
- }
-
-.navfoot hr.bottom-nav-sep { display: none; }
-
-/* General navigation formatting */
-
-.link-text { font-weight: bold;
- font-size: 10pt;
- }
-
-
-.link-text a { text-decoration: none; }
-.link-text a:link { color: blue; }
-.link-text a:visited { color: blue; }
-
-.no-link-text { color: #7F7F7F; }
-
-/* EOF */
diff --git a/slides/browser/slides.js b/slides/browser/slides.js
deleted file mode 100644
index 2e48a7c..0000000
--- a/slides/browser/slides.js
+++ /dev/null
@@ -1,120 +0,0 @@
-// -*- Java -*-
-//
-// $Id: slides.js 4931 2005-06-21 15:45:53Z kosek $
-//
-// Copyright (C) 2002 Norman Walsh
-//
-// You are free to use, modify and distribute this software without limitation.
-// This software is provided "AS IS," without a warranty of any kind.
-//
-// This script assumes that the Netscape 'ua.js' module has also been loaded.
-
-function newPage(filename, overlay) {
- divs = document.getElementsByTagName("div");
-
- if (divs) {
- var xdiv = divs[0];
-
- if (xdiv) {
- var xid = xdiv.getAttribute("id");
-
- var mytoc = window.top.frames[0];
- if (mytoc.lastUnderlined) {
- mytoc.lastUnderlined.style.textDecoration = "none";
- }
-
- var tdiv = xbGetElementById(xid, mytoc);
-
- if (tdiv) {
- var ta = tdiv.getElementsByTagName("a").item(0);
- ta.style.textDecoration = "underline";
- mytoc.lastUnderlined = ta;
- }
- }
- }
-
- if (overlay != 0) {
- overlaySetup('lc');
- }
-}
-
-
-function navigate (evt) {
- var kc = -1;
-
- if (navigator.org == 'microsoft' || navigator.family == 'opera') {
- kc = window.event.keyCode;
- } else if (navigator.family == 'gecko') {
- kc = evt.keyCode;
- if(!kc) {
- kc = evt.which;
- }
- } else {
- kc = evt.which;
- }
-
- var forward = (kc == 110) || (kc == 78) || (kc == 32)
- || (kc == 10) || (kc == 13) || (kc == 34)
- || (kc == 39);
- /* n, N, SPACE, ENTER, RETURN, PAGE UP, RIGHT ARROW */
- var backward = (kc == 112) || (kc == 80) || (kc == 8)
- || (kc == 33) || (kc == 37);
- /* p, P, BACKSPACE, PAGE DOWN, LEFT ARROW */
- var up = (kc == 117) || (kc == 85) || (kc == 38);
- /* u, U, UP ARROW */
- var home = (kc == 104) || (kc == 72) || (kc == 36);
- /* h, H, HOME */
- var toc = (kc == 116) || (kc == 84);
- /* t, T */
- /* previously included META (kc == 244) */
-
- var links = document.getElementsByTagName("link");
-
- var count = 0;
- var target = "";
-
- for (count = 0; count < links.length; count++) {
- if (home && (links[count].getAttribute("rel") == 'top')) {
- target = links[count].getAttribute("href");
- }
- if (toc && (links[count].getAttribute("rel") == 'contents')) {
- target = links[count].getAttribute("href");
- }
- if (up && (links[count].getAttribute("rel") == 'up')) {
- target = links[count].getAttribute("href");
- }
- if (forward && (links[count].getAttribute("rel") == 'next')) {
- target = links[count].getAttribute("href");
- }
- if (backward && (links[count].getAttribute("rel") == 'previous')) {
- target = links[count].getAttribute("href");
- }
- }
-
- if (target != "") {
- if (window.top.frames[1]) {
- window.top.frames[1].location = target;
- } else {
- window.location = target;
- }
- }
-
- return false;
-}
-
-function toggletoc (img, width, hidegraphic, showgraphic) {
- var fsc = top.GetElementsByTagName('frameset');
- if (fsc) {
- var fs = fsc[0];
- if (fs) {
- if (fs.cols == "0,*") {
- fs.cols = width + ",*";
- img.src = hidegraphic;
- } else {
- fs.cols = "0,*";
- img.src = showgraphic;
- }
- }
- }
-}
-
diff --git a/slides/browser/ua.js b/slides/browser/ua.js
deleted file mode 100644
index 8987659..0000000
--- a/slides/browser/ua.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * ua.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:17 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-function xbDetectBrowser()
-{
- var oldOnError = window.onerror;
- var element = null;
-
- window.onerror = null;
-
- // work around bug in xpcdom Mozilla 0.9.1
- window.saveNavigator = window.navigator;
-
- navigator.OS = '';
- navigator.version = parseFloat(navigator.appVersion);
- navigator.org = '';
- navigator.family = '';
-
- var platform;
- if (typeof(window.navigator.platform) != 'undefined')
- {
- platform = window.navigator.platform.toLowerCase();
- if (platform.indexOf('win') != -1)
- navigator.OS = 'win';
- else if (platform.indexOf('mac') != -1)
- navigator.OS = 'mac';
- else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
- navigator.OS = 'nix';
- }
-
- var i = 0;
- var ua = window.navigator.userAgent.toLowerCase();
-
- if (ua.indexOf('opera') != -1)
- {
- i = ua.indexOf('opera');
- navigator.family = 'opera';
- navigator.org = 'opera';
- navigator.version = parseFloat('0' + ua.substr(i+6), 10);
- }
- else if ((i = ua.indexOf('msie')) != -1)
- {
- navigator.org = 'microsoft';
- navigator.version = parseFloat('0' + ua.substr(i+5), 10);
-
- if (navigator.version < 4)
- navigator.family = 'ie3';
- else
- navigator.family = 'ie4'
- }
- else if (ua.indexOf('gecko') != -1)
- {
- navigator.family = 'gecko';
- var rvStart = ua.indexOf('rv:');
- var rvEnd = ua.indexOf(')', rvStart);
- var rv = ua.substring(rvStart+3, rvEnd);
- var rvParts = rv.split('.');
- var rvValue = 0;
- var exp = 1;
-
- for (var i = 0; i < rvParts.length; i++)
- {
- var val = parseInt(rvParts[i]);
- rvValue += val / exp;
- exp *= 100;
- }
- navigator.version = rvValue;
-
- if (ua.indexOf('netscape') != -1)
- navigator.org = 'netscape';
- else if (ua.indexOf('compuserve') != -1)
- navigator.org = 'compuserve';
- else
- navigator.org = 'mozilla';
- }
- else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
- {
- var is_major = parseFloat(navigator.appVersion);
-
- if (is_major < 4)
- navigator.version = is_major;
- else
- {
- i = ua.lastIndexOf('/')
- navigator.version = parseFloat('0' + ua.substr(i+1), 10);
- }
- navigator.org = 'netscape';
- navigator.family = 'nn' + parseInt(navigator.appVersion);
- }
- else if ((i = ua.indexOf('aol')) != -1 )
- {
- // aol
- navigator.family = 'aol';
- navigator.org = 'aol';
- navigator.version = parseFloat('0' + ua.substr(i+4), 10);
- }
- else if ((i = ua.indexOf('hotjava')) != -1 )
- {
- // hotjava
- navigator.family = 'hotjava';
- navigator.org = 'sun';
- navigator.version = parseFloat(navigator.appVersion);
- }
-
- window.onerror = oldOnError;
-}
-
-xbDetectBrowser();
-
diff --git a/slides/browser/xbCollapsibleLists.js b/slides/browser/xbCollapsibleLists.js
deleted file mode 100644
index 6a4f93c..0000000
--- a/slides/browser/xbCollapsibleLists.js
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
-xbCollapsibleLists.js 2001-02-26
-
-Contributor(s): Michael Bostock, Netscape Communications, Copyright 1997
- Bob Clary, Netscape Communications, Copyright 2001
- Seth Dillingham, Macrobyte Resources, Copyright 2001
- Mark Filanowicz, Amdahl IT Services, Copyright 2002
-
-Netscape grants you a royalty free license to use, modify or
-distribute this software provided that this copyright notice
-appears on all copies. This software is provided "AS IS,"
-without a warranty of any kind.
-
-See xbCollapsibleLists.js.changelog.html for details of changes.
-*/
-
-
-var xbcl__id = 0;
-var xbcl_item_id = 0;
-var xbcl_mLists = new Array();
-var xbcl_parentElement = null;
-
-document.lists = xbcl_mLists;
-
-function List(visible, width, height, bgColor, collapsedImageURL, expandedImageURL)
-{
- this.lists = new Array(); // sublists
- this.items = new Array(); // layers
- this.types = new Array(); // type
- this.strs = new Array(); // content
- this.visible = visible;
- this.id = xbcl__id;
- this.width = width || 350;
- this.height = height || 22;
-
- this.collapsedImageURL = collapsedImageURL || 'false.gif';
- this.expandedImageURL = expandedImageURL || 'true.gif';
-
- if (bgColor)
- this.bgColor = bgColor;
-
- xbcl_mLists[xbcl__id++] = this;
-}
-
-function xbcl_SetFont(i,j)
-{
- this.fontIntro = i;
- this.fontOutro = j;
-}
-
-function xbcl_GetFont()
-{
- return [this.fontIntro, this.fontOutro];
-}
-
-function xbcl_setIndent(indent)
-{
- this.i = indent;
- if (this.i < 0)
- {
- this.i = 0;
- this.space = false;
- }
- else
- this.space = true;
-}
-
-function xbcl_getIndent(indent)
-{
- return this.i;
-}
-
-function xbcl_writeItemDOMHTML( obj, s, flList, listObj )
-{
- var styleObj;
- var outerDiv, innerLeft, innerRight;
- var str;
- var leftEdge = 0;
-
- styleObj = new xbStyle(obj);
- styleObj.setVisibility('hidden');
- outerDiv = document.createElement( "DIV" );
- outerDiv.id = "DIV_" + obj.id;
- styleObj = new xbStyle( outerDiv );
- styleObj.setWidth( this.width );
-
- if ( flList )
- {
- innerLeft = document.createElement( "DIV" );
- innerLeft.style.position = "absolute";
- innerLeft.style.valign = "middle";
- leftEdge = 15;
-
- styleObj = new xbStyle( innerLeft );
- styleObj.setWidth( 15 );
- styleObj.setBackgroundColor( "transparent" );
-
- if ( listObj.visible )
- str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';
- else
- str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';
-
- innerLeft.innerHTML = str;
- outerDiv.appendChild( innerLeft );
- }
- else if ( this.space )
- leftEdge = 15;
-
- innerRight = document.createElement( "DIV" );
- innerRight.noWrap = true;
- innerRight.style.position = "absolute";
-
- styleObj = new xbStyle( innerRight );
- styleObj.setLeft( leftEdge + ( this.l * this.i ) );
- styleObj.setWidth( this.width - 15 - this.l * this.i );
- styleObj.setBackgroundColor( "transparent" );
-
- // start of change by Mark Filanowicz 02-22-2002
- if ( flList )
- {
- s = this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;
- }
- else
- {
- s = this.fontIntro + s + this.fontOutro;
- }
- // end of change by Mark Filanowicz 02-22-2002
-
-
- innerRight.innerHTML = s;
- outerDiv.appendChild( innerRight );
-
- obj.appendChild( outerDiv );
-
- return;
-}
-
-function xbcl_writeItem( obj, s, flList, listObj )
-{
- var cellStyle = '';
- var str = '';
- var styleObj = new xbStyle( obj );
-
- styleObj.setVisibility( 'hidden' );
-
- if ( document.body && document.body.style )
- cellStyle = ' style="background-color: transparent;"';
-
- str += '<TABLE WIDTH='+this.width+' NOWRAP BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR>';
-
- if ( flList )
- {
- str += '<TD WIDTH="15" NOWRAP VALIGN="MIDDLE"' + cellStyle + '>';
- str += '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');">';
-
- if ( listObj.visible )
- str += '<IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '">';
- else
- str += '<IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '">';
-
- str += '</A></TD>';
- }
- else if (this.space)
- str += '<TD WIDTH="15" NOWRAP' + cellStyle + '>&nbsp;</TD>';
-
- if (this.l>0 && this.i>0)
- str += '<TD WIDTH="' + this.l*this.i+ '" NOWRAP' + cellStyle + '>&nbsp;</TD>';
-
- str += '<TD HEIGHT="' + ( this.height - 3) + '" WIDTH="' + ( this.width - 15 - this.l * this.i ) + '" VALIGN="MIDDLE" ALIGN="LEFT"' + cellStyle + '>';
-
- // start of change by Mark Filanowicz 02-22-2002
- if ( flList )
- {
- str += this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;
- }
- else
- {
- str += this.fontIntro + s + this.fontOutro;
- }
- // end of change by Mark Filanowicz 02-22-2002
-
- str += '</TD></TR></TABLE>';
-
- styleObj.setInnerHTML( str );
-
- return;
-}
-
-function xbcl_writeList()
-{
- var item;
- var i;
- var flList;
-
- for ( i = 0; i < this.types.length; i++ )
- {
- item = this.items[ i ];
- flList = ( this.types[ i ] == 'list' );
-
- this._writeItem( item, this.strs[ i ], flList, this.lists[ i ] );
-
- if ( flList && this.lists[ i ].visible )
- this.lists[ i ]._writeList();
- }
-
- this.built = true;
- this.needsRewrite = false;
- self.status = '';
-}
-
-function xbcl_showList()
-{
- var item;
- var styleObj;
- var i;
-
- for (i = 0; i < this.types.length; i++)
- {
- item = this.items[i];
- styleObj = new xbStyle(item);
- styleObj.setClipLeft(0);
- styleObj.setClipRight(this.width);
- styleObj.setClipTop(0);
- if (item.height)
- {
- styleObj.setClipBottom(item.height);
- styleObj.setHeight(item.height);
- }
- else
- {
- styleObj.setClipBottom(this.height);
- styleObj.setHeight(this.height);
- }
-
- if ( this.visible )
- styleObj.setVisibility( 'visible' );
-
- var bg = item.oBgColor || this.bgColor;
- if ((bg == null) || (bg == 'null'))
- bg = '';
-
- styleObj.setBackgroundColor(bg);
-
- if (this.types[i] == 'list' && this.lists[i].visible)
- this.lists[i]._showList();
- }
- this.shown = true;
- this.needsUpdate = false;
-}
-
-function xbcl_setImage(list, item, file)
-{
- var id = '_img' + list.id;
- var img = null;
-
- // for DOMHTML or IE4 use cross browser getElementById from xbStyle
- // can't use it for NN4 since it only works for layers in NN4
- if (document.layers)
- img = item.document.images[0];
- else
- img = xbGetElementById(id);
-
- if (img)
- img.src = file;
-}
-
-function xbcl_getHeight()
-{
- var totalHeight = 0;
- var i;
-
- if (!this.visible)
- return 0;
-
- for (i = 0; i < this.types.length; i++)
- {
- if (this.items[i].height)
- totalHeight += this.items[i].height;
- else
- totalHeight += this.height;
-
- if ((this.types[i] == 'list') && this.lists[i].visible)
- {
- totalHeight += this.lists[i].getHeight();
- }
- }
-
- return totalHeight;
-}
-
-function xbcl_updateList(pVis, x, y)
-{
- var currTop = y;
- var item;
- var styleObj;
- var i;
-
- for (i = 0; i < this.types.length; i++)
- {
- item = this.items[i];
- styleObj = new xbStyle(item);
-
- if (this.visible && pVis)
- {
- styleObj.moveTo(x, currTop);
- if (item.height) // allow custom heights for each item
- currTop += item.height;
- else
- currTop += this.height;
-
- styleObj.setVisibility('visible');
- }
- else
- {
- styleObj.setVisibility('hidden');
- }
-
- if (this.types[i] == 'list')
- {
- if (this.lists[i].visible)
- {
- if (!this.lists[i].built || this.lists[i].needsRewrite)
- this.lists[i]._writeList();
-
- if (!this.lists[i].shown || this.lists[i].needsUpdate)
- this.lists[i]._showList();
-
- xbcl_setImage(this.lists[i], item, this.expandedImageURL );
- }
- else
- xbcl_setImage(this.lists[i], item, this.collapsedImageURL );
-
- if (this.lists[i].built)
- currTop = this.lists[i]._updateList(this.visible && pVis, x, currTop);
- }
- }
- return currTop;
-}
-
-function xbcl_updateParent( pid, l )
-{
- var i;
-
- if ( !l )
- l = 0;
-
- this.pid = pid;
- this.l = l;
-
- for ( i = 0; i < this.types.length; i++ )
- {
- if ( this.types[ i ] == 'list' )
- {
- this.lists[ i ]._updateParent( pid, l + 1 );
- }
- }
-}
-
-function xbcl_expand(i)
-{
- xbcl_mLists[i].visible = !xbcl_mLists[i].visible;
-
- if (xbcl_mLists[i].onexpand != null)
- xbcl_mLists[i].onexpand(xbcl_mLists[i].id);
-
- xbcl_mLists[xbcl_mLists[i].pid].rebuild();
-
- if (xbcl_mLists[i].postexpand != null)
- xbcl_mLists[i].postexpand(xbcl_mLists[i].id);
-}
-
-function xbcl_build(x, y)
-{
- this._updateParent(this.id);
- this._writeList();
- this._showList();
- this._updateList(true, x, y);
- this.x = x;
- this.y = y;
-}
-
-function xbcl_rebuild()
-{
- this._updateList(true, this.x, this.y);
-}
-
-function xbcl_getNewItem()
-{
- var newItem = null;
-
- newItem = xbGetElementById('lItem' + xbcl_item_id);
-
- if (!newItem)
- {
- if (document.all && !document.getElementById)
- {
- var parentElement = this.parentElement;
- if (!parentElement)
- parentElement = document.body;
-
- parentElement.insertAdjacentHTML('beforeEnd', '<div id="lItem' + xbcl_item_id + '" style="position:absolute;"></div>');
- newItem = xbGetElementById('lItem' + xbcl_item_id);
- }
- else if (document.layers)
- {
- if (this.parentElement)
- newItem = new Layer(this.width, this.parentElement);
- else
- newItem = new Layer(this.width);
- }
- else if (document.createElement)
- {
- newItem = document.createElement('div');
- newItem.id= 'lItem' + xbcl_item_id;
- newItem.style.position = 'absolute';
-
- if (this.parentElement)
- this.parentElement.appendChild(newItem);
- else
- document.body.appendChild(newItem);
- }
- }
-
- return newItem;
-}
-
-function xbcl_addItem(str, bgColor, item)
-{
- if (!item)
- item = this._getNewItem();
-
- if (!item)
- return;
-
- if (bgColor)
- item.oBgColor = bgColor;
-
- this.items[this.items.length] = item;
- this.types[this.types.length] = 'item';
- this.strs[this.strs.length] = str;
- ++xbcl_item_id;
-
- if ( this.built )
- {
- this._writeItem( item, str, false );
- xbcl_mLists[this.pid].rebuild();
- if ( this.visible )
- this._showList();
- else
- this.needsUpdate = true;
- }
-
- return item;
-}
-
-function xbcl_addList(list, str, bgColor, item)
-{
- if (!item)
- item = this._getNewItem();
-
- if (!item)
- return;
-
- if (bgColor)
- item.oBgColor = bgColor;
-
- this.lists[this.items.length] = list;
- this.items[this.items.length] = item;
- this.types[this.types.length] = 'list';
- this.strs[this.strs.length] = str;
- ++xbcl_item_id;
-
- list.parentList = this;
-
- list.pid = this.pid;
- list.l = this.l + 1;
-
- if ( this.built )
- {
- this._writeItem( item, str, true, list );
- xbcl_mLists[ this.pid ].rebuild();
- if ( this.visible )
- this._showList();
- else
- this.needsUpdate = true;
- }
-
- return item;
-}
-
-List.prototype.setIndent = xbcl_setIndent;
-List.prototype.getIndent = xbcl_getIndent;
-List.prototype.addItem = xbcl_addItem;
-List.prototype.addList = xbcl_addList;
-List.prototype.build = xbcl_build;
-List.prototype.rebuild = xbcl_rebuild;
-List.prototype.setFont = xbcl_SetFont;
-List.prototype.getFont = xbcl_GetFont;
-List.prototype.getHeight = xbcl_getHeight;
-
-List.prototype._writeList = xbcl_writeList;
-List.prototype._getNewItem = xbcl_getNewItem;
-
-if ( document.getElementById && document.createElement )
- List.prototype._writeItem = xbcl_writeItemDOMHTML;
-else
- List.prototype._writeItem = xbcl_writeItem;
-
-List.prototype._showList = xbcl_showList;
-List.prototype._updateList = xbcl_updateList;
-List.prototype._updateParent = xbcl_updateParent;
-
-List.prototype.onexpand = null;
-List.prototype.postexpand = null;
-List.prototype.lists = null; // sublists
-List.prototype.items = null; // layers
-List.prototype.types = null; // type
-List.prototype.strs = null; // content
-List.prototype.x = 0;
-List.prototype.y = 0;
-List.prototype.visible = false;
-List.prototype.id = -1;
-List.prototype.i = 18;
-List.prototype.space = true;
-List.prototype.pid = 0;
-List.prototype.fontIntro = '';
-List.prototype.fontOutro = '';
-List.prototype.width = 350;
-List.prototype.height = 22;
-List.prototype.built = false;
-List.prototype.shown = false;
-List.prototype.needsUpdate = false;
-List.prototype.needsRewrite = false;
-List.prototype.l = 0;
-List.prototype.bgColor = null;
-List.prototype.parentList = null;
-List.prototype.parentElement = null;
diff --git a/slides/browser/xbDOM.js b/slides/browser/xbDOM.js
deleted file mode 100644
index 39cc8bf..0000000
--- a/slides/browser/xbDOM.js
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * xbDOM.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:18 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-function xbToInt(s)
-{
- var i = parseInt(s, 10);
- if (isNaN(i))
- i = 0;
-
- return i;
-}
-
-function xbGetWindowWidth(windowRef)
-{
- var width = 0;
-
- if (!windowRef)
- {
- windowRef = window;
- }
-
- if (typeof(windowRef.innerWidth) == 'number')
- {
- width = windowRef.innerWidth;
- }
- else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')
- {
- width = windowRef.document.body.clientWidth;
- }
-
- return width;
-}
-
-function xbGetWindowHeight(windowRef)
-{
- var height = 0;
-
- if (!windowRef)
- {
- windowRef = window;
- }
-
- if (typeof(windowRef.innerWidth) == 'number')
- {
- height = windowRef.innerHeight;
- }
- else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number')
- {
- height = windowRef.document.body.clientHeight;
- }
- return height;
-}
-
-function xbGetElementsByNameAndType(name, type, windowRef)
-{
- if (!windowRef)
- windowRef = window;
-
- var elmlist = new Array();
-
- xbFindElementsByNameAndType(windowRef.document, name, type, elmlist);
-
- return elmlist;
-}
-
-function xbFindElementsByNameAndType(doc, name, type, elmlist)
-{
- var i;
- var subdoc;
-
- for (i = 0; i < doc[type].length; ++i)
- {
- if (doc[type][i].name && name == doc[type][i].name)
- {
- elmlist[elmlist.length] = doc[type][i];
- }
- }
-
- if (doc.layers)
- {
- for (i = 0; i < doc.layers.length; ++i)
- {
- subdoc = doc.layers[i].document;
- xbFindElementsByNameAndType(subdoc, name, type, elmlist);
- }
- }
-}
-
-if (document.layers)
-{
- nav4FindLayer =
- function (doc, id)
- {
- var i;
- var subdoc;
- var obj;
-
- for (i = 0; i < doc.layers.length; ++i)
- {
- if (doc.layers[i].id && id == doc.layers[i].id)
- return doc.layers[i];
-
- subdoc = doc.layers[i].document;
- obj = nav4FindLayer(subdoc, id);
- if (obj != null)
- return obj;
- }
- return null;
- }
-
- nav4FindElementsByName =
- function (doc, name, elmlist)
- {
- var i;
- var j;
- var subdoc;
-
- for (i = 0; i < doc.images.length; ++i)
- {
- if (doc.images[i].name && name == doc.images[i].name)
- {
- elmlist[elmlist.length] = doc.images[i];
- }
- }
-
- for (i = 0; i < doc.forms.length; ++i)
- {
- for (j = 0; j < doc.forms[i].elements.length; j++)
- {
- if (doc.forms[i].elements[j].name && name == doc.forms[i].elements[j].name)
- {
- elmlist[elmlist.length] = doc.forms[i].elements[j];
- }
- }
-
- if (doc.forms[i].name && name == doc.forms[i].name)
- {
- elmlist[elmlist.length] = doc.forms[i];
- }
- }
-
- for (i = 0; i < doc.anchors.length; ++i)
- {
- if (doc.anchors[i].name && name == doc.anchors[i].name)
- {
- elmlist[elmlist.length] = doc.anchors[i];
- }
- }
-
- for (i = 0; i < doc.links.length; ++i)
- {
- if (doc.links[i].name && name == doc.links[i].name)
- {
- elmlist[elmlist.length] = doc.links[i];
- }
- }
-
- for (i = 0; i < doc.applets.length; ++i)
- {
- if (doc.applets[i].name && name == doc.applets[i].name)
- {
- elmlist[elmlist.length] = doc.applets[i];
- }
- }
-
- for (i = 0; i < doc.embeds.length; ++i)
- {
- if (doc.embeds[i].name && name == doc.embeds[i].name)
- {
- elmlist[elmlist.length] = doc.embeds[i];
- }
- }
-
- for (i = 0; i < doc.layers.length; ++i)
- {
- if (doc.layers[i].name && name == doc.layers[i].name)
- {
- elmlist[elmlist.length] = doc.layers[i];
- }
-
- subdoc = doc.layers[i].document;
- nav4FindElementsByName(subdoc, name, elmlist);
- }
- }
-
- xbGetElementById = function (id, windowRef)
- {
- if (!windowRef)
- windowRef = window;
-
- return nav4FindLayer(windowRef.document, id);
- };
-
- xbGetElementsByName = function (name, windowRef)
- {
- if (!windowRef)
- windowRef = window;
-
- var elmlist = new Array();
-
- nav4FindElementsByName(windowRef.document, name, elmlist);
-
- return elmlist;
- };
-
-}
-else if (document.all)
-{
- xbGetElementById =
- function (id, windowRef)
- {
- if (!windowRef)
- {
- windowRef = window;
- }
- var elm = windowRef.document.all[id];
- if (!elm)
- {
- elm = null;
- }
- return elm;
- };
-
- xbGetElementsByName = function (name, windowRef)
- {
- if (!windowRef)
- windowRef = window;
-
- var i;
- var idnamelist = windowRef.document.all[name];
- var elmlist = new Array();
-
- if (!idnamelist.length || idnamelist.name == name)
- {
- if (idnamelist)
- elmlist[elmlist.length] = idnamelist;
- }
- else
- {
- for (i = 0; i < idnamelist.length; i++)
- {
- if (idnamelist[i].name == name)
- elmlist[elmlist.length] = idnamelist[i];
- }
- }
-
- return elmlist;
- }
-
-}
-else if (document.getElementById)
-{
- xbGetElementById =
- function (id, windowRef)
- {
- if (!windowRef)
- {
- windowRef = window;
- }
- return windowRef.document.getElementById(id);
- };
-
- xbGetElementsByName =
- function (name, windowRef)
- {
- if (!windowRef)
- {
- windowRef = window;
- }
- return windowRef.document.getElementsByName(name);
- };
-}
-else
-{
- xbGetElementById =
- function (id, windowRef)
- {
- return null;
- };
-
- xbGetElementsByName =
- function (name, windowRef)
- {
- return new Array();
- };
-}
-
-function xbGetPageScrollX(windowRef)
-{
- if (!windowRef)
- {
- windowRef = window;
- }
-
- if (typeof(windowRef.pageXOffset) == 'number')
- {
- return windowRef.pageXOffset;
- }
-
- if (typeof(windowRef.document.body && windowRef.document.body.scrollLeft) == 'number')
- {
- return windowRef.document.body.scrollLeft;
- }
-
- return 0;
-}
-
-function xbGetPageScrollY(windowRef)
-{
- if (!windowRef)
- {
- windowRef = window;
- }
-
- if (typeof(windowRef.pageYOffset) == 'number')
- {
- return windowRef.pageYOffset;
- }
-
- if (typeof(windowRef.document.body && windowRef.document.body.scrollTop) == 'number')
- {
- return windowRef.document.body.scrollTop;
- }
-
- return 0;
-}
-
-if (document.layers)
-{
- xbSetInnerHTML =
- function (element, str)
- {
- element.document.write(str);
- element.document.close();
- };
-}
-else
-{
- xbSetInnerHTML = function (element, str)
- {
- if (typeof(element.innerHTML) != 'undefined')
- {
- element.innerHTML = str;
- }
- };
-}
-
-// eof: xbDOM.js
diff --git a/slides/browser/xbDebug.js b/slides/browser/xbDebug.js
deleted file mode 100644
index 48fd010..0000000
--- a/slides/browser/xbDebug.js
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * xbDebug.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:19 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*
-ChangeLog:
-
-2002-02-25: bclary - modified xbDebugTraceOject to make sure
- that original versions of wrapped functions were not
- rewrapped. This had caused an infinite loop in IE.
-
-2002-02-07: bclary - modified xbDebug.prototype.close to not null
- the debug window reference. This can cause problems with
- Internet Explorer if the page is refreshed. These issues will
- be addressed at a later date.
-*/
-
-function xbDebug()
-{
- this.on = false;
- this.stack = new Array();
- this.debugwindow = null;
- this.execprofile = new Object();
-}
-
-xbDebug.prototype.push = function ()
-{
- this.stack[this.stack.length] = this.on;
- this.on = true;
-}
-
-xbDebug.prototype.pop = function ()
-{
- this.on = this.stack[this.stack.length - 1];
- --this.stack.length;
-}
-
-xbDebug.prototype.open = function ()
-{
- if (this.debugwindow && !this.debugwindow.closed)
- this.close();
-
- this.debugwindow = window.open('about:blank', 'DEBUGWINDOW', 'height=400,width=600,resizable=yes,scrollbars=yes');
- this.debugwindow.moveTo(0,0);
- window.focus();
-
- this.debugwindow.document.write('<html><head><title>xbDebug Window</title></head><body><h3>Javascript Debug Window</h3></body></html>');
-}
-
-xbDebug.prototype.close = function ()
-{
- if (!this.debugwindow)
- return;
-
- if (!this.debugwindow.closed)
- this.debugwindow.close();
-
- // bc 2002-02-07, other windows may still hold a reference to this: this.debugwindow = null;
-}
-
-xbDebug.prototype.dump = function (msg)
-{
- if (!this.on)
- return;
-
- if (!this.debugwindow || this.debugwindow.closed)
- this.open();
-
- this.debugwindow.document.write(msg + '<br>');
-
- return;
-}
-
-var xbDEBUG = new xbDebug();
-
-window.onunload = function () { xbDEBUG.close(); }
-
-function xbDebugGetFunctionName(funcref)
-{
-
- if (!funcref)
- {
- return '';
- }
-
- if (funcref.name)
- return funcref.name;
-
- var name = funcref + '';
- name = name.substring(name.indexOf(' ') + 1, name.indexOf('('));
- funcref.name = name;
-
- if (!name) alert('name not defined');
- return name;
-}
-
-
-// emulate functionref.apply for IE mac and IE win < 5.5
-function xbDebugApplyFunction(funcname, funcref, thisref, argumentsref)
-{
- var rv;
-
- if (!funcref)
- {
- alert('xbDebugApplyFunction: funcref is null');
- }
-
- if (typeof(funcref.apply) != 'undefined')
- return funcref.apply(thisref, argumentsref);
-
- var applyexpr = 'thisref.xbDebug_orig_' + funcname + '(';
- var i;
-
- for (i = 0; i < argumentsref.length; i++)
- {
- applyexpr += 'argumentsref[' + i + '],';
- }
-
- if (argumentsref.length > 0)
- {
- applyexpr = applyexpr.substring(0, applyexpr.length - 1);
- }
-
- applyexpr += ')';
-
- return eval(applyexpr);
-}
-
-function xbDebugCreateFunctionWrapper(scopename, funcname, precall, postcall)
-{
- var wrappedfunc;
- var scopeobject = eval(scopename);
- var funcref = scopeobject[funcname];
-
- scopeobject['xbDebug_orig_' + funcname] = funcref;
-
- wrappedfunc = function ()
- {
- var rv;
-
- precall(scopename, funcname, arguments);
- rv = xbDebugApplyFunction(funcname, funcref, scopeobject, arguments);
- postcall(scopename, funcname, arguments, rv);
- return rv;
- };
-
- if (typeof(funcref.constructor) != 'undefined')
- wrappedfunc.constructor = funcref.constuctor;
-
- if (typeof(funcref.prototype) != 'undefined')
- wrappedfunc.prototype = funcref.prototype;
-
- scopeobject[funcname] = wrappedfunc;
-}
-
-function xbDebugCreateMethodWrapper(contextname, classname, methodname, precall, postcall)
-{
- var context = eval(contextname);
- var methodref = context[classname].prototype[methodname];
-
- context[classname].prototype['xbDebug_orig_' + methodname] = methodref;
-
- var wrappedmethod = function ()
- {
- var rv;
- // eval 'this' at method run time to pick up reference to the object's instance
- var thisref = eval('this');
- // eval 'arguments' at method run time to pick up method's arguments
- var argsref = arguments;
-
- precall(contextname + '.' + classname, methodname, argsref);
- rv = xbDebugApplyFunction(methodname, methodref, thisref, argsref);
- postcall(contextname + '.' + classname, methodname, argsref, rv);
- return rv;
- };
-
- return wrappedmethod;
-}
-
-function xbDebugPersistToString(obj)
-{
- var s = '';
-
- if (obj == null)
- return 'null';
-
- switch(typeof(obj))
- {
- case 'number':
- return obj;
- case 'string':
- return '"' + obj + '"';
- case 'undefined':
- return 'undefined';
- case 'boolean':
- return obj + '';
- }
-
- if (obj.constructor)
- return '[' + xbDebugGetFunctionName(obj.constructor) + ']';
-
- return null;
-}
-
-function xbDebugTraceBefore(scopename, funcname, funcarguments)
-{
- var i;
- var s = '';
- var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname];
- if (!execprofile)
- execprofile = xbDEBUG.execprofile[scopename + '.' + funcname] = { started: 0, time: 0, count: 0 };
-
- for (i = 0; i < funcarguments.length; i++)
- {
- s += xbDebugPersistToString(funcarguments[i]);
- if (i < funcarguments.length - 1)
- s += ', ';
- }
-
- xbDEBUG.dump('enter ' + scopename + '.' + funcname + '(' + s + ')');
- execprofile.started = (new Date()).getTime();
-}
-
-function xbDebugTraceAfter(scopename, funcname, funcarguments, rv)
-{
- var i;
- var s = '';
- var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname];
- if (!execprofile)
- xbDEBUG.dump('xbDebugTraceAfter: execprofile not created for ' + scopename + '.' + funcname);
- else if (execprofile.started == 0)
- xbDEBUG.dump('xbDebugTraceAfter: execprofile.started == 0 for ' + scopename + '.' + funcname);
- else
- {
- execprofile.time += (new Date()).getTime() - execprofile.started;
- execprofile.count++;
- execprofile.started = 0;
- }
-
- for (i = 0; i < funcarguments.length; i++)
- {
- s += xbDebugPersistToString(funcarguments[i]);
- if (i < funcarguments.length - 1)
- s += ', ';
- }
-
- xbDEBUG.dump('exit ' + scopename + '.' + funcname + '(' + s + ')==' + xbDebugPersistToString(rv));
-}
-
-function xbDebugTraceFunction(scopename, funcname)
-{
- xbDebugCreateFunctionWrapper(scopename, funcname, xbDebugTraceBefore, xbDebugTraceAfter);
-}
-
-function xbDebugTraceObject(contextname, classname)
-{
- var classref = eval(contextname + '.' + classname);
- var p;
- var sp;
-
- if (!classref || !classref.prototype)
- return;
-
- for (p in classref.prototype)
- {
- sp = p + '';
- if (typeof(classref.prototype[sp]) == 'function' && (sp).indexOf('xbDebug_orig') == -1)
- {
- classref.prototype[sp] = xbDebugCreateMethodWrapper(contextname, classname, sp, xbDebugTraceBefore, xbDebugTraceAfter);
- }
- }
-}
-
-function xbDebugDumpProfile()
-{
- var p;
- var execprofile;
- var avg;
-
- for (p in xbDEBUG.execprofile)
- {
- execprofile = xbDEBUG.execprofile[p];
- avg = Math.round ( 100 * execprofile.time/execprofile.count) /100;
- xbDEBUG.dump('Execution profile ' + p + ' called ' + execprofile.count + ' times. Total time=' + execprofile.time + 'ms. Avg Time=' + avg + 'ms.');
- }
-}
diff --git a/slides/browser/xbLibrary.js b/slides/browser/xbLibrary.js
deleted file mode 100644
index 9bbfd6b..0000000
--- a/slides/browser/xbLibrary.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * xbLibrary.js
- * $Revision: 1.3 $ $Date: 2003/03/17 03:44:20 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Bob Clary code.
- *
- * The Initial Developer of the Original Code is
- * Bob Clary.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bc@bclary.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-if (!document.getElementById || navigator.userAgent.indexOf('Opera') != -1)
-{
- // assign error handler for downlevel browsers
- // Note until Opera improves it's overall support
- // for JavaScript and the DOM, it must be considered downlevel
-
- window.onerror = defaultOnError;
-
- function defaultOnError(msg, url, line)
- {
- // handle bug in NS6.1, N6.2
- // where an Event is passed to error handlers
- if (typeof(msg) != 'string')
- {
- msg = 'unknown error';
- }
- if (typeof(url) != 'string')
- {
- url = document.location;
- }
-
- alert('An error has occurred at ' + url + ', line ' + line + ': ' + msg);
- }
-}
-
-function xbLibrary(path)
-{
- if (path.charAt(path.length-1) == '/')
- {
- path = path.substr(0, path.length-1)
- }
- this.path = path;
-}
-
-// dynamically loaded scripts
-//
-// it is an error to reference anything from the dynamically loaded file inside the
-// same script block. This means that a file can not check its dependencies and
-// load the files for it's own use. someone else must do this.
-
-xbLibrary.prototype.loadScript =
-function (scriptName)
-{
- document.write('<script language="javascript" src="' + this.path + '/' + scriptName + '"><\/script>');
-};
-
-// default xbLibrary
-
-xblibrary = new xbLibrary('./');
-
-
diff --git a/slides/browser/xbStyle-css.js b/slides/browser/xbStyle-css.js
deleted file mode 100644
index f5b8467..0000000
--- a/slides/browser/xbStyle-css.js
+++ /dev/null
@@ -1,791 +0,0 @@
-/*
- * xbStyle-css.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:21 $
- *
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-// xbStyle.getClip()
-
-function cssStyleGetClip()
-{
- var clip = this.getEffectiveValue('clip');
-
- // hack opera
- if (clip == 'rect()')
- clip = '';
-
- if (clip == '' || clip == 'auto')
- {
- clip = 'rect(0px, ' + this.getWidth() + 'px, ' + this.getHeight() + 'px, 0px)';
- }
- else
- {
- clip = clip.replace(/px /g, 'px, ');
- }
-
- return clip;
-}
-
-// xbStyle.setClip()
-
-function cssStyleSetClip(sClipString)
-{
- this.styleObj.clip = sClipString;
-}
-
-// xbStyle.getClipTop()
-
-function cssStyleGetClipTop()
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- return rect.top;
-}
-
-// xbStyle.setClipTop()
-
-function cssStyleSetClipTop(top)
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- rect.top = top;
- this.styleObj.clip = rect.toString();
-}
-
-// xbStyle.getClipRight()
-
-function cssStyleGetClipRight()
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- return rect.right;
-}
-
-// xbStyle.setClipRight()
-
-function cssStyleSetClipRight(right)
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- rect.right = right;
- this.styleObj.clip = rect.toString();
-}
-
-// xbStyle.getClipBottom()
-
-function cssStyleGetClipBottom()
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- return rect.bottom;
-}
-
-// xbStyle.setClipBottom()
-
-function cssStyleSetClipBottom(bottom)
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- rect.bottom = bottom;
- this.styleObj.clip = rect.toString();
-}
-
-// xbStyle.getClipLeft()
-
-function cssStyleGetClipLeft()
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- return rect.left;
-}
-
-// xbStyle.setClipLeft()
-
-function cssStyleSetClipLeft(left)
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- rect.left = left;
- this.styleObj.clip = rect.toString();
-}
-
-// xbStyle.getClipWidth()
-
-function cssStyleGetClipWidth()
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- return rect.getWidth();
-}
-
-// xbStyle.setClipWidth()
-
-function cssStyleSetClipWidth(width)
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- rect.setWidth(width);
- this.styleObj.clip = rect.toString();
-}
-
-// xbStyle.getClipHeight()
-
-function cssStyleGetClipHeight()
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- return rect.getHeight();
-}
-
-// xbStyle.setClipHeight()
-
-function cssStyleSetClipHeight(height)
-{
- var clip = this.getClip();
- var rect = new xbClipRect(clip);
- rect.setHeight(height);
- this.styleObj.clip = rect.toString();
-}
-
-// the CSS attributes left,top are for absolutely positioned elements
-// measured relative to the containing element. for relatively positioned
-// elements, left,top are measured from the element's normal inline position.
-// getLeft(), setLeft() operate on this type of coordinate.
-//
-// to allow dynamic positioning the getOffsetXXX and setOffsetXXX methods are
-// defined to return and set the position of either an absolutely or relatively
-// positioned element relative to the containing element.
-//
-//
-
-// xbStyle.getLeft()
-
-function cssStyleGetLeft()
-{
- var left = this.getEffectiveValue('left');
- if (typeof(left) == 'number')
- return left;
-
- if (left != '' && left.indexOf('px') == -1)
- {
- xbDEBUG.dump('xbStyle.getLeft: Element ID=' + this.object.id + ' does not use pixels as units. left=' + left + ' Click Ok to continue, Cancel to Abort');
- return 0;
- }
-
- if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number')
- {
- left = this.object.offsetTop + 'px';
- }
-
- if (left == '')
- left = '0px';
-
- return xbToInt(left);
-}
-
-// xbStyle.setLeft()
-
-function cssStyleSetLeft(left)
-{
- if (typeof(this.styleObj.left) == 'number')
- this.styleObj.left = left;
- else
- this.styleObj.left = left + 'px';
-}
-
-// xbStyle.getTop()
-
-function cssStyleGetTop()
-{
- var top = this.getEffectiveValue('top');
- if (typeof(top) == 'number')
- return top;
-
- if (top != '' && top.indexOf('px') == -1)
- {
- xbDEBUG.dump('xbStyle.getTop: Element ID=' + this.object.id + ' does not use pixels as units. top=' + top + ' Click Ok to continue, Cancel to Abort');
- return 0;
- }
-
- if (top == 'auto' && this.object && typeof(this.object.offsetTop) == 'number')
- {
- top = this.object.offsetTop + 'px';
- }
-
- if (top == '')
- top = '0px';
-
- return xbToInt(top);
-}
-
-// xbStyle.setTop()
-
-function cssStyleSetTop(top)
-{
- if (typeof(this.styleObj.top) == 'number')
- this.styleObj.top = top;
- else
- this.styleObj.top = top + 'px';
-}
-
-// xbStyle.getPageX()
-
-function cssStyleGetPageX()
-{
- var x = 0;
- var elm = this.object;
- var elmstyle;
- var position;
-
- //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
- // effective position attribute , attempt to use offsetXXX
-
- if (typeof(elm.offsetLeft) == 'number')
- {
- while (elm)
- {
- x += elm.offsetLeft;
- elm = elm.offsetParent;
- }
- }
- else
- {
- while (elm)
- {
- if (elm.style)
- {
- elmstyle = new xbStyle(elm);
- position = elmstyle.getEffectiveValue('position');
- if (position != '' && position != 'static')
- x += elmstyle.getLeft();
- }
- elm = elm.parentNode;
- }
- }
-
- return x;
-}
-
-// xbStyle.setPageX()
-
-function cssStyleSetPageX(x)
-{
- var xParent = 0;
- var elm = this.object.parentNode;
- var elmstyle;
- var position;
-
- //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
- // effective position attribute , attempt to use offsetXXX
-
- if (elm && typeof(elm.offsetLeft) == 'number')
- {
- while (elm)
- {
- xParent += elm.offsetLeft;
- elm = elm.offsetParent;
- }
- }
- else
- {
- while (elm)
- {
- if (elm.style)
- {
- elmstyle = new xbStyle(elm);
- position = elmstyle.getEffectiveValue('position');
- if (position != '' && position != 'static')
- xParent += elmstyle.getLeft();
- }
- elm = elm.parentNode;
- }
- }
-
- x -= xParent;
-
- this.setLeft(x);
-}
-
-// xbStyle.getPageY()
-
-function cssStyleGetPageY()
-{
- var y = 0;
- var elm = this.object;
- var elmstyle;
- var position;
-
- //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
- // effective position attribute , attempt to use offsetXXX
-
- if (typeof(elm.offsetTop) == 'number')
- {
- while (elm)
- {
- y += elm.offsetTop;
- elm = elm.offsetParent;
- }
- }
- else
- {
- while (elm)
- {
- if (elm.style)
- {
- elmstyle = new xbStyle(elm);
- position = elmstyle.getEffectiveValue('position');
- if (position != '' && position != 'static')
- y += elmstyle.getTop();
- }
- elm = elm.parentNode;
- }
- }
-
- return y;
-}
-
-// xbStyle.setPageY()
-
-function cssStyleSetPageY(y)
-{
- var yParent = 0;
- var elm = this.object.parentNode;
- var elmstyle;
- var position;
-
- //xxxHack: Due to limitations in Gecko's (0.9.6) ability to determine the
- // effective position attribute , attempt to use offsetXXX
-
- if (elm && typeof(elm.offsetTop) == 'number')
- {
- while (elm)
- {
- yParent += elm.offsetTop;
- elm = elm.offsetParent;
- }
- }
- else
- {
- while (elm)
- {
- if (elm.style)
- {
- elmstyle = new xbStyle(elm);
- position = elmstyle.getEffectiveValue('position');
- if (position != '' && position != 'static')
- yParent += elmstyle.getTop();
- }
- elm = elm.parentNode;
- }
- }
-
- y -= yParent;
-
- this.setTop(y);
-}
-
-// xbStyle.getHeight()
-
-function cssStyleGetHeight()
-{
- var display = this.getEffectiveValue('display');
- var height = this.getEffectiveValue('height');
-
- if (typeof(height) == 'number')
- {
- // Opera
- return height;
- }
-
- if (height == '' || height == 'auto' || height.indexOf('%') != -1)
- {
- if (typeof(this.object.offsetHeight) == 'number')
- {
- height = this.object.offsetHeight + 'px';
- }
- else if (typeof(this.object.scrollHeight) == 'number')
- {
- height = this.object.scrollHeight + 'px';
- }
- }
-
- if (height.indexOf('px') == -1)
- {
- xbDEBUG.dump('xbStyle.getHeight: Element ID=' + this.object.id + ' does not use pixels as units. height=' + height + ' Click Ok to continue, Cancel to Abort');
- return 0;
- }
-
- height = xbToInt(height);
-
- return height;
-}
-
-// xbStyle.setHeight()
-
-function cssStyleSetHeight(height)
-{
- if (typeof(this.styleObj.height) == 'number')
- this.styleObj.height = height;
- else
- this.styleObj.height = height + 'px';
-}
-
-// xbStyle.getWidth()
-
-function cssStyleGetWidth()
-{
- var display = this.getEffectiveValue('display');
- var width = this.getEffectiveValue('width');
-
- if (typeof(width) == 'number')
- {
- // note Opera 6 has a bug in width and offsetWidth where
- // it returns the page width. Use clientWidth instead.
- if (navigator.userAgent.indexOf('Opera') != -1)
- return this.object.clientWidth;
- else
- return width;
- }
-
- if (width == '' || width == 'auto' || width.indexOf('%') != -1)
- {
- if (typeof(this.object.offsetWidth) == 'number')
- {
- width = this.object.offsetWidth + 'px';
- }
- else if (typeof(this.object.scrollHeight) == 'number')
- {
- width = this.object.scrollWidth + 'px';
- }
- }
-
- if (width.indexOf('px') == -1)
- {
- xbDEBUG.dump('xbStyle.getWidth: Element ID=' + this.object.id + ' does not use pixels as units. width=' + width + ' Click Ok to continue, Cancel to Abort');
- return 0;
- }
-
- width = xbToInt(width);
-
- return width;
-}
-
-// xbStyle.setWidth()
-
-function cssStyleSetWidth(width)
-{
- if (typeof(this.styleObj.width) == 'number')
- this.styleObj.width = width;
- else
- this.styleObj.width = width + 'px';
-}
-
-// xbStyle.getVisibility()
-
-function cssStyleGetVisibility()
-{
- return this.getEffectiveValue('visibility');
-}
-
-// xbStyle.setVisibility()
-
-function cssStyleSetVisibility(visibility)
-{
- this.styleObj.visibility = visibility;
-}
-
-// xbStyle.getzIndex()
-
-function cssStyleGetzIndex()
-{
- return xbToInt(this.getEffectiveValue('zIndex'));
-}
-
-// xbStyle.setzIndex()
-
-function cssStyleSetzIndex(zIndex)
-{
- this.styleObj.zIndex = zIndex;
-}
-
-// xbStyle.getBackgroundColor()
-
-function cssStyleGetBackgroundColor()
-{
- return this.getEffectiveValue('backgroundColor');
-}
-
-// xbStyle.setBackgroundColor()
-
-function cssStyleSetBackgroundColor(color)
-{
- this.styleObj.backgroundColor = color;
-}
-
-// xbStyle.getColor()
-
-function cssStyleGetColor()
-{
- return this.getEffectiveValue('color');
-}
-
-// xbStyle.setColor()
-
-function cssStyleSetColor(color)
-{
- this.styleObj.color = color;
-}
-
-// xbStyle.moveAbove()
-
-function xbStyleMoveAbove(cont)
-{
- this.setzIndex(cont.getzIndex()+1);
-}
-
-// xbStyle.moveBelow()
-
-function xbStyleMoveBelow(cont)
-{
- var zindex = cont.getzIndex() - 1;
-
- this.setzIndex(zindex);
-}
-
-// xbStyle.moveBy()
-
-function xbStyleMoveBy(deltaX, deltaY)
-{
- this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
-}
-
-// xbStyle.moveTo()
-
-function xbStyleMoveTo(x, y)
-{
- this.setLeft(x);
- this.setTop(y);
-}
-
-// xbStyle.moveToAbsolute()
-
-function xbStyleMoveToAbsolute(x, y)
-{
- this.setPageX(x);
- this.setPageY(y);
-}
-
-// xbStyle.resizeBy()
-
-function xbStyleResizeBy(deltaX, deltaY)
-{
- this.setWidth( this.getWidth() + deltaX );
- this.setHeight( this.getHeight() + deltaY );
-}
-
-// xbStyle.resizeTo()
-
-function xbStyleResizeTo(x, y)
-{
- this.setWidth(x);
- this.setHeight(y);
-}
-
-// xbStyle.setInnerHTML()
-
-function xbSetInnerHTML(str)
-{
- if (typeof(this.object.innerHTML) != 'undefined')
- this.object.innerHTML = str;
-}
-
-
-// Extensions to xbStyle that are not supported by Netscape Navigator 4
-// but that provide cross browser implementations of properties for
-// Mozilla, Gecko, Netscape 6.x and Opera
-
-// xbStyle.getBorderTopWidth()
-
-function cssStyleGetBorderTopWidth()
-{
- return xbToInt(this.getEffectiveValue('borderTopWidth'));
-}
-
-// xbStyle.getBorderRightWidth()
-
-function cssStyleGetBorderRightWidth()
-{
- return xbToInt(this.getEffectiveValue('borderRightWidth'));
-}
-
-// xbStyle.getBorderBottomWidth()
-
-function cssStyleGetBorderBottomWidth()
-{
- return xbToInt(this.getEffectiveValue('borderBottomWidth'));
-}
-
-// xbStyle.getBorderLeftWidth()
-
-function cssStyleGetBorderLeftWidth()
-{
- return xbToInt(this.getEffectiveValue('borderLeftWidth'));
-}
-
-// xbStyle.getMarginTop()
-
-function cssStyleGetMarginTop()
-{
- return xbToInt(this.getEffectiveValue('marginTop'));
-}
-
-// xbStyle.getMarginRight()
-
-function cssStyleGetMarginRight()
-{
- return xbToInt(this.getEffectiveValue('marginRight'));
-}
-
-// xbStyle.getMarginBottom()
-
-function cssStyleGetMarginBottom()
-{
- return xbToInt(this.getEffectiveValue('marginBottom'));
-}
-
-// xbStyle.getMarginLeft()
-
-function cssStyleGetMarginLeft()
-{
- return xbToInt(this.getEffectiveValue('marginLeft'));
-}
-
-// xbStyle.getPaddingTop()
-
-function cssStyleGetPaddingTop()
-{
- return xbToInt(this.getEffectiveValue('paddingTop'));
-}
-
-// xbStyle.getPaddingRight()
-
-function cssStyleGetPaddingRight()
-{
- return xbToInt(this.getEffectiveValue('paddingRight'));
-}
-
-// xbStyle.getPaddingBottom()
-
-function cssStyleGetPaddingBottom()
-{
- return xbToInt(this.getEffectiveValue('paddingBottom'));
-}
-
-// xbStyle.getPaddingLeft()
-
-function cssStyleGetPaddingLeft()
-{
- return xbToInt(this.getEffectiveValue('paddingLeft'));
-}
-
-// xbStyle.getClientWidth()
-
-function cssStyleGetClientWidth()
-{
- return this.getWidth() + this.getPaddingLeft() + this.getPaddingRight();
- /*
- if (typeof(this.object.clientWidth) == 'number')
- return this.object.clientWidth;
-
- return null;
- */
-}
-
-// xbStyle.getClientHeight()
-
-function cssStyleGetClientHeight()
-{
- return this.getHeight() + this.getPaddingTop() + this.getPaddingBottom();
- /*
- if (typeof(this.object.clientHeight) == 'number')
- return this.object.clientHeight;
-
- return null;
- */
-}
-
-xbStyle.prototype.getClip = cssStyleGetClip;
-xbStyle.prototype.setClip = cssStyleSetClip;
-xbStyle.prototype.getClipTop = cssStyleGetClipTop;
-xbStyle.prototype.setClipTop = cssStyleSetClipTop;
-xbStyle.prototype.getClipRight = cssStyleGetClipRight;
-xbStyle.prototype.setClipRight = cssStyleSetClipRight;
-xbStyle.prototype.getClipBottom = cssStyleGetClipBottom;
-xbStyle.prototype.setClipBottom = cssStyleSetClipBottom;
-xbStyle.prototype.getClipLeft = cssStyleGetClipLeft;
-xbStyle.prototype.setClipLeft = cssStyleSetClipLeft;
-xbStyle.prototype.getClipWidth = cssStyleGetClipWidth;
-xbStyle.prototype.setClipWidth = cssStyleSetClipWidth;
-xbStyle.prototype.getClipHeight = cssStyleGetClipHeight;
-xbStyle.prototype.setClipHeight = cssStyleSetClipHeight;
-xbStyle.prototype.getLeft = cssStyleGetLeft;
-xbStyle.prototype.setLeft = cssStyleSetLeft;
-xbStyle.prototype.getTop = cssStyleGetTop;
-xbStyle.prototype.setTop = cssStyleSetTop;
-xbStyle.prototype.getPageX = cssStyleGetPageX;
-xbStyle.prototype.setPageX = cssStyleSetPageX;
-xbStyle.prototype.getPageY = cssStyleGetPageY;
-xbStyle.prototype.setPageY = cssStyleSetPageY;
-xbStyle.prototype.getVisibility = cssStyleGetVisibility;
-xbStyle.prototype.setVisibility = cssStyleSetVisibility;
-xbStyle.prototype.getzIndex = cssStyleGetzIndex;
-xbStyle.prototype.setzIndex = cssStyleSetzIndex;
-xbStyle.prototype.getHeight = cssStyleGetHeight;
-xbStyle.prototype.setHeight = cssStyleSetHeight;
-xbStyle.prototype.getWidth = cssStyleGetWidth;
-xbStyle.prototype.setWidth = cssStyleSetWidth;
-xbStyle.prototype.getBackgroundColor = cssStyleGetBackgroundColor;
-xbStyle.prototype.setBackgroundColor = cssStyleSetBackgroundColor;
-xbStyle.prototype.getColor = cssStyleGetColor;
-xbStyle.prototype.setColor = cssStyleSetColor;
-xbStyle.prototype.setInnerHTML = xbSetInnerHTML;
-xbStyle.prototype.getBorderTopWidth = cssStyleGetBorderTopWidth;
-xbStyle.prototype.getBorderRightWidth = cssStyleGetBorderRightWidth;
-xbStyle.prototype.getBorderBottomWidth = cssStyleGetBorderBottomWidth;
-xbStyle.prototype.getBorderLeftWidth = cssStyleGetBorderLeftWidth;
-xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft;
-xbStyle.prototype.getMarginTop = cssStyleGetMarginTop;
-xbStyle.prototype.getMarginRight = cssStyleGetMarginRight;
-xbStyle.prototype.getMarginBottom = cssStyleGetMarginBottom;
-xbStyle.prototype.getMarginLeft = cssStyleGetMarginLeft;
-xbStyle.prototype.getPaddingTop = cssStyleGetPaddingTop;
-xbStyle.prototype.getPaddingRight = cssStyleGetPaddingRight;
-xbStyle.prototype.getPaddingBottom = cssStyleGetPaddingBottom;
-xbStyle.prototype.getPaddingLeft = cssStyleGetPaddingLeft;
-xbStyle.prototype.getClientWidth = cssStyleGetClientWidth;
-xbStyle.prototype.getClientHeight = cssStyleGetClientHeight;
-
diff --git a/slides/browser/xbStyle-nn4.js b/slides/browser/xbStyle-nn4.js
deleted file mode 100644
index 03aacff..0000000
--- a/slides/browser/xbStyle-nn4.js
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * xbStyle-nn4.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:22 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClip()
-
-function nsxbStyleGetClip()
-{
- var clip = this.styleObj.clip;
- var rect = new xbClipRect(clip.top, clip.right, clip.bottom, clip.left);
- return rect.toString();
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClip()
-
-function nsxbStyleSetClip(sClipString)
-{
- var rect = new xbClipRect(sClipString);
- this.styleObj.clip.top = rect.top;
- this.styleObj.clip.right = rect.right;
- this.styleObj.clip.bottom = rect.bottom;
- this.styleObj.clip.left = rect.left;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClipTop()
-
-function nsxbStyleGetClipTop()
-{
- return this.styleObj.clip.top;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClipTop()
-
-function nsxbStyleSetClipTop(top)
-{
- return this.styleObj.clip.top = top;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClipRight()
-
-function nsxbStyleGetClipRight()
-{
- return this.styleObj.clip.right;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClipRight()
-
-function nsxbStyleSetClipRight(right)
-{
- return this.styleObj.clip.right = right;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClipBottom()
-
-function nsxbStyleGetClipBottom()
-{
- return this.styleObj.clip.bottom;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClipBottom()
-
-function nsxbStyleSetClipBottom(bottom)
-{
- return this.styleObj.clip.bottom = bottom;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClipLeft()
-
-function nsxbStyleGetClipLeft()
-{
- return this.styleObj.clip.left;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClipLeft()
-
-function nsxbStyleSetClipLeft(left)
-{
- return this.styleObj.clip.left = left;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClipWidth()
-
-function nsxbStyleGetClipWidth()
-{
- return this.styleObj.clip.width;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClipWidth()
-
-function nsxbStyleSetClipWidth(width)
-{
- return this.styleObj.clip.width = width;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getClipHeight()
-
-function nsxbStyleGetClipHeight()
-{
- return this.styleObj.clip.height;
-}
-
-/////////////////////////////////////////////////////////////
-// xbStyle.setClipHeight()
-
-function nsxbStyleSetClipHeight(height)
-{
- return this.styleObj.clip.height = height;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getLeft()
-
-function nsxbStyleGetLeft()
-{
- return this.styleObj.left;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setLeft()
-
-function nsxbStyleSetLeft(left)
-{
- this.styleObj.left = left;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getTop()
-
-function nsxbStyleGetTop()
-{
- return this.styleObj.top;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setTop()
-
-function nsxbStyleSetTop(top)
-{
- this.styleObj.top = top;
-}
-
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getPageX()
-
-function nsxbStyleGetPageX()
-{
- return this.styleObj.pageX;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setPageX()
-
-function nsxbStyleSetPageX(x)
-{
- this.styleObj.x = this.styleObj.x + x - this.styleObj.pageX;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getPageY()
-
-
-function nsxbStyleGetPageY()
-{
- return this.styleObj.pageY;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setPageY()
-
-function nsxbStyleSetPageY(y)
-{
- this.styleObj.y = this.styleObj.y + y - this.styleObj.pageY;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getHeight()
-
-function nsxbStyleGetHeight()
-{
- //if (this.styleObj.document && this.styleObj.document.height)
- // return this.styleObj.document.height;
-
- return this.styleObj.clip.height;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setHeight()
-
-function nsxbStyleSetHeight(height)
-{
- this.styleObj.clip.height = height;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getWidth()
-
-function nsxbStyleGetWidth()
-{
- //if (this.styleObj.document && this.styleObj.document.width)
- // return this.styleObj.document.width;
-
- return this.styleObj.clip.width;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setWidth()
-
-// netscape will not dynamically change the width of a
-// layer. It will only happen upon a refresh.
-function nsxbStyleSetWidth(width)
-{
- this.styleObj.clip.width = width;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getVisibility()
-
-function nsxbStyleGetVisibility()
-{
- switch(this.styleObj.visibility)
- {
- case 'hide':
- return 'hidden';
- case 'show':
- return 'visible';
- }
- return '';
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setVisibility()
-
-function nsxbStyleSetVisibility(visibility)
-{
- switch(visibility)
- {
- case 'hidden':
- visibility = 'hide';
- break;
- case 'visible':
- visibility = 'show';
- break;
- case 'inherit':
- break;
- default:
- visibility = 'show';
- break;
- }
- this.styleObj.visibility = visibility;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getzIndex()
-
-function nsxbStyleGetzIndex()
-{
- return this.styleObj.zIndex;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setzIndex()
-
-function nsxbStyleSetzIndex(zIndex)
-{
- this.styleObj.zIndex = zIndex;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getBackgroundColor()
-
-function nsxbStyleGetBackgroundColor()
-{
- return this.styleObj.bgColor;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setBackgroundColor()
-
-function nsxbStyleSetBackgroundColor(color)
-{
- if (color)
- {
- this.styleObj.bgColor = color;
- this.object.document.bgColor = color;
- this.resizeTo(this.getWidth(), this.getHeight());
- }
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.getColor()
-
-function nsxbStyleGetColor()
-{
- return '#ffffff';
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setColor()
-
-function nsxbStyleSetColor(color)
-{
- this.object.document.fgColor = color;
-}
-
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveAbove()
-
-function xbStyleMoveAbove(cont)
-{
- this.setzIndex(cont.getzIndex()+1);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveBelow()
-
-function xbStyleMoveBelow(cont)
-{
- var zindex = cont.getzIndex() - 1;
-
- this.setzIndex(zindex);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveBy()
-
-function xbStyleMoveBy(deltaX, deltaY)
-{
- this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveTo()
-
-function xbStyleMoveTo(x, y)
-{
- this.setLeft(x);
- this.setTop(y);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveToAbsolute()
-
-function xbStyleMoveToAbsolute(x, y)
-{
- this.setPageX(x);
- this.setPageY(y);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.resizeBy()
-
-function xbStyleResizeBy(deltaX, deltaY)
-{
- this.setWidth( this.getWidth() + deltaX );
- this.setHeight( this.getHeight() + deltaY );
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.resizeTo()
-
-function xbStyleResizeTo(x, y)
-{
- this.setWidth(x);
- this.setHeight(y);
-}
-
-////////////////////////////////////////////////////////////////////////
-// Navigator 4.x resizing...
-
-function nsxbStyleOnresize()
-{
- if (saveInnerWidth != xbGetWindowWidth() || saveInnerHeight != xbGetWindowHeight())
- location.reload();
-
- return false;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.setInnerHTML()
-
-function nsxbSetInnerHTML(str)
-{
- this.object.document.open('text/html');
- this.object.document.write(str);
- this.object.document.close();
-}
-
-xbStyle.prototype.getClip = nsxbStyleGetClip;
-xbStyle.prototype.setClip = nsxbStyleSetClip;
-xbStyle.prototype.getClipTop = nsxbStyleGetClipTop;
-xbStyle.prototype.setClipTop = nsxbStyleSetClipTop;
-xbStyle.prototype.getClipRight = nsxbStyleGetClipRight;
-xbStyle.prototype.setClipRight = nsxbStyleSetClipRight;
-xbStyle.prototype.getClipBottom = nsxbStyleGetClipBottom;
-xbStyle.prototype.setClipBottom = nsxbStyleSetClipBottom;
-xbStyle.prototype.getClipLeft = nsxbStyleGetClipLeft;
-xbStyle.prototype.setClipLeft = nsxbStyleSetClipLeft;
-xbStyle.prototype.getClipWidth = nsxbStyleGetClipWidth;
-xbStyle.prototype.setClipWidth = nsxbStyleSetClipWidth;
-xbStyle.prototype.getClipHeight = nsxbStyleGetClipHeight;
-xbStyle.prototype.setClipHeight = nsxbStyleSetClipHeight;
-xbStyle.prototype.getLeft = nsxbStyleGetLeft;
-xbStyle.prototype.setLeft = nsxbStyleSetLeft;
-xbStyle.prototype.getTop = nsxbStyleGetTop;
-xbStyle.prototype.setTop = nsxbStyleSetTop;
-xbStyle.prototype.getPageX = nsxbStyleGetPageX;
-xbStyle.prototype.setPageX = nsxbStyleSetPageX;
-xbStyle.prototype.getPageY = nsxbStyleGetPageY;
-xbStyle.prototype.setPageY = nsxbStyleSetPageY;
-xbStyle.prototype.getVisibility = nsxbStyleGetVisibility;
-xbStyle.prototype.setVisibility = nsxbStyleSetVisibility;
-xbStyle.prototype.getzIndex = nsxbStyleGetzIndex;
-xbStyle.prototype.setzIndex = nsxbStyleSetzIndex;
-xbStyle.prototype.getHeight = nsxbStyleGetHeight;
-xbStyle.prototype.setHeight = nsxbStyleSetHeight;
-xbStyle.prototype.getWidth = nsxbStyleGetWidth;
-xbStyle.prototype.setWidth = nsxbStyleSetWidth;
-xbStyle.prototype.getBackgroundColor = nsxbStyleGetBackgroundColor;
-xbStyle.prototype.setBackgroundColor = nsxbStyleSetBackgroundColor;
-xbStyle.prototype.getColor = nsxbStyleGetColor;
-xbStyle.prototype.setColor = nsxbStyleSetColor;
-xbStyle.prototype.setInnerHTML = nsxbSetInnerHTML;
-xbStyle.prototype.getBorderTopWidth = xbStyleNotSupported;
-xbStyle.prototype.getBorderRightWidth = xbStyleNotSupported;
-xbStyle.prototype.getBorderBottomWidth = xbStyleNotSupported;
-xbStyle.prototype.getBorderLeftWidth = xbStyleNotSupported;
-xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
-xbStyle.prototype.getMarginTop = xbStyleNotSupported;
-xbStyle.prototype.getMarginRight = xbStyleNotSupported;
-xbStyle.prototype.getMarginBottom = xbStyleNotSupported;
-xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
-xbStyle.prototype.getPaddingTop = xbStyleNotSupported;
-xbStyle.prototype.getPaddingRight = xbStyleNotSupported;
-xbStyle.prototype.getPaddingBottom = xbStyleNotSupported;
-xbStyle.prototype.getPaddingLeft = xbStyleNotSupported;
-xbStyle.prototype.getClientWidth = xbStyleNotSupported;
-xbStyle.prototype.getClientHeight = xbStyleNotSupported;
-
-window.saveInnerWidth = window.innerWidth;
-window.saveInnerHeight = window.innerHeight;
-
-window.onresize = nsxbStyleOnresize;
-
diff --git a/slides/browser/xbStyle-not-supported.js b/slides/browser/xbStyle-not-supported.js
deleted file mode 100644
index 06c4a60..0000000
--- a/slides/browser/xbStyle-not-supported.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * xbStyle-not-supported.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:22 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-xbStyle.prototype.toString = xbStyleNotSupported;
-xbStyle.prototype.getClip = xbStyleNotSupported;
-xbStyle.prototype.setClip = xbStyleNotSupported;
-xbStyle.prototype.getClipTop = xbStyleNotSupported;
-xbStyle.prototype.setClipTop = xbStyleNotSupported;
-xbStyle.prototype.getClipRight = xbStyleNotSupported;
-xbStyle.prototype.setClipRight = xbStyleNotSupported;
-xbStyle.prototype.getClipBottom = xbStyleNotSupported;
-xbStyle.prototype.setClipBottom = xbStyleNotSupported;
-xbStyle.prototype.getClipLeft = xbStyleNotSupported;
-xbStyle.prototype.setClipLeft = xbStyleNotSupported;
-xbStyle.prototype.getClipWidth = xbStyleNotSupported;
-xbStyle.prototype.setClipWidth = xbStyleNotSupported;
-xbStyle.prototype.getClipHeight = xbStyleNotSupported;
-xbStyle.prototype.setClipHeight = xbStyleNotSupported;
-xbStyle.prototype.getLeft = xbStyleNotSupported;
-xbStyle.prototype.setLeft = xbStyleNotSupported;
-xbStyle.prototype.getTop = xbStyleNotSupported;
-xbStyle.prototype.setTop = xbStyleNotSupported;
-xbStyle.prototype.getVisibility = xbStyleNotSupported;
-xbStyle.prototype.setVisibility = xbStyleNotSupported;
-xbStyle.prototype.getzIndex = xbStyleNotSupported;
-xbStyle.prototype.setzIndex = xbStyleNotSupported;
-xbStyle.prototype.getHeight = xbStyleNotSupported;
-xbStyle.prototype.setHeight = xbStyleNotSupported;
-xbStyle.prototype.getWidth = xbStyleNotSupported;
-xbStyle.prototype.setWidth = xbStyleNotSupported;
-xbStyle.prototype.getBackgroundColor = xbStyleNotSupported;
-xbStyle.prototype.setBackgroundColor = xbStyleNotSupported;
-xbStyle.prototype.getColor = xbStyleNotSupported;
-xbStyle.prototype.setColor = xbStyleNotSupported;
-xbStyle.prototype.setInnerHTML = xbStyleNotSupported;
-xbStyle.prototype.getBorderTopWidth = xbStyleNotSupported;
-xbStyle.prototype.getBorderRightWidth = xbStyleNotSupported;
-xbStyle.prototype.getBorderBottomWidth = xbStyleNotSupported;
-xbStyle.prototype.getBorderLeftWidth = xbStyleNotSupported;
-xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
-xbStyle.prototype.getMarginTop = xbStyleNotSupported;
-xbStyle.prototype.getMarginRight = xbStyleNotSupported;
-xbStyle.prototype.getMarginBottom = xbStyleNotSupported;
-xbStyle.prototype.getMarginLeft = xbStyleNotSupported;
-xbStyle.prototype.getPaddingTop = xbStyleNotSupported;
-xbStyle.prototype.getPaddingRight = xbStyleNotSupported;
-xbStyle.prototype.getPaddingBottom = xbStyleNotSupported;
-xbStyle.prototype.getPaddingLeft = xbStyleNotSupported;
-xbStyle.prototype.getClientWidth = xbStyleNotSupported;
-xbStyle.prototype.getClientHeight = xbStyleNotSupported;
-
diff --git a/slides/browser/xbStyle.js b/slides/browser/xbStyle.js
deleted file mode 100644
index 672ff03..0000000
--- a/slides/browser/xbStyle.js
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * xbStyle.js
- * $Revision: 1.2 $ $Date: 2003/02/07 16:04:22 $
- */
-
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Netscape code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bclary@netscape.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-function xbStyleNotSupported() {}
-
-function xbStyleNotSupportStringValue(propname) { xbDEBUG.dump(propname + ' is not supported in this browser'); return '';};
-
-/////////////////////////////////////////////////////////////
-// xbClipRect
-
-function xbClipRect(a1, a2, a3, a4)
-{
- this.top = 0;
- this.right = 0;
- this.bottom = 0;
- this.left = 0;
-
- if (typeof(a1) == 'string')
- {
- var val;
- var ca;
- var i;
-
- if (a1.indexOf('rect(') == 0)
- {
- // I would have preferred [0-9]+[a-zA-Z]+ for a regexp
- // but NN4 returns null for that.
- ca = a1.substring(5, a1.length-1).match(/-?[0-9a-zA-Z]+/g);
- for (i = 0; i < 4; ++i)
- {
- val = xbToInt(ca[i]);
- if (val != 0 && ca[i].indexOf('px') == -1)
- {
- xbDEBUG.dump('xbClipRect: A clipping region ' + a1 + ' was detected that did not use pixels as units. Click Ok to continue, Cancel to Abort');
- return;
- }
- ca[i] = val;
- }
- this.top = ca[0];
- this.right = ca[1];
- this.bottom = ca[2];
- this.left = ca[3];
- }
- }
- else if (typeof(a1) == 'number' && typeof(a2) == 'number' && typeof(a3) == 'number' && typeof(a4) == 'number')
- {
- this.top = a1;
- this.right = a2;
- this.bottom = a3;
- this.left = a4;
- }
-}
-
-xbClipRect.prototype.top = 0;
-xbClipRect.prototype.right = 0;
-xbClipRect.prototype.bottom = 0;
-xbClipRect.prototype.left = 0;
-
-
-function xbClipRectGetWidth()
-{
- return this.right - this.left;
-}
-xbClipRect.prototype.getWidth = xbClipRectGetWidth;
-
-function xbClipRectSetWidth(width)
-{
- this.right = this.left + width;
-}
-xbClipRect.prototype.setWidth = xbClipRectSetWidth;
-
-function xbClipRectGetHeight()
-{
- return this.bottom - this.top;
-}
-xbClipRect.prototype.getHeight = xbClipRectGetHeight;
-
-function xbClipRectSetHeight(height)
-{
- this.bottom = this.top + height;
-}
-xbClipRect.prototype.setHeight = xbClipRectSetHeight;
-
-function xbClipRectToString()
-{
- return 'rect(' + this.top + 'px ' + this.right + 'px ' + this.bottom + 'px ' + this.left + 'px )' ;
-}
-xbClipRect.prototype.toString = xbClipRectToString;
-
-/////////////////////////////////////////////////////////////
-// xbStyle
-//
-// Note Opera violates the standard by cascading the effective values
-// into the HTMLElement.style object. We can use IE's HTMLElement.currentStyle
-// to get the effective values. In Gecko we will use the W3 DOM Style Standard getComputedStyle
-
-function xbStyle(obj, win, position)
-{
- if (typeof(obj) == 'object' && typeof(obj.style) != 'undefined')
- this.styleObj = obj.style;
- else if (document.layers) // NN4
- {
- if (typeof(position) == 'undefined')
- position = '';
-
- this.styleObj = obj;
- this.styleObj.position = position;
- }
- this.object = obj;
- this.window = win ? win : window;
-}
-
-xbStyle.prototype.styleObj = null;
-xbStyle.prototype.object = null;
-
-/////////////////////////////////////////////////////////////
-// xbStyle.getEffectiveValue()
-// note that xbStyle's constructor uses the currentStyle object
-// for IE5+ and that Opera's style object contains computed values
-// already. Netscape Navigator's layer object also contains the
-// computed values as well. Note that IE4 will not return the
-// computed values.
-
-function xbStyleGetEffectiveValue(propname)
-{
- var value = null;
-
- if (this.window.document.defaultView && this.window.document.defaultView.getComputedStyle)
- {
- // W3
- // Note that propname is the name of the property in the CSS Style
- // Object. However the W3 method getPropertyValue takes the actual
- // property name from the CSS Style rule, i.e., propname is
- // 'backgroundColor' but getPropertyValue expects 'background-color'.
-
- var capIndex;
- var cappropname = propname;
-
- while ( (capIndex = cappropname.search(/[A-Z]/)) != -1)
- {
- if (capIndex != -1)
- {
- cappropname = cappropname.substring(0, capIndex) + '-' + cappropname.substring(capIndex, capIndex+1).toLowerCase() + cappropname.substr(capIndex+1);
- }
- }
-
- value = this.window.document.defaultView.getComputedStyle(this.object, '').getPropertyValue(cappropname);
-
- // xxxHack for Gecko:
- if (!value && this.styleObj[propname])
- {
- value = this.styleObj[propname];
- }
- }
- else if (typeof(this.styleObj[propname]) == 'undefined')
- {
- value = xbStyleNotSupportStringValue(propname);
- }
- else if (typeof(this.object.currentStyle) != 'undefined')
- {
- // IE5+
- value = this.object.currentStyle[propname];
- if (!value)
- {
- value = this.styleObj[propname];
- }
-
- if (propname == 'clip' && !value)
- {
- // clip is not stored in IE5/6 handle separately
- value = 'rect(' + this.object.currentStyle.clipTop + ', ' + this.object.currentStyle.clipRight + ', ' + this.object.currentStyle.clipBottom + ', ' + this.object.currentStyle.clipLeft + ')';
- }
- }
- else
- {
- // IE4+, Opera, NN4
- value = this.styleObj[propname];
- }
-
- return value;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveAbove()
-
-function xbStyleMoveAbove(cont)
-{
- this.setzIndex(cont.getzIndex()+1);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveBelow()
-
-function xbStyleMoveBelow(cont)
-{
- var zindex = cont.getzIndex() - 1;
-
- this.setzIndex(zindex);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveBy()
-
-function xbStyleMoveBy(deltaX, deltaY)
-{
- this.moveTo(this.getLeft() + deltaX, this.getTop() + deltaY);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveTo()
-
-function xbStyleMoveTo(x, y)
-{
- this.setLeft(x);
- this.setTop(y);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.moveToAbsolute()
-
-function xbStyleMoveToAbsolute(x, y)
-{
- this.setPageX(x);
- this.setPageY(y);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.resizeBy()
-
-function xbStyleResizeBy(deltaX, deltaY)
-{
- this.setWidth( this.getWidth() + deltaX );
- this.setHeight( this.getHeight() + deltaY );
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// xbStyle.resizeTo()
-
-function xbStyleResizeTo(x, y)
-{
- this.setWidth(x);
- this.setHeight(y);
-}
-
-////////////////////////////////////////////////////////////////////////
-
-xbStyle.prototype.getEffectiveValue = xbStyleGetEffectiveValue;
-xbStyle.prototype.moveAbove = xbStyleMoveAbove;
-xbStyle.prototype.moveBelow = xbStyleMoveBelow;
-xbStyle.prototype.moveBy = xbStyleMoveBy;
-xbStyle.prototype.moveTo = xbStyleMoveTo;
-xbStyle.prototype.moveToAbsolute = xbStyleMoveToAbsolute;
-xbStyle.prototype.resizeBy = xbStyleResizeBy;
-xbStyle.prototype.resizeTo = xbStyleResizeTo;
-
-if (document.all || document.getElementsByName)
-{
- xblibrary.loadScript('xbStyle-css.js');
-}
-else if (document.layers)
-{
- xblibrary.loadScript('xbStyle-nn4.js');
-}
-else
-{
- xblibrary.loadScript('xbStyle-not-supported.js');
-}
-
-
diff --git a/slides/common/common.xsl b/slides/common/common.xsl
new file mode 100644
index 0000000..2d4f9e9
--- /dev/null
+++ b/slides/common/common.xsl
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ exclude-result-prefixes="dbs db"
+ version="1.0">
+
+<xsl:template name="get.title">
+ <xsl:param name="ctx" select="."/>
+
+ <xsl:value-of select="($ctx/db:info/db:titleabbrev|$ctx/db:titleabbrev|$ctx/db:info/db:title|$ctx/db:title)[1]"/>
+</xsl:template>
+
+<xsl:template name="get.subtitle">
+ <xsl:param name="ctx" select="."/>
+
+ <xsl:value-of select="($ctx/db:info/db:subtitle|$ctx/db:subtitle)[1]"/>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/slides/doc/slides.xml b/slides/doc/slides.xml
new file mode 100644
index 0000000..5e357f4
--- /dev/null
+++ b/slides/doc/slides.xml
@@ -0,0 +1,1371 @@
+<?xml version='1.0'?>
+
+<dbs:slides xmlns="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <info>
+ <title>The DocBook Slides Extension</title>
+ <titleabbrev>DocBook Slides</titleabbrev>
+ <author>
+ <personname>
+ <firstname>Gábor</firstname>
+ <surname>Kövesdán</surname>
+ </personname>
+ <affiliation>
+ <orgname>The DocBook Project</orgname>
+ </affiliation>
+ <email>gabor@kovesdan.org</email>
+ </author>
+ <pubdate>3 Aug 2012</pubdate>
+ <releaseinfo role="version">5.0</releaseinfo>
+ <copyright>
+ <year>2012</year>
+ <holder>Gábor Kövesdán</holder>
+ </copyright>
+ </info>
+
+ <dbs:foil dbs:style="introduction">
+ <info>
+ <title>Introduction</title>
+ </info>
+
+ <para>DocBook Slides ...</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>is a multi-namespace schema extension
+ to the original <link xlink:href="http://www.docbook.org/">DocBook</link>
+ <xref linkend="docbook5"/> schema.</para>
+ </listitem>
+
+ <listitem>
+ <para>was originally created by
+ <personname><firstname>Norman</firstname><surname>Walsh</surname></personname>.</para>
+ </listitem>
+
+ <listitem>
+ <para>and was later redesigned for DocBook 5.0 by
+ <personname><firstname>Gábor</firstname><surname>Kövesdán</surname></personname>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>This document serves for two purposes:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>To explain DocBook Slides.</para>
+ </listitem>
+
+ <listitem>
+ <para>To serve itself as a test document to demonstrate how
+ slides are marked up and how different output formats are
+ rendered.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Basic Concepts</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>DocBook is an XML <xref linkend="w3c-xml"/> grammar to mark up
+ papers and books and then process them with XML-related standards.
+ It concentrates on structure and semantics, not layout.</para>
+ </listitem>
+
+ <listitem>
+ <para>DocBook Slides is an extension for DocBook to create
+ presentation slides.</para>
+ </listitem>
+
+ <listitem>
+ <para>By nature, layout is part of a presentation but DocBook Slides
+ still focuses on structure and semantics.</para>
+ </listitem>
+
+ <listitem>
+ <para>DocBook Slides uses almost the entire DocBook grammar and
+ provides only a minimal set of layout-controlling elements.
+ This keeps is simple and easy to use.</para>
+ </listitem>
+
+ <listitem>
+ <para>And still, you can copy-paste, use XInclude, etc.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foilgroup>
+ <info>
+ <title>Features of DocBook Slides</title>
+ </info>
+
+ <para>Let's see some features of DocBook
+ Slides.</para>
+
+ <dbs:foil>
+ <info>
+ <title>Using Namespaces</title>
+ </info>
+
+ <para>DocBook Slides uses a separate namespace for its elements.
+ This has various advantages:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>It isolates the extension elements and the original
+ DocBook schema does not have to know anything about them.</para>
+ </listitem>
+
+ <listitem>
+ <para>It also avoids name clashes and XML processors can easily
+ distinguish between the two set of elements.</para>
+ </listitem>
+
+ <listitem>
+ <para>This modular concept makes it easy to extend the official
+ stylesheets with specific processing.</para></listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Easy to Learn</title>
+ </info>
+
+ <para>If you already know and use DocBook, DocBook Slides is for you:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>You can use the usual inline and block elements when marking up
+ your text, you only have to learn a few new markup elements.</para>
+ </listitem>
+
+ <listitem>
+ <para>Also, you may include DocBook fragments with XInclude.
+ Imagine an important table that is part of your scientific
+ paper and you also want to show it on a conference.
+ You do not have to copy-paste it but you can just have it in
+ one single file that you later include in both documents.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Development Status</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>DocBook Slides - just like DocBook - is an open source product
+ and it is under constant development and improvement.</para>
+ </listitem>
+
+ <listitem>
+ <para>The curently supported output formats are
+ plain XHTML, S5 XHTML <xref linkend="s5"/>,
+ W3C HTML Slidy <xref linkend="slidy"/> and XSL FO <xref linkend="w3c-xslfo"/>.
+ In the future, support for other important
+ output formats (e.g. HTML5, EPUB) may be added.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup xml:id="introductionary-examples">
+ <info>
+ <title>Tutorial Examples</title>
+ </info>
+
+ <para>Let's see some basic examples.</para>
+
+ <dbs:foil>
+ <info>
+ <title>A Minimal Markup 1</title>
+ </info>
+
+ <informalexample>
+<programlisting>&lt;?xml version='1.0'?&gt;
+&lt;dbs:slides xmlns="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"&gt; <co xml:id="co.slides"/>
+ &lt;title&gt;Presentation Title&lt;/title&gt; <co xml:id="co.slides.title"/>
+</programlisting>
+
+ <calloutlist>
+ <callout arearefs="co.slides">
+ <para>The root element with proper namespace declarations.</para>
+ </callout>
+
+ <callout arearefs="co.slides.title">
+ <para>It contains the title but can have more.</para>
+ </callout>
+ </calloutlist>
+ </informalexample>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>A Minimal Markup 2</title>
+ </info>
+
+ <informalexample>
+<programlisting>
+ &lt;dbs:foil&gt; <co xml:id="co.foil"/>
+ &lt;title&gt;Foil Title&lt;/title&gt;
+ &lt;para&gt;Foil content&lt;/para&gt; <co xml:id="co.foil.para"/>
+ &lt;/dbs:foil&gt;
+&lt;/dbs:slides&gt;</programlisting>
+ <calloutlist>
+ <callout arearefs="co.foil">
+ <para>At least one foil obligatory.</para>
+ </callout>
+
+ <callout arearefs="co.foil.para">
+ <para>A foil can contain any block element from DocBook.</para>
+ </callout>
+ </calloutlist>
+ </informalexample>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>The Whole Example</title>
+ </info>
+
+ <para>Let's see the whole markup together:</para>
+
+ <informalexample>
+<programlisting>&lt;?xml version='1.0'?&gt;
+&lt;dbs:slides xmlns="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"&gt;
+ &lt;title&gt;Presentation Title&lt;/title&gt;
+ &lt;dbs:foil&gt;
+ &lt;title&gt;Foil Title&lt;/title&gt;
+ &lt;para&gt;Foil content&lt;/para&gt;
+ &lt;/dbs:foil&gt;
+&lt;/dbs:slides&gt;</programlisting>
+ </informalexample>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Grouping Foils</title>
+ </info>
+
+ <para>We can form groups of logical sets of foils and also add some
+ introductionary text for them. In the rendered forms, these groups
+ can have a table of contents of the included slides. You can also
+ see such groups in this presentation.</para>
+
+ <informalexample>
+<programlisting><![CDATA[<dbs:foilgroup>
+ <title>Group 1</title>
+
+ <para>This is an introduction.</para>
+
+ <dbs:foil>
+ ...
+ </dbs:foil>
+</dbs:foilgroup>]]></programlisting>
+ </informalexample>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <info>
+ <title>Markup Examples</title>
+ </info>
+
+ <para>Let's see how to create the particular foils with
+ DocBook Slides.</para>
+
+ <dbs:foil>
+ <info>
+ <title>Info Content</title>
+ </info>
+
+ <para>You can wrap the title into the <tag>&lt;info&gt;</tag> element that
+ comes from the DocBook schema. It also means you can
+ add the usual authoring information here:</para>
+
+ <informalexample>
+<programlisting><![CDATA[
+ <info>
+ <title>Group 1</title>
+
+ <author>
+ <personname>
+ <firstname>John</firstname>
+ <surname>Doe</surname>
+ </personname>
+ <affiliation>FooBar Inc.</affiliation>
+ </author>
+
+ <copyright><year>2012</year></copyright>
+ </info>]]></programlisting>
+ </informalexample>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Block Content</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>You have access to all of the block content elements in DocBook,
+ e.g. you can create a simple paragraph with
+ <code>&lt;para&gt;</code>, just like in DocBook.</para>
+ </listitem>
+
+ <listitem>
+ <para>Or you can use lists, like <code>&lt;itemizedlist&gt;</code>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <programlisting>Or &lt;programlisting&gt; with some code or markup inside.</programlisting>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Inline Content</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>Just like block elements, you can also use inline DocBook
+ elements to mark up your content on your foils.</para>
+ </listitem>
+
+ <listitem>
+ <para>For example, you can <emphasis>emphasize</emphasis>
+ something with <tag>&lt;emphasis&gt;</tag> or you
+ can mark <literal>literal</literal> text as such with
+ <tag>&lt;literal&gt;</tag>.</para>
+ </listitem>
+
+ <listitem>
+ <para>By the way, the inline markup citation above is marked up
+ with <tag>&lt;tag&gt;</tag>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Apart from these, feel free to use the rest of
+ the markup elements.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>FAQ Listings</title>
+ </info>
+
+ <qandaset>
+ <qandaentry>
+ <question>
+ <para>What else can I use to make my slides useful
+ and practical?</para>
+ </question>
+
+ <answer>
+ <para>You can include some questions and answers with
+ <tag>&lt;qandaset&gt;</tag> and related elements to answer some
+ frequently asked questions.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>References</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>Sometimes you need to add some remarks and some
+ references to your slide content.</para>
+ </listitem>
+
+ <listitem>
+ <para>For small remarks, you can use the
+ <code>&lt;footnote&gt;</code> element to insert a footnote
+ that will appear on the same foil where it is inserted.</para>
+ </listitem>
+
+ <listitem>
+ <para>Or for references to external content
+ - books and websites - you can include one or more
+ bibliography foils in the end.</para>
+ </listitem>
+
+ <listitem>
+ <para>On these foils, instead of the usual bulleted points, use the
+ <code>&lt;bibliography&gt;</code> element and you
+ will get a nicely formatted reference list.</para>
+ </listitem>
+
+ <listitem>
+ <para>Use <code>&lt;xref&gt;</code> in the content
+ to generate a link to the reference entry.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil dbs:incremental="1">
+ <info>
+ <title>Incremental Slides</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>If you set the <code>dbs:incremental</code> attribute ...</para>
+ </listitem>
+
+ <listitem>
+ <para>... to <literal>1</literal> on a foil, ...</para>
+ </listitem>
+
+ <listitem>
+ <para>... then you will get incremental lists, ...</para>
+ </listitem>
+
+ <listitem>
+ <para>... like this if they are supported in the output format. (XHTML-based)</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil dbs:collapsible="1">
+ <info>
+ <title>Collapsible Lists</title>
+ </info>
+
+ <para>You can see a collapsible list below (depending on the output
+ format). Click on the node to expand it.</para>
+
+ <orderedlist>
+ <listitem>
+ <orderedlist>
+ <listitem>
+ <para>If you set the <code>dbs:collapsible</code> attribute ...</para>
+ </listitem>
+
+ <listitem>
+ <para>... to <literal>1</literal> on a foil, ...</para>
+ </listitem>
+
+ <listitem>
+ <para>... then you will get collapsible lists, ...</para>
+ </listitem>
+
+ <listitem>
+ <para>... like this if they are supported in the output format. (Slidy)</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </orderedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Building Blocks</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>Slides are layout-oriented documents; formatting
+ is a crucial part of them.</para>
+ </listitem>
+
+ <listitem>
+ <para>DocBook aims to separate structure and layout but for
+ Slides sometimes it is not entirely possible, yet the
+ layout-related markup is tried to be kept minimal.</para>
+ </listitem>
+
+ <listitem>
+ <para>You can use the <tag>&lt;dbs:block&gt;</tag> element
+ that will be transformed to a container type in the
+ generated document (e.g. <tag>&lt;div&gt;</tag> in HTML).</para>
+ </listitem>
+
+ <listitem>
+ <para>You can also apply the <literal>dbs:style</literal> attribute
+ to blocks and you can even embed them into each other.</para>
+ </listitem>
+
+ <listitem>
+ <para>Use CSS or extend the XSLT stylesheets to control
+ renering of your custom blocks.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Block Example</title>
+ </info>
+
+ <dbs:block dbs:style="left">
+ <para>This is the left block.</para>
+ </dbs:block>
+
+ <dbs:block dbs:style="right" dbs:incremental="1">
+ <para>This is the right block. And it is marked incremental.</para>
+ </dbs:block>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <title>Images and Formulas</title>
+
+ <dbs:foil>
+ <info>
+ <title>Incremental Images</title>
+ </info>
+
+ <para>This is only supported in XHTML-based output.</para>
+
+ <dbs:block dbs:incremental="1" dbs:style="face_container">
+ <mediaobject>
+ <imageobject>
+ <imagedata dbs:style="face_first" fileref="images/face1.gif"/>
+ </imageobject>
+ </mediaobject>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata dbs:style="face_other" fileref="images/face2.gif"/>
+ </imageobject>
+ </mediaobject>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata dbs:style="face_other" fileref="images/face3.gif"/>
+ </imageobject>
+ </mediaobject>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata dbs:style="face_other" fileref="images/face4.gif"/>
+ </imageobject>
+ </mediaobject>
+ </dbs:block>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Embedded SVG</title>
+ </info>
+
+ <para>You can embed SVG
+ <footnote><para>See <uri xlink:href="http://www.w3.org/TR/SVG11/">http://www.w3.org/TR/SVG11/</uri>.</para></footnote>
+ code, like this:</para>
+
+ <programlisting><![CDATA[<svg xml:id="circle"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1">
+ <circle cx="100" cy="50" r="40" stroke="black"
+ stroke-width="2" fill="yellow" />
+</svg>]]></programlisting>
+
+ <svg xml:id="circle" xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="yellow" />
+ </svg>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Embedded MathML</title>
+ </info>
+
+ <para>You can embed MathML
+ <footnote><para>See <uri xlink:href="http://www.w3.org/TR/MathML3/">http://www.w3.org/TR/MathML3/</uri>.</para></footnote>
+ code, like this:</para>
+
+ <programlisting><![CDATA[<math xml:id="identity-matrix-2dim"
+ xmlns="http://www.w3.org/1998/Math/MathML">
+ <matrix>
+ <matrixrow><cn>1</cn><cn>0</cn></matrixrow>
+ <matrixrow><cn>0</cn><cn>1</cn></matrixrow>
+ </matrix>
+</math>]]></programlisting>
+
+ <math xml:id="identity-matrix-2dim" xmlns="http://www.w3.org/1998/Math/MathML">
+ <matrix>
+ <matrixrow><cn>1</cn><cn>0</cn></matrixrow>
+ <matrixrow><cn>0</cn><cn>1</cn></matrixrow>
+ </matrix>
+ </math>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <info>
+ <title>Presentation</title>
+ </info>
+
+ <dbs:foil>
+ <info>
+ <title>Available Formats</title>
+ </info>
+
+ <informaltable>
+ <tgroup cols="2">
+ <thead>
+ <row><entry>Stylesheet</entry><entry>Description.</entry></row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>xhtml/plain.xsl</entry>
+ <entry>Single plain XHTML file.</entry>
+ </row>
+
+ <row>
+ <entry>xhtml/slidy.xsl</entry>
+ <entry>Single XHTL file in W3C HTML Slidy format.</entry>
+ </row>
+
+ <row>
+ <entry>xhtml/s5.xsl</entry>
+ <entry>Single XHTML file in S5 format.</entry>
+ </row>
+
+ <row>
+ <entry>fo/plain.xsl</entry>
+ <entry>XSL Formatting Objects for printed output.</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Plain XHTML</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>It is a simple plain <acronym>XHTML</acronym> output with
+ some classes given on the elements. These let you create your
+ own CSS stylesheet for the rendering.</para>
+ </listitem>
+
+ <listitem>
+ <para>It is actually quite similar to the
+ <acronym>S<superscript>5</superscript></acronym> format with
+ <acronym>S<superscript>5</superscript></acronym>-specific
+ parts removed. The objective with this format was simplicity
+ and <acronym>S<superscript>5</superscript></acronym>
+ already achieves that quite well but in case you do not want
+ to use that framework, you can create your own one.</para>
+ </listitem>
+
+ <listitem>
+ <para>The stylesheet to choose for this format is
+ <filename>xhtml/plain.xsl</filename>.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>W3C HTML Slidy</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>W3C <uri xlink:href="http://www.w3.org/Talks/Tools/Slidy2/">HTML Slidy</uri>
+ is an XHTML framework for presentations.</para>
+ </listitem>
+
+ <listitem>
+ <para>It seems mature and well maintained.</para>
+ </listitem>
+
+ <listitem>
+ <para>HTML Slidy handles well long content. Its formatting
+ allows more text on a single foil and even if your text
+ overflows, you can scroll inside the single foil. It also
+ supports collapsible lists and a JavaScript clock so that you
+ do not run out of time.</para>
+ </listitem>
+
+ <listitem>
+ <para>For HTML Slidy, use
+ <filename>xhtml/slidy.xsl</filename>.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>S5 Format</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><acronym xlink:href="http://meyerweb.com/eric/tools/s5/">S<superscript>5</superscript></acronym>
+ stands for <emphasis>Simple Standards-Based Slide Show System</emphasis>.</para>
+ </listitem>
+
+ <listitem>
+ <para>It is yet another XHTML-based framework for slideshows, like
+ HTML Slidy.</para>
+ </listitem>
+
+ <listitem>
+ <para>Its JavaScript code behaves somewhat differently and it is less
+ mature.</para>
+ </listitem>
+
+ <listitem>
+ <para>It supports incremental lists but in general, it is not so
+ feature-rich as HTML Slidy.</para>
+ </listitem>
+
+ <listitem>
+ <para>To create your <acronym>S<superscript>5</superscript></acronym>
+ presentation, pick the
+ <filename>xhtml/s5.xsl</filename> stylesheet.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>XSL FO Format</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>XSL FO is an XML vocabulary to describe how formatted
+ output is presented.</para>
+ </listitem>
+
+ <listitem>
+ <para>It is used here as an intermediate format between DocBook Slides
+ and printable output.</para>
+ </listitem>
+
+ <listitem>
+ <para>First, generate the XSL FO document.</para>
+ </listitem>
+
+ <listitem>
+ <para>Then use your XSL FO processor to render your printable
+ document in PDF, PostScript, etc. depending on the capabilities of
+ the software you use.</para>
+ </listitem>
+
+ <listitem>
+ <para>If you need a free processor, take a look at
+ Apache FOP <xref linkend="fop"/>.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>XSLT Parameters</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>The provided stylesheets offer XSLT <xref linkend="w3c-xslt"/> parameters
+ to adjust some tunables of the output generation.</para>
+ </listitem>
+
+ <listitem>
+ <para>The parameters are documented in the documentation
+ that accompanies the DocBook XSL distribution.</para>
+ </listitem>
+
+ <listitem>
+ <para>All the DocBook Slides stylesheets are extensions of the
+ original DocBook stylesheets so adjusting their parameters may also
+ affect your rendered slides.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Customizations</title>
+ </info>
+
+ <para>Sometimes parameters are not enough and you need to modify
+ the templates to achieve your goal. Customizations are easy
+ to create with XSLT.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Just pick up a stylesheet that you want to customize.</para>
+ </listitem>
+
+ <listitem>
+ <para>Create a new, empty stylesheet that imports the original
+ one.</para>
+ </listitem>
+
+ <listitem>
+ <para>Override the original templates that do not work
+ in the way you desire.</para>
+ </listitem>
+
+ <listitem>
+ <para>Of course, this requires some knowledge in XSLT and
+ you will need to read the code to see what to override.</para>
+ </listitem>
+ </orderedlist>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <info>
+ <title>Authoring with DocBook Slides 5.0</title>
+ </info>
+
+ <dbs:foil>
+ <info>
+ <title>Choosing a Validator</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>Once you have some slides marked up in DocBook Slides,
+ you probably want to make sure your markup is valid. Otherwise,
+ it is not guaranteed that the output will be generated properly.
+ For this, you need a validator.</para>
+ </listitem>
+
+ <listitem>
+ <para>The DocBook Slides schema is described in the RELAX-NG grammar language.</para>
+ </listitem>
+
+ <listitem>
+ <para>The recommended RELAX-NG validator is
+ <application>jing</application> <xref linkend="jing"/>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Alternatively, you can use <application>Emacs/nXML</application>
+ with the supplied <filename>locatingrules.xml</filename> file.</para>
+ </listitem>
+ </itemizedlist>
+
+ <warning>
+ <para>The RELAX-NG validation in the xmllint program from libxml2 is known to have
+ bugs and does not work correctly with DocBook Slides.</para>
+ </warning>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Validating Slides</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>With <command>jing</command>, run:
+ <userinput>jing ~/docbook-slides/slides.rng foo.xml</userinput>.</para>
+ </listitem>
+
+ <listitem>
+ <para>For <application>Emacs/nXML</application>, you can put the following into
+ your <filename>emacs.conf</filename>:</para>
+
+ <programlisting>
+ (setq rng-schema-locating-files
+ (append
+ '("~/docbook-slides/locatingrules.xml")))</programlisting>
+
+ <para>Or you can do <userinput>M-x customize-variable rng-schema-locating-files</userinput>
+ and then add the absolute path to the file.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Transforming DocBook Slides Documents</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>You need an XSLT processor to transform the documents.
+ For example, you can use either <command>xsltproc</command> from
+ <application>libxslt</application> <xref linkend="libxslt"/>, <application>Xalan</application>
+ or <application>Saxon</application>.</para>
+ </listitem>
+
+ <listitem>
+ <para>It is recommended to use <command>xsltproc</command>, since
+ it is significantly faster than the other two and the DocBook Slides
+ stylesheets were also tested with it.</para>
+ </listitem>
+
+ <listitem>
+ <para>Pick the proper stylesheet for your chosen output format.
+ For example, it is <filename>xhtml/slidy.xsl</filename> for
+ HTML Slidy.</para>
+ </listitem>
+
+ <listitem>
+ <para>Type: <userinput>xsltproc xsl/slides/xhtml/slidy.xsl foo.xml &gt; foo.html</userinput></para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Rendering Printable Output</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para>First create the XSL FO document with XSLT:
+ <userinput>xsltproc xsl/slides/fo/plain.xsl foo.xml &gt; foo.fo</userinput></para>
+ </listitem>
+
+ <listitem>
+ <para>Then use your XSL FO processor to render the final document.</para>
+ </listitem>
+
+ <listitem>
+ <para>For example, to render a PDF with Apache FOP, type:
+ <userinput>fop foo.fo foo.pdf</userinput></para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <info>
+ <title>DocBook Slides Limitations</title>
+ </info>
+
+ <dbs:foil>
+ <info>
+ <title>Foil Content</title>
+ </info>
+
+ <para>Creating slides is quite different from creating
+ papers and books.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Presentational slide are layout-oriented by nature as opposed to DocBook, which is
+ structure-oriented. The content of the foil must fit but there
+ is no easy way to detect this so this should be checked
+ and controlled manually.</para>
+ </listitem>
+
+ <listitem>
+ <para>Formatting of slide content is not necessarily consistent but part
+ of the design of each foil and illustration used in
+ the presentation, while an important principle of
+ DocBook is separating content and styling. To achieve
+ something very unique, you will probably need heavy
+ customization.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Animations and Sound Effects</title>
+ </info>
+
+ <para>DocBook was invented for mostly printed or web
+ content, while slides are rarely presented in a
+ printed form.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Slides are usually shown on computer screen or
+ projector and may heavily use animated or audio content
+ to support the presentations.</para>
+ </listitem>
+
+ <listitem>
+ <para>Most of the possible output formats are usually
+ used in printed form or on the web. The first lacks
+ the possibility of animated and audio content and the
+ second one lacks good open standards for doing so.</para>
+ </listitem>
+
+ <listitem>
+ <para>Maybe a future HTML5 or OpenDocument support
+ can bring in some new features but for now, you cannot
+ really use animations and sound.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <info>
+ <title>Frequently Asked Questions</title>
+ </info>
+
+ <dbs:foil>
+ <info>
+ <title>Compatibility</title>
+ </info>
+
+ <qandaset>
+ <qandaentry>
+ <question>
+ <para>Is DocBook Slides 5.0 stylesheets compatible with
+ older versions of DocBook Slides or vice versa?</para>
+ </question>
+
+ <answer>
+ <para>Not at all, since it is heavily redesigned. But
+ you can find an XSLT transformation in the
+ <filename class="directory">tools/</filename>
+ directory, which can convert your slides to the new
+ schema.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Contribution</title>
+ </info>
+
+ <qandaset>
+ <qandaentry>
+ <question>
+ <para>Can I contribute to the schema or to the stylesheets?</para>
+ </question>
+
+ <answer>
+ <para>Of course, any contribution that can be useful for
+ other users and fits the concept of DocBook Slides
+ is more than welcome.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>What to do with my contribution?</para>
+ </question>
+
+ <answer>
+ <para>Please first ask review on
+ the <link xlink:href="mailto:docbook-apps@lists.oasis-open.org">docbook-apps
+ mailing list</link> and users and other developers will tell you
+ what to improve and how to submit your work for inclusion.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Help</title>
+ </info>
+
+ <qandaset>
+ <qandaentry>
+ <question>
+ <para>How can I get help in using the schema and the
+ accompanying stylesheets?</para>
+ </question>
+
+ <answer>
+ <para>There is a
+ <link xlink:href="mailto:docbook-apps@lists.oasis-open.org">docbook-apps
+ mailing list</link> for general questions on DocBook and related
+ technologies. There are numerous users and developers subscribed to
+ this list, so probably you can get help there.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foilgroup>
+ <info>
+ <title>Mini-Reference</title>
+ </info>
+
+ <para>Here you have the short and informal description of the DocBook
+ Slides elements. It is not meant to be a full and formalized
+ referenced but rather a cheatsheet to look at.</para>
+
+ <dbs:foil>
+ <info>
+ <title>dbs:slides</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>May contain:</emphasis> db:title, db:titleabbrev,
+ db:subtitle, db:info, dbs:foilgroup, dbs:foil</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Usage:</emphasis> It is the root element that encloses the authoring
+ info and the particular foils that may be grouped to foil
+ groups.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>dbs:foilgroup</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>May contain:</emphasis> db:title, db:titleabbev,
+ db:subtitle, db:info, [block content], dbs:foil, dbs:speakernotes,
+ dbs:handoutnotes</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Usage:</emphasis> It groups together various foils. It can have its own info
+ section and an optional introductionary text. Depending on your XSLT
+ parameters, it may generate a table of contents of enclosed foils.
+ Its usage is not obligatory but may be very useful for grouping together
+ logically related foils. It may have some speaker notes and handout notes, as well.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>dbs:foil</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>May contain:</emphasis> db:title, db:titleabbev,
+ db:subtitle, db:info, [block content], dbs:speakernotes,
+ dbs:handoutnotes</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Usage:</emphasis> It marks up a single foil. Use
+ DocBook block elements to mark up your content. It may have some speaker
+ notes and handout notes, as well.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>dbs:block</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>May contain:</emphasis> [block content]</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Usage:</emphasis> It divides the content into layout units
+ that can later processed in a specific way.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>dbs:speakernotes</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>May contain:</emphasis> [block content]</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Usage:</emphasis> Notes that are not meant to be presented to
+ the audience but to the speaker.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>dbs:handoutnotes</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>May contain:</emphasis> [block content]</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>Usage:</emphasis> Notes that are not to accompany
+ printed slides.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Attribute dbs:incremental</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>Usage:</emphasis> Makes the content incremental.
+ Allowed on any element and inherited to child elements
+ but not applicable everywhere and its effect depends on the output
+ format.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Attribute dbs:collapsible</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>Usage:</emphasis> Makes the content collapsible.
+ Allowed on any element and inherited to child elements
+ but not applicable everywhere and its effect depends on the output
+ format.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Attribute dbs:style</title>
+ </info>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>Usage:</emphasis> Classifies the given element
+ to a specific formatting class. Typically applicable to foils,
+ foilgroups and mediaobject. Allowed anywhere but not processed
+ everywhere. In HTML it naturally maps to the <literal>class</literal>
+ attribute.</para>
+ </listitem>
+ </itemizedlist>
+ </dbs:foil>
+ </dbs:foilgroup>
+
+ <dbs:foil>
+ <info>
+ <title>Related Standards</title>
+ </info>
+
+ <bibliography>
+ <title>Related Standards</title>
+
+ <biblioentry xml:id="w3c-xml">
+ <title>Extensible Markup Language (XML)</title>
+
+ <org>
+ <orgname>W3C</orgname>
+ </org>
+
+ <bibliosource class="uri" xlink:href="http://www.w3.org/TR/REC-xml/">http://www.w3.org/TR/REC-xml/</bibliosource>
+ </biblioentry>
+
+ <biblioentry xml:id="docbook5">
+ <title>The DocBook Schema Version 5.0</title>
+
+ <org>
+ <orgname>OASIS</orgname>
+ </org>
+
+ <bibliosource class="uri" xlink:href="http://docs.oasis-open.org/docbook/specs/docbook-5.0-spec-os.html">http://docs.oasis-open.org/docbook/specs/docbook-5.0-spec-os.html</bibliosource>
+ </biblioentry>
+
+ <biblioentry xml:id="w3c-xslt">
+ <title>XSL Transformations (XSLT) Version 1.0</title>
+
+ <org>
+ <orgname>W3C</orgname>
+ </org>
+
+ <bibliosource class="uri" xlink:href="http://www.w3.org/TR/xslt">http://www.w3.org/TR/xslt</bibliosource>
+ </biblioentry>
+
+ <biblioentry xml:id="w3c-xslfo">
+ <title>Extensible Stylesheet Language (XSL) Version 1.1</title>
+
+ <org>
+ <orgname>W3C</orgname>
+ </org>
+
+ <bibliosource class="uri" xlink:href="http://www.w3.org/TR/xsl/">http://www.w3.org/TR/xsl/</bibliosource>
+ </biblioentry>
+ </bibliography>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Supported HTML Presentation Frameworks</title>
+ </info>
+
+ <bibliography>
+ <title>Supported HTML Presentation Frameworks</title>
+
+ <biblioentry xml:id="s5">
+ <title>S<superscript>5</superscript></title>
+ <subtitle>A Simple Standards-Based Slide Show System</subtitle>
+
+ <bibliosource class="uri" xlink:href="http://meyerweb.com/eric/tools/s5/">http://meyerweb.com/eric/tools/s5/</bibliosource>
+ </biblioentry>
+
+ <biblioentry xml:id="slidy">
+ <title>HTML Slidy</title>
+ <subtitle>Slide Shows in HTML and XHTML</subtitle>
+
+ <bibliosource class="uri" xlink:href="www.w3.org/Talks/Tools/Slidy2/">www.w3.org/Talks/Tools/Slidy2/</bibliosource>
+ </biblioentry>
+ </bibliography>
+ </dbs:foil>
+
+ <dbs:foil>
+ <info>
+ <title>Recommended Tools</title>
+ </info>
+
+ <bibliography>
+ <title>Recommended Tools</title>
+
+ <biblioentry xml:id="jing">
+ <title>Jing RELAX-NG validator</title>
+
+ <bibliosource class="uri" xlink:href="http://www.thaiopensource.com/relaxng/jing.html">http://www.thaiopensource.com/relaxng/jing.html</bibliosource>
+ </biblioentry>
+
+ <biblioentry xml:id="libxslt">
+ <title>libxslt</title>
+ <subtitle>The XSLT C library for GNOME</subtitle>
+
+ <bibliosource class="uri" xlink:href="http://xmlsoft.org/xslt/">http://xmlsoft.org/xslt/</bibliosource>
+ </biblioentry>
+
+ <biblioentry xml:id="fop">
+ <title>Apache FOP</title>
+
+ <bibliosource class="uri" xlink:href="http://xmlgraphics.apache.org/fop/">http://xmlgraphics.apache.org/fop/</bibliosource>
+ </biblioentry>
+ </bibliography>
+ </dbs:foil>
+</dbs:slides>
diff --git a/slides/doc/user.css b/slides/doc/user.css
new file mode 100644
index 0000000..a7ae50c
--- /dev/null
+++ b/slides/doc/user.css
@@ -0,0 +1,6 @@
+.face_container {margin-left: 4em; position: relative;}
+.face_first {position: static; vertical-align: bottom;}
+.face_other {position: absolute; left: 0; top: 0;}
+
+.left {float: left;}
+.right {float: right;}
diff --git a/slides/fo/param.xml b/slides/fo/param.xml
index 7aaa787..c2ab944 100644
--- a/slides/fo/param.xml
+++ b/slides/fo/param.xml
@@ -7,13 +7,13 @@ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
</releaseinfo>
<author>
<personname>
- <surname>Walsh</surname>
- <firstname>Norman</firstname>
+ <surname>K&#246;vesd&#225;n</surname>
+ <firstname>G&#225;bor</firstname>
</personname>
</author>
<copyright>
- <year>2002-2011</year>
- <holder>Norman Walsh</holder>
+ <year>2012</year>
+ <holder>G&#225;bor K&#246;vesd&#225;n</holder>
</copyright>
<abstract>
<para>This is reference documentation for all user-configurable
@@ -28,29 +28,329 @@ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
</info>
<reference xml:id="fo">
<title>FO: General Params</title>
-<refentry version="5.0" xml:id="slide.title.font.family">
+
+<refentry version="5.0" xml:id="foil.title.master">
<refmeta>
-<refentrytitle>slide.title.font.family</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
-<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
+<refentrytitle>foil.title.master</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>slide.title.font.family</refname>
-<refpurpose>Specifies font family to use for slide titles</refpurpose>
+<refname>foil.title.master</refname>
+<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting xml:id="slide.title.font.family.frag">
-&lt;xsl:param name="slide.title.font.family"&gt;Helvetica&lt;/xsl:param&gt;
+<programlisting xml:id="foil.title.master.frag">
+&lt;xsl:param name="foil.title.master"&gt;36&lt;/xsl:param&gt;
+&lt;!-- Inconsistant use of point size? --&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies the font family to use for slides titles.</para>
+<para>Specifies a unitless font size to use for foil titles; used in
+combination with the <parameter>foil.title.size</parameter>
+parameter.</para>
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.title.size">
+<refmeta>
+<refentrytitle>foil.title.size</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.title.size</refname>
+<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.title.size.frag">
+ &lt;xsl:param name="foil.title.size"&gt;
+ &lt;xsl:value-of select="$foil.title.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
+ &lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter combines the value of the
+<parameter>foil.title.master</parameter> parameter with a unit
+specification. The default unit is <literal>pt</literal>
+(points).</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.copyright">
+<refmeta>
+<refentrytitle>generate.copyright</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.copyright</refname>
+<refpurpose>Specifies whether copyright is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.copyright.frag">
+ &lt;xsl:param name="generate.copyright"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the copyright info is generated
+ in the footer area.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.foilgroup.numbered.toc">
+<refmeta>
+<refentrytitle>generate.foilgroup.numbered.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.foilgroup.numbered.toc</refname>
+<refpurpose>Specifies whether foilgroups have a numbered TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.foilgroup.numbered.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.numbered.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If TOC generation is turned on, this parameter specifies
+ whether foilgroups have a numbered TOC. If disabled, TOC items
+ will be bulleted, not numbered.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.foilgroup.toc">
+<refmeta>
+<refentrytitle>generate.foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.foilgroup.toc</refname>
+<refpurpose>Specifies whether foilgroups have a TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.foilgroup.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether foilgroups will
+ contain a table of contents of the included foils.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.handoutnotes">
+<refmeta>
+<refentrytitle>generate.handoutnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.handoutnotes</refname>
+<refpurpose>Specifies whether handoutnotes are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.handoutnotes.frag">
+ &lt;xsl:param name="generate.handoutnotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether handoutnotes shall
+ be generated to the output.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.page.number">
+<refmeta>
+<refentrytitle>generate.page.number</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">full<alt>1/2</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">compact<alt>1</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.page.number</refname>
+<refpurpose>Specifies whether page numbers are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.page.number.frag">
+ &lt;xsl:param name="generate.page.number"&gt;compact&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how page numbers are generated in
+ the footer area.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>no</term>
+ <listitem>
+ <para>No page numbers generated at all.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>full</term>
+ <listitem>
+ <para>Current page number, a slash and the total number of pages</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>compact</term>
+ <listitem>
+ <para>Current page number only</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>no</term>
+ <listitem>
+ <para>No page numbers generated at all.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.pubdate">
+<refmeta>
+<refentrytitle>generate.pubdate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.pubdate</refname>
+<refpurpose>Specifies whether the pubdate is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.pubdate.frag">
+ &lt;xsl:param name="generate.pubdate"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the publication date is generated
+ in the footer area.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.speakernotes">
+<refmeta>
+<refentrytitle>generate.speakernotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.speakernotes</refname>
+<refpurpose>Specifies whether speakernotes are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.speakernotes.frag">
+ &lt;xsl:param name="generate.speakernotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether speakernotes shall
+ be generated to the output.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.titlepage">
+<refmeta>
+<refentrytitle>generate.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.titlepage</refname>
+<refpurpose>Specifies whether titlepage is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.titlepage.frag">
+ &lt;xsl:param name="generate.titlepage"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether titlepage is generated
+ for the presentation.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="mml.embedding.mode">
+<refmeta>
+<refentrytitle>mml.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">external-graphic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">instream-foreign-object</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mml.embedding.mode</refname>
+<refpurpose>Specifies how inline MathML is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="mml.embedding.mode.fo.frag">
+ &lt;xsl:param name="mml.embedding.mode"&gt;external-graphic&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline MathML formulas
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>external-graphic</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>external-graphic</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>instream-foreign-object</term>
+ <listitem>
+ <para>Content is copied over with its namespace inside an
+ <markup>instream-foreign-object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
@@ -82,55 +382,78 @@ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
</refsection>
</refentry>
-<refentry version="5.0" xml:id="foil.title.master">
+<refentry version="5.0" xml:id="slide.title.font.family">
<refmeta>
-<refentrytitle>foil.title.master</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">number</refmiscinfo>
+<refentrytitle>slide.title.font.family</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">sans-serif</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">monospace</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.title.master</refname>
-<refpurpose>Specifies unitless font size to use for foil titles</refpurpose>
+<refname>slide.title.font.family</refname>
+<refpurpose>Specifies font family to use for slide titles</refpurpose>
</refnamediv>
<refsynopsisdiv>
-<programlisting xml:id="foil.title.master.frag">
-&lt;xsl:param name="foil.title.master"&gt;36&lt;/xsl:param&gt;
-&lt;!-- Inconsistant use of point size? --&gt;
+<programlisting xml:id="slide.title.font.family.frag">
+&lt;xsl:param name="slide.title.font.family"&gt;Helvetica&lt;/xsl:param&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>Specifies a unitless font size to use for foil titles; used in
-combination with the <parameter>foil.title.size</parameter>
-parameter.</para>
+<para>Specifies the font family to use for slides titles.</para>
+
</refsection>
</refentry>
-<refentry version="5.0" xml:id="foil.title.size">
+<refentry version="5.0" xml:id="svg.embedding.mode">
<refmeta>
-<refentrytitle>foil.title.size</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
+<refentrytitle>svg.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">external-graphic</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">instream-foreign-object</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.title.size</refname>
-<refpurpose>Specifies font size to use for foil titles, including units</refpurpose>
+<refname>svg.embedding.mode</refname>
+<refpurpose>Specifies how inline SVG is processed</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting xml:id="foil.title.size.frag">
- &lt;xsl:param name="foil.title.size"&gt;
- &lt;xsl:value-of select="$foil.title.master"&gt;&lt;/xsl:value-of&gt;&lt;xsl:text&gt;pt&lt;/xsl:text&gt;
- &lt;/xsl:param&gt;
+ <programlisting xml:id="svg.embedding.mode.fo.frag">
+ &lt;xsl:param name="svg.embedding.mode"&gt;instream-foreign-object&lt;/xsl:param&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter combines the value of the
-<parameter>foil.title.master</parameter> parameter with a unit
-specification. The default unit is <literal>pt</literal>
-(points).</para>
+<para>This parameter specifies how inline SVG graphics
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>external-graphic</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>external-graphic</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>instream-foreign-object</term>
+ <listitem>
+ <para>Content is copied over with its namespace inside an
+ <markup>instream-foreign-object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
</refsection>
</refentry>
@@ -138,56 +461,226 @@ specification. The default unit is <literal>pt</literal>
</reference>
<reference xml:id="propsets">
<title>FO: Property Sets</title>
-<refentry version="5.0" xml:id="slides.properties">
+<refentry version="5.0" xml:id="foil.header.properties">
<refmeta>
-<refentrytitle>slides.properties</refentrytitle>
+<refentrytitle>foil.header.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>slides.properties</refname>
-<refpurpose>Specifies properties for all slides</refpurpose>
+<refname>foil.header.properties</refname>
+<refpurpose>Specifies properties for foil header area</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting xml:id="slides.properties.frag">
- &lt;xsl:attribute-set name="slides.properties"&gt;
+ <programlisting xml:id="foil.header.properties.frag">
+ &lt;xsl:attribute-set name="foil.header.properties"&gt;
+ &lt;xsl:attribute name="background-color"&gt;white&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="color"&gt;black&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;12pt&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all slides.</para>
+<para>This parameter specifies properties for the foil header area.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.master.properties">
+<refmeta>
+<refentrytitle>foil.master.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.master.properties</refname>
+<refpurpose>Specifies properties for foil master</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.master.properties.frag">
+ &lt;xsl:attribute-set name="foil.master.properties"&gt;
+ &lt;xsl:attribute name="page-width"&gt;
+ &lt;xsl:value-of select="$page.width"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="page-height"&gt;
+ &lt;xsl:value-of select="$page.height"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;
+ &lt;xsl:value-of select="$page.margin.top"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;
+ &lt;xsl:value-of select="$page.margin.bottom"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$page.margin.inner"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-right"&gt;
+ &lt;xsl:value-of select="$page.margin.outer"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil master.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.page-sequence.properties">
+<refmeta>
+<refentrytitle>foil.page-sequence.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.page-sequence.properties</refname>
+<refpurpose>Specifies properties for foil page-sequence</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.page-sequence.properties.frag">
+ &lt;xsl:attribute-set name="foil.page-sequence.properties"&gt;
+ &lt;xsl:attribute name="hyphenate"&gt;
+ &lt;xsl:value-of select="$hyphenate"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for foil page-sequence.</para>
</refsection>
</refentry>
-<refentry version="5.0" xml:id="foilgroup.properties">
+<refentry version="5.0" xml:id="foil.properties">
<refmeta>
-<refentrytitle>foilgroup.properties</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+<refentrytitle>foil.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foilgroup.properties</refname>
-<refpurpose>Specifies properties for all foilgroups</refpurpose>
+<refname>foil.properties</refname>
+<refpurpose>Specifies properties for all foils</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting xml:id="foilgroup.properties.frag">
- &lt;xsl:attribute-set name="foilgroup.properties"&gt;
+ <programlisting xml:id="foil.properties.frag">
+ &lt;xsl:attribute-set name="foil.properties"&gt;
&lt;xsl:attribute name="font-family"&gt;
&lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;1in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all foils.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.region-after.properties">
+<refmeta>
+<refentrytitle>foil.region-after.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.region-after.properties</refname>
+<refpurpose>Specifies properties for foil region-after</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.region-after.properties.frag">
+ &lt;xsl:attribute-set name="foil.region-after.properties"&gt;
+ &lt;xsl:attribute name="extent"&gt;
+ &lt;xsl:value-of select="$region.after.extent"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="display-align"&gt;after&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil region-after.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.region-before.properties">
+<refmeta>
+<refentrytitle>foil.region-before.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.region-before.properties</refname>
+<refpurpose>Specifies properties for foil region-before</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.region-before.properties.frag">
+ &lt;xsl:attribute-set name="foil.region-before.properties"&gt;
+ &lt;xsl:attribute name="extent"&gt;
+ &lt;xsl:value-of select="$region.before.extent"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="display-align"&gt;
+ &lt;xsl:value-of select="'before'"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil region-before.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.region-body.properties">
+<refmeta>
+<refentrytitle>foil.region-body.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.region-body.properties</refname>
+<refpurpose>Specifies properties for foil region-body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.region-body.properties.frag">
+ &lt;xsl:attribute-set name="foil.region-body.properties"&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;
+ &lt;xsl:value-of select="$body.margin.bottom"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;
+ &lt;xsl:value-of select="$body.margin.top"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="column-count"&gt;
+ &lt;xsl:value-of select="$column.count.body"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all foilgroups.</para>
+<para>This parameter specifies properties for the foil region-body.</para>
</refsection>
</refentry>
@@ -224,93 +717,372 @@ specification. The default unit is <literal>pt</literal>
</refsection>
</refentry>
-<refentry version="5.0" xml:id="foil.properties">
+<refentry version="5.0" xml:id="foil.title.properties">
<refmeta>
-<refentrytitle>foil.properties</refentrytitle>
+<refentrytitle>foil.title.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>foil.properties</refname>
-<refpurpose>Specifies properties for all foils</refpurpose>
+<refname>foil.title.properties</refname>
+<refpurpose>Specifies properties for foil title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting xml:id="foil.properties.frag">
- &lt;xsl:attribute-set name="foil.properties"&gt;
+ <programlisting xml:id="foil.title.properties.frag">
+ &lt;xsl:attribute-set name="foil.title.properties"&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil title.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="foil.footer.properties">
+<refmeta>
+<refentrytitle>foil.footer.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>foil.footer.properties</refname>
+<refpurpose>Specifies properties for slides footer</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="foil.footer.properties.frag">
+ &lt;xsl:attribute-set name="foil.footer.properties"&gt;&lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the foil footer.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="handoutnotes.properties">
+<refmeta>
+<refentrytitle>handoutnotes.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to handoutnotes
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="handoutnotes.properties.frag">
+&lt;xsl:attribute-set name="handoutnotes.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to handoutnotes.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.properties">
+<refmeta>
+<refentrytitle>slides.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.properties</refname>
+<refpurpose>Specifies properties for all slides</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.properties.frag">
+ &lt;xsl:attribute-set name="slides.properties"&gt;
&lt;xsl:attribute name="font-family"&gt;
&lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="margin-{$direction.align.start}"&gt;1in&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="margin-{$direction.align.end}"&gt;1in&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;
- &lt;xsl:value-of select="$body.font.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties that are applied to all slides.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.titlepage.master.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.master.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.master.properties</refname>
+<refpurpose>Specifies properties for slides titlepage master</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.titlepage.master.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.master.properties"&gt;
+ &lt;xsl:attribute name="page-width"&gt;
+ &lt;xsl:value-of select="$page.width"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="page-height"&gt;
+ &lt;xsl:value-of select="$page.height"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;
+ &lt;xsl:value-of select="$page.margin.top"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;
+ &lt;xsl:value-of select="$page.margin.bottom"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-left"&gt;
+ &lt;xsl:value-of select="$page.margin.inner"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-right"&gt;
+ &lt;xsl:value-of select="$page.margin.outer"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all foils.</para>
+<para>This parameter specifies properties for the slides titlepage master.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.titlepage.region-body.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.region-body.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.region-body.properties</refname>
+<refpurpose>Specifies properties for slides titlepage region-body</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.titlepage.region-body.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.region-body.properties"&gt;
+ &lt;xsl:attribute name="margin-bottom"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="margin-top"&gt;0pt&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="column-count"&gt;
+ &lt;xsl:value-of select="$column.count.body"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the slides titlepage region-body.</para>
</refsection>
</refentry>
-<refentry version="5.0" xml:id="speakernote.properties">
+<refentry version="5.0" xml:id="slides.titlepage.corpauthor.properties">
<refmeta>
-<refentrytitle>speakernote.properties</refentrytitle>
+<refentrytitle>slides.titlepage.corpauthor.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>speakernote.properties</refname>
-<refpurpose>Specifies properties for all speakernotes</refpurpose>
+<refname>slides.titlepage.corpauthor.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting xml:id="speakernote.properties.frag">
- &lt;xsl:attribute-set name="speakernote.properties"&gt;
- &lt;xsl:attribute name="font-family"&gt;Times Roman&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-style"&gt;italic&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;12pt&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-weight"&gt;normal&lt;/xsl:attribute&gt;
+ <programlisting xml:id="slides.titlepage.corpauthor.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.corpauthor.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;20.736pt&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to all speakernotes.</para>
+<para>This parameter specifies properties for the corpauthor on the default
+ titlepage.</para>
</refsection>
</refentry>
-<refentry version="5.0" xml:id="running.foot.properties">
+<refentry version="5.0" xml:id="slides.titlepage.title.properties">
<refmeta>
-<refentrytitle>running.foot.properties</refentrytitle>
+<refentrytitle>slides.titlepage.title.properties</refentrytitle>
<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
</refmeta>
<refnamediv>
-<refname>running.foot.properties</refname>
-<refpurpose>Specifies properties for running foot on each slide</refpurpose>
+<refname>slides.titlepage.title.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
</refnamediv>
<refsynopsisdiv>
- <programlisting xml:id="running.foot.properties.frag">
- &lt;xsl:attribute-set name="running.foot.properties"&gt;
+ <programlisting xml:id="slides.titlepage.title.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.title.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="padding-top"&gt;1.5in&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="keep-with-next"&gt;always&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;
+ &lt;xsl:value-of select="$foil.title.size"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-weight"&gt;bold&lt;/xsl:attribute&gt;
&lt;xsl:attribute name="font-family"&gt;
- &lt;xsl:value-of select="$slide.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="font-size"&gt;14pt&lt;/xsl:attribute&gt;
- &lt;xsl:attribute name="color"&gt;#9F9F9F&lt;/xsl:attribute&gt;
&lt;/xsl:attribute-set&gt;
</programlisting>
</refsynopsisdiv>
<refsection><info><title>Description</title></info>
-<para>This parameter specifies properties that are applied to the
-running foot area of each slide.</para>
+<para>This parameter specifies properties for the title on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.titlepage.subtitle.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.subtitle.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.subtitle.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.titlepage.subtitle.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.subtitle.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-family"&gt;
+ &lt;xsl:value-of select="$slide.title.font.family"&gt;&lt;/xsl:value-of&gt;
+ &lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the subtitle on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.titlepage.author.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.author.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.author.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.titlepage.author.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.author.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;20.736pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the author on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.titlepage.pubdate.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.pubdate.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.pubdate.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.titlepage.pubdate.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.pubdate.properties"&gt;
+ &lt;xsl:attribute name="text-align"&gt;center&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="space-after"&gt;1em&lt;/xsl:attribute&gt;
+ &lt;xsl:attribute name="font-size"&gt;17.28pt&lt;/xsl:attribute&gt;
+ &lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the pubdate on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slides.titlepage.authorgroup.properties">
+<refmeta>
+<refentrytitle>slides.titlepage.authorgroup.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slides.titlepage.authorgroup.properties</refname>
+<refpurpose>Specifies properties for slides titlepage title</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slides.titlepage.authorgroup.properties.frag">
+ &lt;xsl:attribute-set name="slides.titlepage.authorgroup.properties"&gt;&lt;/xsl:attribute-set&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies properties for the authorgroup on the default
+ titlepage.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="speakernotes.properties">
+<refmeta>
+<refentrytitle>speakernotes.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>footnote.properties</refname>
+<refpurpose>Properties applied to speakernotes
+</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<programlisting xml:id="speakernotes.properties.frag">
+&lt;xsl:attribute-set name="speakernotes.properties"&gt;&lt;/xsl:attribute-set&gt;
+</programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This attribute set is applied to speakernotes.</para>
</refsection>
</refentry>
@@ -338,16 +1110,43 @@ around all these parameters.</para>
******************************************************************** --&gt;
-&lt;src:fragref linkend="slide.font.family.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="slide.title.font.family.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="foil.title.master.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="foil.title.size.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="foilgroup.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.copyright.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.foilgroup.numbered.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.foilgroup.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.handoutnotes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.page.number.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.pubdate.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.speakernotes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.titlepage.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="mml.embedding.mode.fo.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slide.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slide.title.font.family.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="svg.embedding.mode.fo.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;src:fragref linkend="foil.header.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.master.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.page-sequence.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="foil.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.region-after.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.region-before.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.region-body.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="foil.subtitle.properties.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="running.foot.properties.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="speakernote.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="handoutnotes.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;src:fragref linkend="slides.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.master.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.region-body.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="speakernotes.properties.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;src:fragref linkend="slides.titlepage.corpauthor.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.title.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.subtitle.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="foil.footer.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.author.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.pubdate.properties.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slides.titlepage.authorgroup.properties.frag"&gt;&lt;/src:fragref&gt;
&lt;/xsl:stylesheet&gt;
</programlisting>
diff --git a/slides/fo/param.xsl b/slides/fo/param.xsl
index 49fd621..d972fcd 100644
--- a/slides/fo/param.xsl
+++ b/slides/fo/param.xsl
@@ -12,17 +12,70 @@
******************************************************************** -->
-<xsl:param name="slide.font.family">Helvetica</xsl:param>
-<xsl:param name="slide.title.font.family">Helvetica</xsl:param>
<xsl:param name="foil.title.master">36</xsl:param>
<!-- Inconsistant use of point size? -->
<xsl:param name="foil.title.size">
<xsl:value-of select="$foil.title.master"/><xsl:text>pt</xsl:text>
</xsl:param>
- <xsl:attribute-set name="foilgroup.properties">
+ <xsl:param name="generate.copyright">1</xsl:param>
+
+ <xsl:param name="generate.foilgroup.numbered.toc">1</xsl:param>
+
+ <xsl:param name="generate.foilgroup.toc">1</xsl:param>
+
+ <xsl:param name="generate.handoutnotes">0</xsl:param>
+
+ <xsl:param name="generate.page.number">compact</xsl:param>
+
+ <xsl:param name="generate.pubdate">1</xsl:param>
+
+ <xsl:param name="generate.speakernotes">0</xsl:param>
+
+ <xsl:param name="generate.titlepage">1</xsl:param>
+
+ <xsl:param name="mml.embedding.mode">external-graphic</xsl:param>
+
+<xsl:param name="slide.font.family">Helvetica</xsl:param>
+<xsl:param name="slide.title.font.family">Helvetica</xsl:param>
+ <xsl:param name="svg.embedding.mode">instream-foreign-object</xsl:param>
+
+
+ <xsl:attribute-set name="foil.header.properties">
+ <xsl:attribute name="background-color">white</xsl:attribute>
+ <xsl:attribute name="color">black</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="font-family">
- <xsl:value-of select="$slide.font.family"/>
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.master.properties">
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page.width"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page.height"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-top">
+ <xsl:value-of select="$page.margin.top"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-bottom">
+ <xsl:value-of select="$page.margin.bottom"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-right">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.page-sequence.properties">
+ <xsl:attribute name="hyphenate">
+ <xsl:value-of select="$hyphenate"/>
</xsl:attribute>
</xsl:attribute-set>
@@ -35,7 +88,34 @@
<xsl:attribute name="font-size">
<xsl:value-of select="$body.font.size"/>
</xsl:attribute>
- <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.region-after.properties">
+ <xsl:attribute name="extent">
+ <xsl:value-of select="$region.after.extent"/>
+ </xsl:attribute>
+ <xsl:attribute name="display-align">after</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.region-before.properties">
+ <xsl:attribute name="extent">
+ <xsl:value-of select="$region.before.extent"/>
+ </xsl:attribute>
+ <xsl:attribute name="display-align">
+ <xsl:value-of select="'before'"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="foil.region-body.properties">
+ <xsl:attribute name="margin-bottom">
+ <xsl:value-of select="$body.margin.bottom"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-top">
+ <xsl:value-of select="$body.margin.top"/>
+ </xsl:attribute>
+ <xsl:attribute name="column-count">
+ <xsl:value-of select="$column.count.body"/>
+ </xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="foil.subtitle.properties">
@@ -49,27 +129,94 @@
<xsl:attribute name="space-after">12pt</xsl:attribute>
</xsl:attribute-set>
- <xsl:attribute-set name="running.foot.properties">
+ <xsl:attribute-set name="foil.title.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$foil.title.size"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+<xsl:attribute-set name="handoutnotes.properties"/>
+ <xsl:attribute-set name="slides.properties">
<xsl:attribute name="font-family">
<xsl:value-of select="$slide.font.family"/>
</xsl:attribute>
- <xsl:attribute name="font-size">14pt</xsl:attribute>
- <xsl:attribute name="color">#9F9F9F</xsl:attribute>
</xsl:attribute-set>
- <xsl:attribute-set name="speakernote.properties">
- <xsl:attribute name="font-family">Times Roman</xsl:attribute>
- <xsl:attribute name="font-style">italic</xsl:attribute>
- <xsl:attribute name="font-size">12pt</xsl:attribute>
- <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute-set name="slides.titlepage.master.properties">
+ <xsl:attribute name="page-width">
+ <xsl:value-of select="$page.width"/>
+ </xsl:attribute>
+ <xsl:attribute name="page-height">
+ <xsl:value-of select="$page.height"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-top">
+ <xsl:value-of select="$page.margin.top"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-bottom">
+ <xsl:value-of select="$page.margin.bottom"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">
+ <xsl:value-of select="$page.margin.inner"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-right">
+ <xsl:value-of select="$page.margin.outer"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="slides.titlepage.region-body.properties">
+ <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
+ <xsl:attribute name="margin-top">0pt</xsl:attribute>
+ <xsl:attribute name="column-count">
+ <xsl:value-of select="$column.count.body"/>
+ </xsl:attribute>
</xsl:attribute-set>
- <xsl:attribute-set name="slides.properties">
+<xsl:attribute-set name="speakernotes.properties"/>
+
+ <xsl:attribute-set name="slides.titlepage.corpauthor.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-size">20.736pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="slides.titlepage.title.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="padding-top">1.5in</xsl:attribute>
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$foil.title.size"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="font-family">
- <xsl:value-of select="$slide.font.family"/>
+ <xsl:value-of select="$slide.title.font.family"/>
+ </xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="slides.titlepage.subtitle.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$slide.title.font.family"/>
</xsl:attribute>
</xsl:attribute-set>
+ <xsl:attribute-set name="foil.footer.properties"/>
+
+ <xsl:attribute-set name="slides.titlepage.author.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-size">20.736pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="slides.titlepage.pubdate.properties">
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-after">1em</xsl:attribute>
+ <xsl:attribute name="font-size">17.28pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="slides.titlepage.authorgroup.properties"/>
+
</xsl:stylesheet>
diff --git a/slides/fo/plain-titlepage.xml b/slides/fo/plain-titlepage.xml
index d0a92da..d817f13 100644
--- a/slides/fo/plain-titlepage.xml
+++ b/slides/fo/plain-titlepage.xml
@@ -21,46 +21,16 @@
<t:titlepage t:element="slides" t:wrapper="fo:block">
<t:titlepage-content t:side="recto">
- <title t:predicate="[1]"
- t:named-template="component.title"
- param:node="ancestor-or-self::slides[1]"
- text-align="center"
- space-after="1em"
- padding-top="1.5in"
- keep-with-next="always"
- font-size="{$foil.title.size}"
- font-weight="bold"
- font-family="{$slide.title.font.family}"/>
+ <title t:named-template="presentation.title"
+ xsl:use-attribute-sets="slides.titlepage.title.properties"/>
- <subtitle t:predicate="[1]"
- text-align="center"
- space-after="1em"
- font-family="{$slide.title.font.family}"/>
+ <subtitle xsl:use-attribute-sets="slides.titlepage.subtitle.properties"/>
- <corpauthor font-size="&hsize4;"
- text-align="center"
- space-after="1em"/>
- <authorgroup/>
- <author font-size="&hsize4;"
- text-align="center"
- space-after="1em"/>
+ <corpauthor xsl:use-attribute-sets="slides.titlepage.corpauthor.properties"/>
+ <authorgroup xsl:use-attribute-sets="slides.titlepage.authorgroup.properties"/>
+ <author xsl:use-attribute-sets="slides.titlepage.author.properties"/>
- <pubdate font-size="&hsize3;"
- text-align="center"
- space-after="1em"/>
-
- <confgroup font-size="&hsize3;"
- text-align="center"
- space-after="1em"/>
-
- <releaseinfo font-size="&hsize3;"
- text-align="center"
- space-after="1em"/>
-
- <copyright font-size="&hsize3;"
- text-align="center"/>
-
- <revision text-align="center"/>
+ <pubdate xsl:use-attribute-sets="slides.titlepage.pubdate.properties"/>
</t:titlepage-content>
<t:titlepage-content t:side="verso">
diff --git a/slides/fo/plain-titlepage.xsl b/slides/fo/plain-titlepage.xsl
index 7511129..f79cf81 100644
--- a/slides/fo/plain-titlepage.xsl
+++ b/slides/fo/plain-titlepage.xsl
@@ -7,31 +7,31 @@
<xsl:template name="slides.titlepage.recto">
<xsl:choose>
<xsl:when test="slidesinfo/title">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/title[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/title"/>
</xsl:when>
<xsl:when test="docinfo/title">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/title[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/title"/>
</xsl:when>
<xsl:when test="info/title">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/title[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/title"/>
</xsl:when>
<xsl:when test="title">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="title[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="title"/>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="slidesinfo/subtitle">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/subtitle[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/subtitle"/>
</xsl:when>
<xsl:when test="docinfo/subtitle">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/subtitle[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
</xsl:when>
<xsl:when test="info/subtitle">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/subtitle[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/subtitle"/>
</xsl:when>
<xsl:when test="subtitle">
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="subtitle[1]"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="subtitle"/>
</xsl:when>
</xsl:choose>
@@ -47,18 +47,6 @@
<xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/pubdate"/>
<xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/pubdate"/>
<xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/pubdate"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/confgroup"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/confgroup"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/confgroup"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/releaseinfo"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/releaseinfo"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/copyright"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/copyright"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/copyright"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/revision"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/revision"/>
- <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/revision"/>
</xsl:template>
<xsl:template name="slides.titlepage.verso">
@@ -122,63 +110,38 @@
</xsl:template>
<xsl:template match="title" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" text-align="center" space-after="1em" padding-top="1.5in" keep-with-next="always" font-size="{$foil.title.size}" font-weight="bold" font-family="{$slide.title.font.family}">
-<xsl:call-template name="component.title">
-<xsl:with-param name="node" select="ancestor-or-self::slides[1]"/>
+<block xsl:use-attribute-sets="slides.titlepage.title.properties">
+<xsl:call-template name="presentation.title">
</xsl:call-template>
</block>
</xsl:template>
<xsl:template match="subtitle" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" text-align="center" space-after="1em" font-family="{$slide.title.font.family}">
+<block xsl:use-attribute-sets="slides.titlepage.subtitle.properties">
<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
</block>
</xsl:template>
<xsl:template match="corpauthor" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="20.736pt" text-align="center" space-after="1em">
+<block xsl:use-attribute-sets="slides.titlepage.corpauthor.properties">
<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
</block>
</xsl:template>
<xsl:template match="authorgroup" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style">
+<block xsl:use-attribute-sets="slides.titlepage.authorgroup.properties">
<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
</block>
</xsl:template>
<xsl:template match="author" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="20.736pt" text-align="center" space-after="1em">
+<block xsl:use-attribute-sets="slides.titlepage.author.properties">
<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
</block>
</xsl:template>
<xsl:template match="pubdate" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center" space-after="1em">
-<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
-</block>
-</xsl:template>
-
-<xsl:template match="confgroup" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center" space-after="1em">
-<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
-</block>
-</xsl:template>
-
-<xsl:template match="releaseinfo" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center" space-after="1em">
-<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
-</block>
-</xsl:template>
-
-<xsl:template match="copyright" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" font-size="17.28pt" text-align="center">
-<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
-</block>
-</xsl:template>
-
-<xsl:template match="revision" mode="slides.titlepage.recto.auto.mode">
-<block xsl:use-attribute-sets="slides.titlepage.recto.style" text-align="center">
+<block xsl:use-attribute-sets="slides.titlepage.pubdate.properties">
<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
</block>
</xsl:template>
diff --git a/slides/fo/plain.xsl b/slides/fo/plain.xsl
index b4e729e..40217ea 100644
--- a/slides/fo/plain.xsl
+++ b/slides/fo/plain.xsl
@@ -1,30 +1,26 @@
<?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"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="dbs db"
+ extension-element-prefixes="exsl"
version="1.0">
-<!-- ********************************************************************
- $Id: plain.xsl 8101 2008-08-03 18:35:14Z mzjn $
- ********************************************************************
-
- This file is part of the DocBook Slides Stylesheet distribution.
- See ../README or http://docbook.sf.net/release/xsl/current/ for
- copyright and other information.
-
- ******************************************************************** -->
-
<xsl:import href="../../fo/docbook.xsl"/>
-<xsl:import href="param.xsl"/>
-
-<xsl:param name="alignment" select="'start'"/>
-
+<xsl:import href="../common/common.xsl"/>
<xsl:include href="plain-titlepage.xsl"/>
+<xsl:include href="param.xsl"/>
+
+<xsl:output indent="yes"/>
<xsl:param name="local.l10n.xml" select="document('')"/>
<i18n xmlns="http://docbook.sourceforge.net/xmlns/l10n/1.0">
<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en">
<l:gentext key="Continued" text="(Continued)"/>
+ <l:gentext key="Speakernotes" text="Speaker Notes"/>
+ <l:gentext key="Handoutnotes" text="Handout Notes"/>
<l:context name="title">
<l:template name="slides" text="%t"/>
<l:template name="foilgroup" text="%t"/>
@@ -33,13 +29,25 @@
</l:l10n>
</i18n>
-<xsl:variable name="root.elements" select="' slides '"/>
+<!-- Start of overrides -->
-<xsl:param name="preferred.mediaobject.role" select="'print'"/>
+<xsl:param name="page.margin.top" select="'0.25in'"/>
+<xsl:param name="page.margin.bottom" select="'0.25in'"/>
+<xsl:param name="page.margin.inner" select="'0.25in'"/>
+<xsl:param name="page.margin.outer" select="'0.25in'"/>
+<xsl:param name="body.margin.top" select="'1in'"/>
+<xsl:param name="body.margin.bottom" select="'0.5in'"/>
+<xsl:param name="region.before.extent" select="'0.75in'"/>
+<xsl:param name="region.after.extent" select="'0.5in'"/>
+<xsl:param name="column.count.body" select="1"/>
+<xsl:param name="body.font.size">20</xsl:param>
+<xsl:param name="callout.icon.size" select="'40pt'"/>
+<xsl:param name="alignment" select="'start'"/>
+<xsl:param name="preferred.mediaobject.role" select="'print'"/>
<xsl:param name="page.orientation" select="'landscape'"/>
-<xsl:param name="body.font.master" select="24"/>
+<xsl:variable name="root.elements" select="' slides '"/>
<xsl:attribute-set name="formal.title.properties"
use-attribute-sets="normal.para.spacing">
@@ -75,6 +83,18 @@
<xsl:attribute name="space-before.maximum">10pt</xsl:attribute>
</xsl:attribute-set>
+<xsl:attribute-set name="orderedlist.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.size"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="footnote.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.size * 0.8"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
<xsl:attribute-set name="slides.titlepage.recto.style">
<xsl:attribute name="font-family">
<xsl:value-of select="$slide.font.family"/>
@@ -87,70 +107,33 @@
</xsl:attribute>
</xsl:attribute-set>
-<!-- ============================================================ -->
+<xsl:template name="bibliography.titlepage"/>
-<xsl:param name="page.margin.top" select="'0.25in'"/>
-<xsl:param name="region.before.extent" select="'0.75in'"/>
-<xsl:param name="body.margin.top" select="'1in'"/>
+<!-- Do not add db namespace to dbs elements -->
+<xsl:template match="*[namespace-uri() = 'http://docbook.org/ns/docbook-slides']" mode="addNS">
+ <xsl:copy-of select="."/>
+</xsl:template>
-<xsl:param name="region.after.extent" select="'0.5in'"/>
-<xsl:param name="body.margin.bottom" select="'0.5in'"/>
-<xsl:param name="page.margin.bottom" select="'0.25in'"/>
-
-<xsl:param name="page.margin.inner" select="'0.25in'"/>
-<xsl:param name="page.margin.outer" select="'0.25in'"/>
-<xsl:param name="column.count.body" select="1"/>
+<!-- End of overrides -->
<xsl:template name="user.pagemasters">
<fo:simple-page-master master-name="slides-titlepage-master"
- page-width="{$page.width}"
- page-height="{$page.height}"
- margin-top="{$page.margin.top}"
- margin-bottom="{$page.margin.bottom}"
- margin-left="{$page.margin.inner}"
- margin-right="{$page.margin.outer}">
- <fo:region-body margin-bottom="0pt"
- margin-top="0pt"
- column-count="{$column.count.body}">
- </fo:region-body>
+ xsl:use-attribute-sets="slides.titlepage.master.properties">
+ <fo:region-body xsl:use-attribute-sets="slides.titlepage.region-body.properties"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="slides-foil-master"
- page-width="{$page.width}"
- page-height="{$page.height}"
- margin-top="{$page.margin.top}"
- margin-bottom="{$page.margin.bottom}"
- margin-left="{$page.margin.inner}"
- margin-right="{$page.margin.outer}">
- <fo:region-body margin-bottom="{$body.margin.bottom}"
- margin-top="{$body.margin.top}"
- column-count="{$column.count.body}">
- </fo:region-body>
- <fo:region-before region-name="xsl-region-before-foil"
- extent="{$region.before.extent}"
- display-align="before"/>
- <fo:region-after region-name="xsl-region-after-foil"
- extent="{$region.after.extent}"
- display-align="after"/>
+ xsl:use-attribute-sets="foil.master.properties">
+ <fo:region-body xsl:use-attribute-sets="foil.region-body.properties"/>
+ <fo:region-before region-name="xsl-region-before-foil" xsl:use-attribute-sets="foil.region-before.properties"/>
+ <fo:region-after region-name="xsl-region-after-foil" xsl:use-attribute-sets="foil.region-after.properties"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="slides-foil-continued-master"
- page-width="{$page.width}"
- page-height="{$page.height}"
- margin-top="{$page.margin.top}"
- margin-bottom="{$page.margin.bottom}"
- margin-left="{$page.margin.inner}"
- margin-right="{$page.margin.outer}">
- <fo:region-body margin-bottom="{$body.margin.bottom}"
- margin-top="{$body.margin.top}"
- column-count="{$column.count.body}">
- </fo:region-body>
- <fo:region-before region-name="xsl-region-before-foil-continued"
- extent="{$region.before.extent}"
- display-align="before"/>
- <fo:region-after region-name="xsl-region-after-foil-continued"
- extent="{$region.after.extent}"
- display-align="after"/>
+ xsl:use-attribute-sets="foil.master.properties">
+ <fo:region-body xsl:use-attribute-sets="foil.region-body.properties"/>
+ <fo:region-before region-name="xsl-region-before-foil-continued" xsl:use-attribute-sets="foil.region-before.properties"/>
+ <fo:region-after region-name="xsl-region-after-foil-continued" xsl:use-attribute-sets="foil.region-after.properties"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="slides-titlepage">
@@ -168,355 +151,408 @@
</fo:page-sequence-master>
</xsl:template>
-<xsl:template match="*" mode="running.head.mode">
- <xsl:param name="master-reference" select="'unknown'"/>
- <!-- use the foilgroup title if there is one -->
- <fo:static-content flow-name="xsl-region-before-foil">
- <fo:block background-color="white"
- color="black"
- font-size="{$foil.title.size}"
- font-weight="bold"
- text-align="center"
- font-family="{$slide.title.font.family}">
- <xsl:apply-templates select="title" mode="titlepage.mode"/>
- </fo:block>
- </fo:static-content>
-
- <fo:static-content flow-name="xsl-region-before-foil-continued">
- <fo:block background-color="white"
- color="black"
- font-size="{$foil.title.size}"
- font-weight="bold"
- text-align="center"
- font-family="{$slide.title.font.family}">
- <xsl:apply-templates select="title" mode="titlepage.mode"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Continued'"/>
- </xsl:call-template>
- </fo:block>
- </fo:static-content>
+<xsl:template name="presentation.title">
+ <xsl:call-template name="get.title">
+ <xsl:with-param name="ctx" select="/dbs:slides"/>
+ </xsl:call-template>
</xsl:template>
-<xsl:template match="*" mode="running.foot.mode">
- <xsl:param name="master-reference" select="'unknown'"/>
-
- <xsl:variable name="last-slide"
- select="(//foil|//foilgroup)[last()]"/>
-
- <xsl:variable name="last-id">
- <xsl:choose>
- <xsl:when test="$last-slide/@id">
- <xsl:value-of select="$last-slide/@id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="generate-id($last-slide)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+<xsl:template name="slides.bookmarks">
+ <fo:bookmark-tree>
+ <xsl:apply-templates select="/dbs:slides/dbs:foil|/dbs:slides/dbs:foilgroup" mode="bookmark.mode"/>
+ </fo:bookmark-tree>
+</xsl:template>
- <xsl:variable name="content">
- <fo:table table-layout="fixed" width="100%"
- xsl:use-attribute-sets="running.foot.properties">
- <fo:table-column column-number="1" column-width="33%"/>
- <fo:table-column column-number="2" column-width="34%"/>
- <fo:table-column column-number="3" column-width="33%"/>
- <fo:table-body>
- <fo:table-row height="14pt">
- <fo:table-cell text-align="left">
- <fo:block>
- <xsl:if test="self::foil">
- <xsl:choose>
- <xsl:when test="ancestor::foilgroup[1]/titleabbrev">
- <xsl:apply-templates select="ancestor::foilgroup[1]/titleabbrev"
- mode="titlepage.mode"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="ancestor::foilgroup[1]/title"
- mode="titlepage.mode"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </fo:block>
- </fo:table-cell>
- <fo:table-cell text-align="center">
- <fo:block>
- <xsl:if test="/slides/slidesinfo/releaseinfo[@role='copyright']">
- <xsl:apply-templates select="/slides/slidesinfo/releaseinfo[@role='copyright']"
- mode="value"/>
- <xsl:text>&#160;&#160;&#160;</xsl:text>
- </xsl:if>
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="titlepage.mode"/>
- </fo:block>
- </fo:table-cell>
- <fo:table-cell text-align="right">
- <fo:block>
- <fo:page-number/>
- <xsl:text>&#160;/&#160;</xsl:text>
- <fo:page-number-citation ref-id="{$last-id}"/>
- </fo:block>
- </fo:table-cell>
- </fo:table-row>
- </fo:table-body>
- </fo:table>
- </xsl:variable>
+<xsl:template match="dbs:foil|dbs:foilgroup" mode="bookmark.mode">
+ <fo:bookmark>
+ <xsl:attribute name="internal-destination">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
- <fo:static-content flow-name="xsl-region-after-foil">
- <fo:block>
- <xsl:copy-of select="$content"/>
- </fo:block>
- </fo:static-content>
+ <fo:bookmark-title>
+ <xsl:call-template name="get.title"/>
+ </fo:bookmark-title>
- <fo:static-content flow-name="xsl-region-after-foil-continued">
- <fo:block>
- <xsl:copy-of select="$content"/>
- </fo:block>
- </fo:static-content>
+ <xsl:if test="self::dbs:foilgroup">
+ <xsl:apply-templates select="dbs:foil" mode="bookmark.mode"/>
+ </xsl:if>
+ </fo:bookmark>
</xsl:template>
-<xsl:template name="select.user.pagemaster">
- <xsl:param name="element"/>
- <xsl:param name="pageclass"/>
- <xsl:param name="default-pagemaster"/>
+<xsl:template match="db:author" mode="titlepage.mode">
+ <fo:block>
+ <xsl:apply-templates select="db:personname" mode="titlepage.mode"/>
+ </fo:block>
- <xsl:choose>
- <xsl:when test="$element = 'slides'">slides-titlepage</xsl:when>
- <xsl:otherwise>slides-foil</xsl:otherwise>
- </xsl:choose>
+ <fo:block>
+ <xsl:apply-templates select="db:affiliation" mode="titlepage.mode"/>
+ </fo:block>
+
+ <fo:block>
+ <xsl:apply-templates select="db:email" mode="titlepage.mode"/>
+ </fo:block>
</xsl:template>
-<xsl:template match="slides">
- <xsl:variable name="master-reference">
- <xsl:call-template name="select.pagemaster"/>
- </xsl:variable>
+<xsl:template match="/">
+ <fo:root xsl:use-attribute-sets="slides.properties">
+ <fo:layout-master-set>
+ <xsl:call-template name="user.pagemasters"/>
+ </fo:layout-master-set>
- <fo:page-sequence hyphenate="{$hyphenate}"
- master-reference="{$master-reference}">
- <xsl:attribute name="language">
- <xsl:call-template name="l10n.language"/>
- </xsl:attribute>
+ <xsl:call-template name="slides.bookmarks"/>
- <xsl:apply-templates select="." mode="running.head.mode">
- <xsl:with-param name="master-reference" select="$master-reference"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="." mode="running.foot.mode">
- <xsl:with-param name="master-reference" select="$master-reference"/>
- </xsl:apply-templates>
- <fo:flow flow-name="xsl-region-body">
- <fo:block>
- <xsl:call-template name="anchor">
- <xsl:with-param name="conditional" select="0"/>
- </xsl:call-template>
- <xsl:call-template name="slides.titlepage"/>
- <xsl:apply-templates select="speakernotes"/>
- </fo:block>
- </fo:flow>
- </fo:page-sequence>
- <xsl:apply-templates select="foil|foilgroup"/>
-</xsl:template>
+ <xsl:if test="$generate.titlepage != 0">
+ <fo:page-sequence hyphenate="{$hyphenate}"
+ master-reference="slides-titlepage">
+ <xsl:attribute name="language">
+ <xsl:call-template name="l10n.language"/>
+ </xsl:attribute>
-<xsl:template match="slidesinfo"/>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+ <xsl:apply-templates select="/dbs:slides" mode="titlepage"/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </xsl:if>
-<xsl:template match="slides" mode="title.markup">
- <xsl:param name="allow-anchors" select="'0'"/>
- <xsl:apply-templates select="(slidesinfo/title|title)[1]"
- mode="title.markup">
- <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
- </xsl:apply-templates>
+ <xsl:apply-templates select="/dbs:slides/dbs:foil|/dbs:slides/dbs:foilgroup"/>
+ </fo:root>
</xsl:template>
-<!-- ============================================================ -->
-
-<xsl:template name="foilgroup.titlepage">
- <fo:block background-color="black"
- color="white"
- font-size="{$foil.title.size}"
- font-weight="bold"
- text-align="center"
- padding-top="12pt"
- padding-bottom="12pt"
- space-after="1em">
- <xsl:apply-templates select="title" mode="titlepage.mode"/>
- </fo:block>
+<xsl:template match="dbs:slides" mode="titlepage">
+ <xsl:call-template name="slides.titlepage"/>
</xsl:template>
-<xsl:template match="foilgroup">
- <xsl:variable name="master-reference">
- <xsl:call-template name="select.pagemaster"/>
- </xsl:variable>
+<xsl:template name="page.template">
+ <xsl:param name="mode" select="'normal'"/>
- <fo:page-sequence hyphenate="{$hyphenate}"
- master-reference="{$master-reference}">
- <xsl:call-template name="anchor">
- <xsl:with-param name="conditional" select="0"/>
- </xsl:call-template>
+ <xsl:param name="title">
+ <xsl:call-template name="get.title"/>
+ </xsl:param>
+
+ <xsl:param name="subtitle">
+ <xsl:call-template name="get.subtitle"/>
+ </xsl:param>
+
+ <fo:page-sequence master-reference="slides-foil" xsl:use-attribute-sets="foil.page-sequence.properties">
<xsl:attribute name="language">
<xsl:call-template name="l10n.language"/>
</xsl:attribute>
- <xsl:apply-templates select="." mode="running.head.mode">
- <xsl:with-param name="master-reference" select="$master-reference"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="." mode="running.foot.mode">
- <xsl:with-param name="master-reference" select="$master-reference"/>
- </xsl:apply-templates>
+ <xsl:attribute name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
- <fo:flow flow-name="xsl-region-body">
- <fo:block>
- <xsl:if test="*[not(self::foil)]">
- <fo:block xsl:use-attribute-sets="foil.properties" space-after="1em">
- <xsl:apply-templates select="*[not(self::foil)]"/>
- </fo:block>
- </xsl:if>
+ <fo:static-content flow-name="xsl-region-before-foil">
+ <fo:block xsl:use-attribute-sets="foil.header.properties">
+ <fo:block xsl:use-attribute-sets="foil.title.properties">
+ <xsl:value-of select="$title"/>
+ </fo:block>
- <xsl:call-template name="foilgroup.titlepage"/>
+ <fo:block xsl:use-attribute-sets="foil.subtitle.properties">
+ <xsl:value-of select="$subtitle"/>
+ </fo:block>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-before-foil-continued">
+ <fo:block xsl:use-attribute-sets="foil.header.properties">
+ <fo:block xsl:use-attribute-sets="foil.title.properties">
+ <xsl:value-of select="$title"/>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Continued'"/>
+ </xsl:call-template>
+ </fo:block>
+ </fo:block>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-after-foil">
+ <xsl:call-template name="generate.footer"/>
+ </fo:static-content>
+
+ <fo:static-content flow-name="xsl-region-after-foil-continued">
+ <xsl:call-template name="generate.footer"/>
+ </fo:static-content>
+
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block xsl:use-attribute-sets="foil.properties">
+ <xsl:choose>
+ <xsl:when test="$mode = 'normal'">
+ <xsl:apply-templates select="*[not(self::dbs:foil)][not(self::db:info)][not(self::db:title)][not(self::db:titleabbrev)][not(self::db:subtitle)][not(self::dbs:speakernotes)][not(self::dbs:handoutnotes)]"/>
+
+ <xsl:if test="self::dbs:foilgroup and ($generate.foilgroup.toc != 0)">
+ <xsl:call-template name="foilgroup.generate.toc"/>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:when test="$mode = 'speakernotes'">
+ <xsl:apply-templates select="dbs:speakernotes"/>
+ </xsl:when>
+
+ <xsl:when test="$mode = 'handoutnotes'">
+ <xsl:apply-templates select="dbs:handoutnotes"/>
+ </xsl:when>
+ </xsl:choose>
</fo:block>
</fo:flow>
</fo:page-sequence>
- <xsl:apply-templates select="foil"/>
</xsl:template>
-<xsl:template match="foilgroup/title"/>
-<xsl:template match="foilgroup/titleabbrev"/>
+<xsl:template match="dbs:foil|dbs:foilgroup">
+ <xsl:call-template name="page.template"/>
-<xsl:template match="foilgroup/titleabbrev" mode="titlepage.mode">
- <xsl:apply-templates/>
+ <xsl:call-template name="generate.slide.notes"/>
+
+ <xsl:if test="self::dbs:foilgroup">
+ <xsl:apply-templates select="dbs:foil"/>
+ </xsl:if>
</xsl:template>
-<xsl:template match="slides/foilgroup/title" mode="titlepage.mode">
- <xsl:apply-templates/>
+<xsl:template name="generate.slide.notes">
+ <xsl:variable name="subtitle.handoutnotes">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Handoutnotes'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="subtitle.speakernotes">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Speakernotes'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="($generate.handoutnotes != 0) and ./dbs:handoutnotes">
+ <xsl:call-template name="page.template">
+ <xsl:with-param name="mode" select="'handoutnotes'"/>
+ <xsl:with-param name="subtitle" select="$subtitle.handoutnotes"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="($generate.speakernotes != 0) and ./dbs:speakernotes">
+ <xsl:call-template name="page.template">
+ <xsl:with-param name="mode" select="'speakernotes'"/>
+ <xsl:with-param name="subtitle" select="$subtitle.speakernotes"/>
+ </xsl:call-template>
+ </xsl:if>
</xsl:template>
-<xsl:template match="title" mode="foilgroup.titlepage.recto.mode">
- <fo:block>
- <fo:inline color="white">.</fo:inline>
- <fo:block space-before="2in">
- <xsl:apply-templates select="." mode="titlepage.mode"/>
- </fo:block>
+<xsl:template match="dbs:handoutnotes">
+ <fo:block xsl:use-attribute-sets="handoutnotes.properties">
+ <xsl:apply-templates/>
</fo:block>
</xsl:template>
-<xsl:template match="foilgroupinfo"/>
-
-<!-- ============================================================ -->
-
-<!--
-<xsl:template name="foil.titlepage">
- <fo:block background-color="white"
- color="black"
- font-size="{$foil.title.size}"
- font-weight="bold"
- text-align="center"
- padding-top="12pt"
- padding-bottom="12pt"
- space-after="1em">
- <xsl:apply-templates select="title" mode="titlepage.mode"/>
+<xsl:template match="dbs:speakernotes">
+ <fo:block xsl:use-attribute-sets="speakernotes.properties">
+ <xsl:apply-templates/>
</fo:block>
</xsl:template>
--->
-
-<xsl:template match="foil">
- <xsl:variable name="master-reference">
- <xsl:call-template name="select.pagemaster"/>
- </xsl:variable>
- <fo:page-sequence hyphenate="{$hyphenate}"
- master-reference="{$master-reference}">
- <xsl:call-template name="anchor">
- <xsl:with-param name="conditional" select="0"/>
- </xsl:call-template>
- <xsl:attribute name="language">
- <xsl:call-template name="l10n.language"/>
- </xsl:attribute>
+<xsl:template match="dbs:block">
+ <xsl:apply-templates/>
+</xsl:template>
- <xsl:apply-templates select="." mode="running.head.mode">
- <xsl:with-param name="master-reference" select="$master-reference"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="." mode="running.foot.mode">
- <xsl:with-param name="master-reference" select="$master-reference"/>
- </xsl:apply-templates>
- <fo:flow flow-name="xsl-region-body">
- <fo:block>
- <fo:block xsl:use-attribute-sets="foil.properties">
- <xsl:apply-templates/>
- </fo:block>
- </fo:block>
- </fo:flow>
- </fo:page-sequence>
+<xsl:template name="generate.footer">
+<fo:block xsl:use-attribute-sets="foil.footer.properties">
+ <fo:table>
+ <fo:table-column column-number="1" column-width="33%"/>
+ <fo:table-column column-number="2" column-width="34%"/>
+ <fo:table-column column-number="3" column-width="33%"/>
+
+ <fo:table-body>
+ <fo:table-row height="14pt">
+ <fo:table-cell text-align="left">
+ <xsl:call-template name="footer.left"/>
+ </fo:table-cell>
+
+ <fo:table-cell text-align="center">
+ <xsl:call-template name="footer.center"/>
+ </fo:table-cell>
+
+ <fo:table-cell text-align="right">
+ <xsl:call-template name="footer.right"/>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+</fo:block>
</xsl:template>
-<xsl:template match="foilinfo"/>
-<xsl:template match="foil/title"/>
-<xsl:template match="foil/subtitle">
- <fo:block xsl:use-attribute-sets="foil.subtitle.properties">
- <xsl:apply-templates/>
- </fo:block>
+<xsl:template name="footer.left">
+ <fo:block/>
</xsl:template>
-<xsl:template match="foil/titleabbrev"/>
-<!-- ============================================================ -->
+<xsl:template name="footer.center">
+ <xsl:if test="($generate.copyright != 0) and /dbs:slides/db:info/db:copyright">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:text>&#xa9;</xsl:text>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:value-of select="/dbs:slides/db:info/db:copyright/db:year"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:value-of select="/dbs:slides/db:info/db:copyright/db:holder"/>
+ </fo:block>
+ </xsl:if>
-<xsl:template match="slides" mode="label.markup">
- <xsl:if test="@label">
- <xsl:value-of select="@label"/>
+ <xsl:if test="($generate.pubdate != 0) and /dbs:slides/db:info/db:pubdate">
+ <xsl:call-template name="slide.pubdate"/>
</xsl:if>
</xsl:template>
-<!-- ============================================================ -->
+<xsl:template name="footer.right">
+ <fo:block>
+ <xsl:if test="$generate.page.number != 'no'">
+ <fo:page-number/>
+ </xsl:if>
+
+ <xsl:if test="$generate.page.number = 'full'">
+ <xsl:text>&#160;/&#160;</xsl:text>
+ <fo:page-number-citation>
+ <xsl:attribute name="ref-id">
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="(//dbs:foilgroup|//dbs:foil)[last()]"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </fo:page-number-citation>
+ </xsl:if>
+ </fo:block>
+</xsl:template>
-<xsl:template match="speakernotes">
- <fo:block xsl:use-attribute-sets="speakernote.properties">
- <xsl:apply-templates/>
+<xsl:template name="slide.pubdate">
+ <fo:block>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Published'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="/dbs:slides/db:info/db:pubdate"/>
</fo:block>
</xsl:template>
-<!-- ============================================================ -->
-<!-- Bookmarks -->
+<xsl:template name="foilgroup.generate.toc">
+ <xsl:choose>
+ <xsl:when test="$generate.foilgroup.numbered.toc != 0">
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing orderedlist.properties">
+ <xsl:for-each select="./dbs:foil">
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="orderedlist.label.properties">
+ <fo:block>
+ <xsl:value-of select="position()"/>
+ </fo:block>
+ </fo:list-item-label>
+
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:call-template name="get.title"/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:for-each>
+ </fo:list-block>
+ </xsl:when>
-<!-- XEP -->
+ <xsl:otherwise>
+ <fo:list-block xsl:use-attribute-sets="list.block.spacing itemizedlist.properties">
+ <xsl:for-each select="./dbs:foil">
+ <fo:list-item xsl:use-attribute-sets="list.item.spacing">
+ <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>
+ </xsl:call-template>
+ </fo:block>
+ </fo:list-item-label>
+
+ <fo:list-item-body start-indent="body-start()">
+ <fo:block>
+ <xsl:call-template name="get.title"/>
+ </fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </xsl:for-each>
+ </fo:list-block>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
-<xsl:template match="slides|foilgroup|foil[not(@role) or @role != 'ENDTITLE']"
- mode="xep.outline">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
- <xsl:variable name="bookmark-label">
- <xsl:apply-templates select="." mode="object.title.markup"/>
- </xsl:variable>
+<xsl:template match="*[namespace-uri() = 'http://www.w3.org/2000/svg']">
+ <xsl:call-template name="handle.embedded">
+ <xsl:with-param name="modeParam" select="$svg.embedding.mode"/>
+ <xsl:with-param name="fileExt" select="'.svg'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="*[namespace-uri() = 'http://www.w3.org/1998/Math/MathML']">
+ <xsl:call-template name="handle.embedded">
+ <xsl:with-param name="modeParam" select="$mml.embedding.mode"/>
+ <xsl:with-param name="fileExt" select="'.mml'"/>
+ </xsl:call-template>
+</xsl:template>
- <!-- 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:template name="handle.embedded">
+ <xsl:param name="modeParam">inline</xsl:param>
+ <xsl:param name="fileExt"/>
<xsl:choose>
- <xsl:when test="parent::*">
- <rx:bookmark internal-destination="{$id}">
- <rx:bookmark-label>
- <xsl:value-of select="$bookmark-label"/>
- </rx:bookmark-label>
- <xsl:apply-templates select="*" mode="xep.outline"/>
- </rx:bookmark>
+ <xsl:when test="$modeParam = 'inline'">
+ <xsl:copy-of select="."/>
+ </xsl:when>
+
+ <xsl:when test="$modeParam = 'instream-foreign-object'">
+ <fo:instream-foreign-object>
+ <xsl:copy-of select="."/>
+ </fo:instream-foreign-object>
</xsl:when>
+
<xsl:otherwise>
- <xsl:if test="$bookmark-label != ''">
- <rx:bookmark internal-destination="{$id}">
- <rx:bookmark-label>
- <xsl:value-of select="$bookmark-label"/>
- </rx:bookmark-label>
- </rx:bookmark>
- </xsl:if>
-
- <xsl:apply-templates select="*" mode="xep.outline"/>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="fname">
+ <xsl:value-of select="concat($id, $fileExt)"/>
+ </xsl:variable>
+ <xsl:variable name="prefix">url('</xsl:variable>
+ <xsl:variable name="suffix">')</xsl:variable>
+ <xsl:variable name="file.uri">
+ <xsl:value-of select="concat($prefix, $fname, $suffix)"/>
+ </xsl:variable>
+
+ <exsl:document href="{$fname}">
+ <xsl:copy-of select="."/>
+
+ <xsl:fallback>
+ <xsl:message terminate="yes">
+ Your XSLT processor does not support exsl:document.
+ You can only use inline SVG images.
+ </xsl:message>
+ </xsl:fallback>
+ </exsl:document>
+
+ <xsl:choose>
+ <xsl:when test="$modeParam = 'external-graphic'">
+ <fo:external-graphic src="{$file.uri}"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ Unknown processing mode <xsl:value-of select="$modeParam"/>.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
-<!-- Handling of xrefs -->
-
-<xsl:template match="foil|foilgroup" mode="xref-to">
+<xsl:template match="dbs:foil|dbs:foilgroup" mode="xref-to">
<xsl:param name="referrer"/>
<xsl:param name="xrefstyle"/>
-
+
<xsl:apply-templates select="." mode="object.xref.markup">
<xsl:with-param name="purpose" select="'xref'"/>
<xsl:with-param name="xrefstyle" select="$xrefstyle"/>
@@ -524,5 +560,4 @@
</xsl:apply-templates>
</xsl:template>
-
</xsl:stylesheet>
diff --git a/slides/graphics/active/arr-next.png b/slides/graphics/active/arr-next.png
deleted file mode 100644
index c8b8674..0000000
--- a/slides/graphics/active/arr-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/arr-prev.png b/slides/graphics/active/arr-prev.png
deleted file mode 100644
index f94e27e..0000000
--- a/slides/graphics/active/arr-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/but-fforward.png b/slides/graphics/active/but-fforward.png
deleted file mode 100644
index 5e74c58..0000000
--- a/slides/graphics/active/but-fforward.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/but-info.png b/slides/graphics/active/but-info.png
deleted file mode 100644
index b01be98..0000000
--- a/slides/graphics/active/but-info.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/but-next.png b/slides/graphics/active/but-next.png
deleted file mode 100644
index 04c9b9b..0000000
--- a/slides/graphics/active/but-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/but-prev.png b/slides/graphics/active/but-prev.png
deleted file mode 100644
index 257f5e3..0000000
--- a/slides/graphics/active/but-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/but-rewind.png b/slides/graphics/active/but-rewind.png
deleted file mode 100644
index e79b22b..0000000
--- a/slides/graphics/active/but-rewind.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/nav-home.png b/slides/graphics/active/nav-home.png
deleted file mode 100644
index 95fe6ee..0000000
--- a/slides/graphics/active/nav-home.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/nav-next.png b/slides/graphics/active/nav-next.png
deleted file mode 100644
index 46aac7d..0000000
--- a/slides/graphics/active/nav-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/nav-prev.png b/slides/graphics/active/nav-prev.png
deleted file mode 100644
index e744535..0000000
--- a/slides/graphics/active/nav-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/nav-toc.png b/slides/graphics/active/nav-toc.png
deleted file mode 100644
index 9b1e0ba..0000000
--- a/slides/graphics/active/nav-toc.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/nav-up.png b/slides/graphics/active/nav-up.png
deleted file mode 100644
index 8ad45eb..0000000
--- a/slides/graphics/active/nav-up.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/w3c-next.png b/slides/graphics/active/w3c-next.png
deleted file mode 100644
index 0752ca6..0000000
--- a/slides/graphics/active/w3c-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/w3c-prev.png b/slides/graphics/active/w3c-prev.png
deleted file mode 100644
index 44bf96f..0000000
--- a/slides/graphics/active/w3c-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/active/w3c-toc.png b/slides/graphics/active/w3c-toc.png
deleted file mode 100644
index bd78803..0000000
--- a/slides/graphics/active/w3c-toc.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/arrow.gif b/slides/graphics/arrow.gif
deleted file mode 100644
index 126f922..0000000
--- a/slides/graphics/arrow.gif
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/blank.gif b/slides/graphics/blank.gif
deleted file mode 100644
index 839cf03..0000000
--- a/slides/graphics/blank.gif
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/blank.png b/slides/graphics/blank.png
deleted file mode 100644
index 8c58c6b..0000000
--- a/slides/graphics/blank.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/hidetoc.gif b/slides/graphics/hidetoc.gif
deleted file mode 100644
index fb58394..0000000
--- a/slides/graphics/hidetoc.gif
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/but-fforward.png b/slides/graphics/inactive/but-fforward.png
deleted file mode 100644
index 8ac7f2e..0000000
--- a/slides/graphics/inactive/but-fforward.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/but-info.png b/slides/graphics/inactive/but-info.png
deleted file mode 100644
index fdf1f1d..0000000
--- a/slides/graphics/inactive/but-info.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/but-next.png b/slides/graphics/inactive/but-next.png
deleted file mode 100644
index fa516b2..0000000
--- a/slides/graphics/inactive/but-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/but-prev.png b/slides/graphics/inactive/but-prev.png
deleted file mode 100644
index dd74e7a..0000000
--- a/slides/graphics/inactive/but-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/but-rewind.png b/slides/graphics/inactive/but-rewind.png
deleted file mode 100644
index e20adfb..0000000
--- a/slides/graphics/inactive/but-rewind.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/nav-home.png b/slides/graphics/inactive/nav-home.png
deleted file mode 100644
index 734845a..0000000
--- a/slides/graphics/inactive/nav-home.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/nav-next.png b/slides/graphics/inactive/nav-next.png
deleted file mode 100644
index 1d32d67..0000000
--- a/slides/graphics/inactive/nav-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/nav-prev.png b/slides/graphics/inactive/nav-prev.png
deleted file mode 100644
index cfca206..0000000
--- a/slides/graphics/inactive/nav-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/nav-toc.png b/slides/graphics/inactive/nav-toc.png
deleted file mode 100644
index d63483b..0000000
--- a/slides/graphics/inactive/nav-toc.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/nav-up.png b/slides/graphics/inactive/nav-up.png
deleted file mode 100644
index 689af7e..0000000
--- a/slides/graphics/inactive/nav-up.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/w3c-next.png b/slides/graphics/inactive/w3c-next.png
deleted file mode 100644
index 400fa60..0000000
--- a/slides/graphics/inactive/w3c-next.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/w3c-prev.png b/slides/graphics/inactive/w3c-prev.png
deleted file mode 100644
index 2717d38..0000000
--- a/slides/graphics/inactive/w3c-prev.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/inactive/w3c-toc.png b/slides/graphics/inactive/w3c-toc.png
deleted file mode 100644
index 458539d..0000000
--- a/slides/graphics/inactive/w3c-toc.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/plus.gif b/slides/graphics/plus.gif
deleted file mode 100644
index 3cd2b08..0000000
--- a/slides/graphics/plus.gif
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/pointer.png b/slides/graphics/pointer.png
deleted file mode 100644
index 35d4830..0000000
--- a/slides/graphics/pointer.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/showtoc.gif b/slides/graphics/showtoc.gif
deleted file mode 100644
index 4cbe4a3..0000000
--- a/slides/graphics/showtoc.gif
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/toc/bullet.png b/slides/graphics/toc/bullet.png
deleted file mode 100644
index 3878b5b..0000000
--- a/slides/graphics/toc/bullet.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/toc/closed.png b/slides/graphics/toc/closed.png
deleted file mode 100644
index b99daf7..0000000
--- a/slides/graphics/toc/closed.png
+++ /dev/null
Binary files differ
diff --git a/slides/graphics/toc/open.png b/slides/graphics/toc/open.png
deleted file mode 100644
index e96afe3..0000000
--- a/slides/graphics/toc/open.png
+++ /dev/null
Binary files differ
diff --git a/slides/html/css.xsl b/slides/html/css.xsl
deleted file mode 100644
index 1692000..0000000
--- a/slides/html/css.xsl
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<!-- ====================================================================== -->
-
-<xsl:template name="css-file">
- <xsl:param name="css" select="'slides.css'"/>
-
- <xsl:variable name="source.css.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'css-stylesheet-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.css.dir != ''">
- <xsl:value-of select="$source.css.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$css.stylesheet.dir != ''">
- <xsl:value-of select="$css.stylesheet.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$css"/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- active navigation images -->
-
-<xsl:template name="css.stylesheet">
- <xsl:param name="css" select="$css.stylesheet"/>
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="css-file">
- <xsl:with-param name="css" select="$css"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/html/default.xsl b/slides/html/default.xsl
deleted file mode 100644
index 00a0d81..0000000
--- a/slides/html/default.xsl
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:output method="html"/>
-
-<xsl:param name="css.stylesheet" select="'slides-default.css'"/>
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <xsl:call-template name="generate.toc.hide.show"/>
- <td align="left" width="10%">
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
-
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>&#160;</xsl:otherwise>
- </xsl:choose>
- </td>
- <td align="center" width="80%">
- <xsl:variable name="prestitle">
- <xsl:value-of select="(/slides/slidesinfo/title
- |/slides/title)[1]"/>
- </xsl:variable>
-
- <span class="navheader">
- <xsl:value-of select="$prestitle"/>
- </span>
- </td>
- <td align="right" width="10%">
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
-
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>&#160;</xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <span class="index">
- <xsl:value-of select="count(preceding::foil)
- + count(preceding::foilgroup)
- + count(ancestor::foilgroup)
- + 1"/>
- </span>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <td align="left" width="10%">
- <span class="toclink">
- <a href="{$toc.html}">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </a>
- </span>
- </td>
- <td align="center" width="80%">
- <xsl:text>&#160;</xsl:text>
- </td>
- <td align="right" width="10%">
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template name="titlepage-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <table width="100%" border="0"
- cellspacing="0" cellpadding="0"
- summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="(following::foilgroup|following::foil)[1]"
- mode="filename"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template name="toc-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <td align="left">
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template name="toc-bottom-nav">
- <div class="navfoot">
- <table width="100%" border="0"
- cellspacing="0" cellpadding="0"
- summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <a href="{$titlefoil.html}">
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="generate.toc.hide.show">
- <xsl:if test="$toc.hide.show != 0">
- <td>
- <img hspace="4" alt="Hide/Show TOC">
- <xsl:attribute name="src">
- <xsl:call-template name="hidetoc.image"/>
- </xsl:attribute>
- <xsl:attribute name="onClick">
- <xsl:text>toggletoc(this,</xsl:text>
- <xsl:value-of select="$toc.width"/>
- <xsl:text>,'</xsl:text>
- <xsl:call-template name="hidetoc.image"/>
- <xsl:text>','</xsl:text>
- <xsl:call-template name="showtoc.image"/>
- <xsl:text>');</xsl:text>
- </xsl:attribute>
- </img>
- </td>
- </xsl:if>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<xsl:template match="html:*" xmlns:html='http://www.w3.org/1999/xhtml'>
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/html/flat.xsl b/slides/html/flat.xsl
deleted file mode 100644
index 30fbf00..0000000
--- a/slides/html/flat.xsl
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:template match="/">
- <html>
- <head>
- <title><xsl:value-of select="/slides/slidesinfo/title"/></title>
- </head>
- <body>
- <xsl:apply-templates/>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="slidesinfo">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div id="{$id}" class="titlepage">
- <div class="titlepage-body">
- <xsl:call-template name="titlepage-body"/>
- </div>
- </div>
-</xsl:template>
-
-<xsl:template match="slides" mode="toc">
- <!-- nop -->
-</xsl:template>
-
-<xsl:template match="foil">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div class="{name(.)}" id="{$id}">
- <div class="foil-body">
- <xsl:call-template name="foil-body"/>
- </div>
- <xsl:call-template name="process.footnotes"/>
- </div>
-</xsl:template>
-
-<xsl:template match="foilgroup">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div class="{name(.)}" id="{$id}">
- <div class="foilgroup-body">
- <xsl:call-template name="foilgroup-body"/>
- </div>
- <xsl:call-template name="process.footnotes"/>
- </div>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="author" mode="titlepage.mode">
- <div class="{name(.)}">
- <h2 class="{name(.)}"><xsl:call-template name="person.name"/></h2>
- <xsl:apply-templates mode="titlepage.mode" select="./contrib"/>
- <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
- </div>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/html/frames.xsl b/slides/html/frames.xsl
deleted file mode 100644
index 05633de..0000000
--- a/slides/html/frames.xsl
+++ /dev/null
@@ -1,2016 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="titlefoil.html" select="concat('titlepg', $html.ext)"/>
-
-<xsl:param name="css.stylesheet" select="'slides-frames.css'"/>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="doctype-public">
- <xsl:param name="frameset" select="0"/>
- <xsl:choose>
- <xsl:when test="$stylesheet.result.type='html'">
- <xsl:choose>
- <!-- Assume when chunker.output.doctype-public is set the user
- wants to have doctypes written out. If frameset is set
- then overide with a frameset public identifier. -->
- <xsl:when test="$chunker.output.doctype-public != '' and $frameset != 0">
- <xsl:text>-//W3C//DTD HTML 4.01 Frameset//EN</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$chunker.output.doctype-public"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$stylesheet.result.type='xhtml'">
- <xsl:choose>
- <xsl:when test="$frameset != 0">
- <xsl:text>-//W3C//DTD XHTML 1.0 Frameset//EN</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>-//W3C//DTD XHTML 1.0 Transitional//EN</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="doctype-system">
- <xsl:param name="frameset" select="0"/>
- <xsl:choose>
- <xsl:when test="$stylesheet.result.type='html'">
- <xsl:choose>
- <!-- Assume when chunker.output.doctype-system is set the user
- wants to have doctypes written out. If frameset is set
- then overide with a frameset system identifier. -->
- <xsl:when test="$chunker.output.doctype-system != '' and $frameset != 0">
- <xsl:text>http://www.w3.org/TR/html4/loose.dtd</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$chunker.output.doctype-system"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$stylesheet.result.type='xhtml'">
- <xsl:choose>
- <xsl:when test="$frameset != 0">
- <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slides">
- <xsl:variable name="title">
- <xsl:choose>
- <xsl:when test="(slidesinfo/titleabbrev|titleabbrev)">
- <xsl:value-of select="(slidesinfo/titleabbrev|titleabbrev)[1]"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="(slidesinfo/title|title)[1]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="toc.rows" select="1+count(//foilgroup)+count(//foil)"/>
- <xsl:variable name="toc.height" select="$toc.rows * $toc.row.height"/>
-
- <xsl:if test="$overlay != 0 and $multiframe != 0">
- <xsl:message terminate='yes'>
- <xsl:text>Multiframe and overlay are mutually exclusive.</xsl:text>
- </xsl:message>
- </xsl:if>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="1"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="1"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,'frames', $html.ext)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="$title"/></title>
- </head>
- <frameset cols="{$toc.width},*" id="topframe">
- <frame src="{concat('toc', $html.ext)}" name="toc" id="toc" frameborder="1"/>
- <frame src="{$titlefoil.html}" name="foil" id="foil"/>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <a href="{concat('titleframe', $html.ext)}">
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </a>
- </body>
- </noframes>
- </frameset>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'toc',$html.ext)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>TOC - <xsl:value-of select="$title"/></title>
- <xsl:call-template name="system.head.content"/>
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0
- or $overlay.logo != ''">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0' or $overlay.logo != ''">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$dynamic.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
-function init() {
- var width = </xsl:text>
-<xsl:value-of select="$toc.width"/>
-<xsl:text>, height = </xsl:text>
-<xsl:value-of select="$toc.row.height"/>
-<xsl:text>;
- myList = new List(true, width, height, "</xsl:text>
-<xsl:value-of select="$toc.bg.color"/>
-<xsl:text>","</xsl:text>
-<xsl:call-template name="plus.image"/>
-<xsl:text>","</xsl:text>
-<xsl:call-template name="minus.image"/>
-<xsl:text>");
-</xsl:text>
-<xsl:apply-templates mode="ns-toc"/>
- <xsl:text disable-output-escaping="yes">
- myList.build(0,0);
-}
- // --&gt;
-</xsl:text>
- </script>
- <style type="text/css">
- <xsl:text>#spacer { position: absolute; height: </xsl:text>
- <xsl:value-of select="$toc.height"/>
- <xsl:text>; }
-</xsl:text>
- </style>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="toc">
- <xsl:call-template name="body.attributes"/>
-
- <xsl:if test="$overlay.logo != ''">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('ll');</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:if test="$dynamic.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>init(</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- <xsl:if test="$overlay.logo != ''">
- <xsl:text>overlaySetup('ll');</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:choose>
- <xsl:when test="$dynamic.toc = 0">
- <div class="toc">
- <xsl:apply-templates mode="toc"/>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <div id="spacer"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="$overlay.logo != ''">
- <div style="position: absolute; visibility: visible;" id="overlayDiv">
- <img src="{$overlay.logo}" alt="logo" vspace="20"/>
- </div>
- </xsl:if>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slidesinfo">
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename"
- select="concat($base.dir,$titlefoil.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <xsl:choose>
- <xsl:when test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="singleframe"/>
- </xsl:otherwise>
- </xsl:choose>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:if test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe-top"/>
- <xsl:apply-templates select="." mode="multiframe-body"/>
- <xsl:apply-templates select="." mode="multiframe-bottom"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
- <xsl:attribute name="onload">
- <xsl:text>javascript:body.focus()</xsl:text>
- </xsl:attribute>
- <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
- </frame>
- <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
- </frame>
- <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
- </frame>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <p>
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </p>
- </body>
- </noframes>
- </frameset>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe-top">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0' or $overlay.logo != ''">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe-body">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Body</title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <xsl:apply-templates select="." mode="singleframe"/>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe-bottom">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="singleframe">
- <xsl:param name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
-
- <body class="titlepage">
- <xsl:call-template name="body.attributes"/>
- <xsl:choose>
- <xsl:when test="$active.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>newPage('</xsl:text>
- <xsl:value-of select="$titlefoil.html"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc');</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onload">
- <xsl:text>this.focus()</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
- <xsl:apply-templates mode="titlepage.mode"/>
- </div>
-
- <xsl:if test="$multiframe=0">
- <div id="overlayDiv" class="navfoot">
- <xsl:choose>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position:absolute;visibility:visible;</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="style">
- <xsl:text>padding-top: 2in;</xsl:text>
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
-
- <table width="100%" border="0"
- cellspacing="0" cellpadding="0"
- summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <!-- suppress copyright here; it's probably already on the titlepage
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- -->
- <xsl:text>&#160;</xsl:text>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </td>
- </tr>
- </table>
- </div>
- </xsl:if>
- </body>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table border="0" width="100%" cellspacing="0" cellpadding="0"
- summary="Navigation table">
- <tr>
- <td align="left" valign="bottom" width="10%">
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- <td width="80%" align="center" valign="bottom">
- <xsl:call-template name="foil.number"/>
- </td>
- <td align="right" valign="bottom" width="10%">
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table border="0" width="100%" cellspacing="0" cellpadding="0"
- summary="Navigation table">
- <tr>
- <td align="left" valign="top">
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- <xsl:text>&#160;</xsl:text>
- </td>
-
- <td align="right" valign="top">
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="foilgroup">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,$thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <xsl:choose>
- <xsl:when test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="singleframe"/>
- </xsl:otherwise>
- </xsl:choose>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:if test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe-top"/>
- <xsl:apply-templates select="." mode="multiframe-body"/>
- <xsl:apply-templates select="." mode="multiframe-bottom"/>
- </xsl:if>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe">
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
- <xsl:attribute name="onload">
- <xsl:text>javascript:body.focus()</xsl:text>
- </xsl:attribute>
- <frame src="top-{$thisfoilgroup}" name="top" id="top" marginheight="0" frameborder="0"/>
- <frame src="body-{$thisfoilgroup}" name="body" id="body" marginheight="0" frameborder="0"/>
- <frame src="bot-{$thisfoilgroup}" name="bottom" id="bottom" marginheight="0" frameborder="0"/>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <p>
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </p>
- </body>
- </noframes>
- </frameset>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe-top">
- <xsl:variable name="foilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'top-',$foilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
- <xsl:call-template name="foilgroup-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe-body">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Body</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <xsl:apply-templates select="." mode="singleframe"/>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe-bottom">
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
- <xsl:call-template name="foilgroup-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="singleframe">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
- <body class="foilgroup">
- <xsl:call-template name="body.attributes"/>
- <xsl:choose>
- <xsl:when test="$active.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>newPage('</xsl:text>
- <xsl:value-of select="$thisfoilgroup"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc');</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:if test="$multiframe=0">
- <xsl:call-template name="foilgroup-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </xsl:if>
-
- <div class="foilgroup-body" id="{$id}">
- <xsl:call-template name="foilgroup-body">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
-
- <xsl:if test="$multiframe=0">
- <div id="overlayDiv">
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position:absolute;visibility:visible;</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="foilgroup-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </xsl:if>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="foil">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <xsl:choose>
- <xsl:when test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="singleframe"/>
- </xsl:otherwise>
- </xsl:choose>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:if test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe-top"/>
- <xsl:apply-templates select="." mode="multiframe-body"/>
- <xsl:apply-templates select="." mode="multiframe-bottom"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe">
- <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
-
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
- <xsl:attribute name="onload">
- <xsl:text>javascript:body.focus()</xsl:text>
- </xsl:attribute>
- <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
- </frame>
- <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
- </frame>
- <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
- </frame>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <p>
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </p>
- </body>
- </noframes>
- </frameset>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe-top">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javajcript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe-body">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Body</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
-
- </head>
- <xsl:apply-templates select="." mode="singleframe"/>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe-bottom">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0
- or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="singleframe">
- <xsl:param name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <body class="foil">
- <xsl:call-template name="body.attributes"/>
- <xsl:choose>
- <xsl:when test="$active.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>newPage('</xsl:text>
- <xsl:value-of select="$thisfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc');</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:if test="$multiframe=0">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </xsl:if>
-
- <div class="foil-body">
- <xsl:apply-templates/>
- </div>
-
- <xsl:if test="$multiframe=0">
- <div id="overlayDiv">
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position:absolute;visibility:visible;</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </xsl:if>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slidesinfo" mode="toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
- <div id="{$id}" class="toc-slidesinfo">
- <a href="{$titlefoil.html}" target="foil">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:apply-templates select="titleabbrev" mode="toc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="title" mode="toc"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- <hr/>
- </div>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="toc">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
-
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <div class="toc-foilgroup" id="{$id}">
- <img alt="-">
- <xsl:attribute name="src">
- <xsl:call-template name="minus.image"/>
- </xsl:attribute>
- </img>
- <a href="{$thisfoilgroup}" target="foil">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:apply-templates select="titleabbrev" mode="toc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="title" mode="toc"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- <xsl:apply-templates select="foil" mode="toc"/>
- </div>
-</xsl:template>
-
-<xsl:template match="foil" mode="toc">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
- <xsl:variable name="foil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <div id="{$id}" class="toc-foil">
- <img alt="-">
- <xsl:attribute name="src">
- <xsl:call-template name="bullet.image"/>
- </xsl:attribute>
- </img>
- <a href="{$foil}" target="foil">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:apply-templates select="titleabbrev" mode="toc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="title" mode="toc"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slidesinfo" mode="ns-toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:text>myList.addItem('</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
- <xsl:value-of select="$id"/>
- <xsl:text disable-output-escaping="yes">" class="toc-slidesinfo"&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
- <xsl:value-of select="$titlefoil.html"/>
- <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
-
- <xsl:call-template name="string.subst">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="target">'</xsl:with-param>
- <xsl:with-param name="replacement">\'</xsl:with-param>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
- <xsl:text>');&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="ns-toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:text>subList = new List(false, width, height, "</xsl:text>
-<xsl:value-of select="$toc.bg.color"/>
-<xsl:text>");&#10;</xsl:text>
- <xsl:text>subList.setIndent(12);&#10;</xsl:text>
- <xsl:apply-templates select="foil" mode="ns-toc"/>
-
- <xsl:text>myList.addList(subList, '</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
- <xsl:value-of select="$id"/>
- <xsl:text disable-output-escaping="yes">" class="toc-foilgroup"&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
- <xsl:apply-templates select="." mode="filename"/>
- <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
-
- <xsl:call-template name="string.subst">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="target">'</xsl:with-param>
- <xsl:with-param name="replacement">\'</xsl:with-param>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
- <xsl:text>');&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="foil" mode="ns-toc">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
-
- <xsl:choose>
- <xsl:when test="ancestor::foilgroup">
- <xsl:text>subList.addItem('</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>myList.addItem('</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
- <xsl:value-of select="$id"/>
- <xsl:text disable-output-escaping="yes">" class="toc-foil"&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;img alt="-" src="</xsl:text>
- <xsl:call-template name="bullet.image"/>
- <xsl:text disable-output-escaping="yes">"&gt;&lt;\/img&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
- <xsl:apply-templates select="." mode="filename"/>
- <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
-
- <xsl:call-template name="string.subst">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="target">'</xsl:with-param>
- <xsl:with-param name="replacement">\'</xsl:with-param>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
- <xsl:text>');&#10;</xsl:text>
-</xsl:template>
-
-<xsl:template match="speakernotes" mode="ns-toc">
- <!-- nop -->
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/html/graphics.xsl b/slides/html/graphics.xsl
deleted file mode 100644
index b682acd..0000000
--- a/slides/html/graphics.xsl
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<!-- ====================================================================== -->
-
-<xsl:template name="graphics-file">
- <xsl:param name="image" select="'bullet.gif'"/>
-
- <xsl:variable name="source.graphics.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'graphics-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.graphics.dir != ''">
- <xsl:value-of select="$source.graphics.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$graphics.dir != ''">
- <xsl:value-of select="$graphics.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://docbook.sourceforge.net/release/slides/graphics/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$image"/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- active navigation images -->
-
-<xsl:template name="toc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$toc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="home.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$home.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="up.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$up.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="prev.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$prev.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="next.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$next.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- inactive navigation images -->
-
-<xsl:template name="no.toc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.toc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.home.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.home.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.up.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.up.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.prev.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.prev.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.next.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.next.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- icon images -->
-
-<xsl:template name="bullet.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$bullet.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="plus.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$plus.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="minus.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$minus.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- hide/show ToC images -->
-
-<xsl:template name="hidetoc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$hidetoc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="showtoc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$showtoc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/html/jscript.xsl b/slides/html/jscript.xsl
deleted file mode 100644
index ae4ef9f..0000000
--- a/slides/html/jscript.xsl
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:output method="html"/>
-
-<xsl:template name="script-dir">
- <xsl:variable name="source.script.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'script-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.script.dir != ''">
- <xsl:value-of select="$source.script.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$script.dir != ''">
- <xsl:value-of select="$script.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="script-file">
- <xsl:param name="js" select="'slides.js'"/>
- <xsl:call-template name="script-dir"/>
- <xsl:value-of select="$js"/>
-</xsl:template>
-
-<xsl:template name="ua.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$ua.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbDOM.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbDOM.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbStyle.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbStyle.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbLibrary.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbLibrary.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbCollapsibleLists.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbCollapsibleLists.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="overlay.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$overlay.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="slides.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$slides.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/html/param.xml b/slides/html/param.xml
deleted file mode 100644
index f4511cc..0000000
--- a/slides/html/param.xml
+++ /dev/null
@@ -1,1376 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<book version="5.0" xml:id="slides">
-<info>
-<title>Slides HTML Parameter Reference</title>
-<releaseinfo role="meta">
-$Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
-</releaseinfo>
-<author>
- <personname>
- <surname>Walsh</surname>
- <firstname>Norman</firstname>
- </personname>
-</author>
-<copyright>
- <year>2002-2011</year>
- <holder>Norman Walsh</holder>
-</copyright>
-<abstract>
- <para>This is reference documentation for all user-configurable
- parameters in the DocBook XSL Slides HTML stylesheet (for
- generating HTML slide presentations). Note that the Slides
- stylesheet for HTML output is a customization layer of the
- DocBook XSL HTML stylesheet. Therefore, in addition to the
- slides-specific parameters listed in this section, you can
- also use a number of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../html/">HTML
- stylesheet parameters</link> to control Slides HTML
- output.</para>
-</abstract>
-</info>
-<reference xml:id="html">
-<title>HTML: General Parameters</title>
-<refentry version="5.0" xml:id="keyboard.nav">
-<refmeta>
-<refentrytitle>keyboard.nav</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>keyboard.nav</refname>
-<refpurpose>Enable keyboard navigation?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="keyboard.nav.frag">
-&lt;xsl:param name="keyboard.nav" select="1"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, JavaScript is added to the slides to enable keyboard
-navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves
-backward.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="css.stylesheet">
-<refmeta>
-<refentrytitle>css.stylesheet</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>css.stylesheet</refname>
-<refpurpose>CSS stylesheet for slides</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="css.stylesheet.frag">
-&lt;xsl:param name="css.stylesheet"&gt;slides.css&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Identifies the CSS stylesheet used by all the slides. This parameter
-can be set in the source document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>css-stylesheet</literal>.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="css.stylesheet.dir">
-<refmeta>
-<refentrytitle>css.stylesheet.dir</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>css.stylesheet.dir</refname>
-<refpurpose>Default directory for CSS stylesheets</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="css.stylesheet.dir.frag">
-&lt;xsl:param name="css.stylesheet.dir"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Identifies the default directory for the CSS stylesheet
-generated on all the slides. This parameter can be set in the source
-document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>css-stylesheet-dir</literal>.</para>
-
-<para>If non-empty, this value is prepended to each of the stylesheets.
-</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="titlefoil.html">
-<refmeta>
-<refentrytitle>titlefoil.html</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>titlefoil.html</refname>
-<refpurpose>Name of title foil HTML file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="titlefoil.html.frag">
-&lt;xsl:param name="titlefoil.html" select="concat('index', $html.ext)"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Sets the filename used for the slides titlepage.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="toc.html">
-<refmeta>
-<refentrytitle>toc.html</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>toc.html</refname>
-<refpurpose>Name of ToC HTML file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="toc.html.frag">
-&lt;xsl:param name="toc.html" select="concat('toc', $html.ext)"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Sets the filename used for the table of contents page.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="foilgroup.toc">
-<refmeta>
-<refentrytitle>foilgroup.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>foilgroup.toc</refname>
-<refpurpose>Put ToC on foilgroup pages?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="foilgroup.toc.frag">
-&lt;xsl:param name="foilgroup.toc" select="1"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, a ToC will be placed on foilgroup pages (after any
-other content).
-</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="output.indent">
-<refmeta>
-<refentrytitle>output.indent</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">no</refmiscinfo>
-<refmiscinfo class="other" otherclass="value">yes</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>output.indent</refname>
-<refpurpose>Indent output?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="output.indent.frag">
-&lt;xsl:param name="output.indent"&gt;no&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the setting of the <parameter>indent</parameter>
-parameter on the HTML slides. For more information, see the discussion
-of the <tag>xsl:output</tag> element in the XSLT specification.</para>
-<para>Select from <literal>yes</literal> or <literal>no</literal>.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="overlay">
-<refmeta>
-<refentrytitle>overlay</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>overlay</refname>
-<refpurpose>Overlay footer navigation?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="overlay.frag">
-&lt;xsl:param name="overlay" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, JavaScript is added to the slides to make the
-bottom navigation appear at the bottom of each page. This option and
-<link linkend="multiframe">multiframe</link> are mutually exclusive.</para>
-
-<para>If this parameter is zero, the bottom navigation simply appears
-below the content of each slide.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="show.foil.number">
-<refmeta>
-<refentrytitle>show.foil.number</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>show.foil.number</refname>
-<refpurpose>Show foil number on each foil?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="show.foil.number.frag">
-&lt;xsl:param name="show.foil.number" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, on each slide there will be its number. Currently
-not supported in all output formats.</para>
-
-</refsection>
-</refentry>
-
-</reference>
-<reference xml:id="frames">
-<title>HTML: Frames Parameters</title>
-<refentry version="5.0" xml:id="nav.separator">
-<refmeta>
-<refentrytitle>nav.separator</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>nav.separator</refname>
-<refpurpose>Output separator between navigation and body?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="nav.separator.frag">
-&lt;xsl:param name="nav.separator" select="1"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, a separator (<literal>&lt;HR&gt;</literal>) is
-added between the navigation links and the content of each slide.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="toc.row.height">
-<refmeta>
-<refentrytitle>toc.row.height</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>toc.row.height</refname>
-<refpurpose>Height of ToC rows in dynamic ToCs</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="toc.row.height.frag">
-&lt;xsl:param name="toc.row.height"&gt;22&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>This parameter specifies the height of each row in the table of
-contents. This is only applicable if a <link linkend="dynamic.toc">dynamic ToC</link> is used. You may want to
-adjust this parameter for optimal appearance with the font and image
-sizes selected by your <link linkend="css.stylesheet">CSS
-stylesheet</link>.
-</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="toc.bg.color">
-<refmeta>
-<refentrytitle>toc.bg.color</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>toc.bg.color</refname>
-<refpurpose>Background color for ToC frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="toc.bg.color.frag">
-&lt;xsl:param name="toc.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the background color used in the ToC frame.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="body.bg.color">
-<refmeta>
-<refentrytitle>body.bg.color</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>body.bg.color</refname>
-<refpurpose>Background color for body frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="body.bg.color.frag">
-&lt;xsl:param name="body.bg.color"&gt;#FFFFFF&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the background color used in the body column of
-tabular slides.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="toc.width">
-<refmeta>
-<refentrytitle>toc.width</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>toc.width</refname>
-<refpurpose>Width of ToC frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="toc.width.frag">
-&lt;xsl:param name="toc.width"&gt;250&lt;/xsl:param&gt;
-&lt;!-- Presumably in pixels? --&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the width of the ToC frame in pixels.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="toc.hide.show">
-<refmeta>
-<refentrytitle>toc.hide.show</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>toc.hide.show</refname>
-<refpurpose>Enable hide/show button for ToC frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="toc.hide.show.frag">
-&lt;xsl:param name="toc.hide.show" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, JavaScript (and an additional icon, see
-<link linkend="hidetoc.image">hidetoc.image</link> and
-<link linkend="hidetoc.image">showtoc.image</link>) is added to each slide
-to allow the ToC panel to be <quote>toggled</quote> on each panel.</para>
-
-<note><para>There is a bug in Mozilla 1.0 (at least as of CR3) that causes
-the browser to reload the titlepage when this feature is used.</para></note>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="dynamic.toc">
-<refmeta>
-<refentrytitle>dynamic.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>dynamic.toc</refname>
-<refpurpose>Dynamic ToCs?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="dynamic.toc.frag">
-&lt;xsl:param name="dynamic.toc" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, JavaScript is used to make the ToC panel <quote>dynamic</quote>.
-In a dynamic ToC, each section in the ToC can be expanded and collapsed by
-clicking on the appropriate image.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="active.toc">
-<refmeta>
-<refentrytitle>active.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>active.toc</refname>
-<refpurpose>Active ToCs?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="active.toc.frag">
-&lt;xsl:param name="active.toc" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, JavaScript is used to keep the ToC and the current slide
-<quote>in sync</quote>. That is, each time the slide changes, the corresponding
-ToC entry will be underlined.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="overlay.logo">
-<refmeta>
-<refentrytitle>overlay.logo</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>overlay.logo</refname>
-<refpurpose>Logo to overlay on ToC frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="overlay.logo.frag">
-&lt;xsl:param name="overlay.logo"&gt;http://docbook.sourceforge.net/release/buttons/slides-1.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If this URI is non-empty, JavaScript is used to overlay the
-specified image on the ToC frame.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="multiframe">
-<refmeta>
-<refentrytitle>multiframe</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>multiframe</refname>
-<refpurpose>Use multiple frames for slide bodies?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="multiframe.frag">
-&lt;xsl:param name="multiframe" select="0"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>If non-zero, multiple frames are used for the body of each
-slide. This is one way of forcing the slide navigation elements to
-appear in constant locations. The other way is with <link linkend="overlay">overlays</link>. The <link linkend="overlay"><parameter>overlay</parameter></link> and
-<parameter>multiframe</parameter> parameters are mutually
-exclusive.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="multiframe.top.bgcolor">
-<refmeta>
-<refentrytitle>multiframe.top.bgcolor</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>multiframe.top.bgcolor</refname>
-<refpurpose>Background color for top navigation frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="multiframe.top.bgcolor.frag">
-&lt;xsl:param name="multiframe.top.bgcolor"&gt;white&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the background color of the top navigation frame when
-<link linkend="multiframe">multiframe</link> is enabled.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="multiframe.bottom.bgcolor">
-<refmeta>
-<refentrytitle>multiframe.bottom.bgcolor</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">color</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>multiframe.bottom.bgcolor</refname>
-<refpurpose>Background color for bottom navigation frame</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="multiframe.bottom.bgcolor.frag">
-&lt;xsl:param name="multiframe.bottom.bgcolor"&gt;white&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the background color of the bottom navigation frame when
-<link linkend="multiframe">multiframe</link> is enabled.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="multiframe.navigation.height">
-<refmeta>
-<refentrytitle>multiframe.navigation.height</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>multiframe.navigation.height</refname>
-<refpurpose>Height of navigation frames</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="multiframe.navigation.height.frag">
-&lt;xsl:param name="multiframe.navigation.height"&gt;40&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the height of the navigation frames in pixels when
-<link linkend="multiframe">multiframe</link> is enabled.</para>
-
-</refsection>
-</refentry>
-
-</reference>
-<reference xml:id="graphics">
-<title>HTML: Graphics Parameters</title>
-<refentry version="5.0" xml:id="graphics.dir">
-<refmeta>
-<refentrytitle>graphics.dir</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>graphics.dir</refname>
-<refpurpose>Graphics directory</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="graphics.dir.frag">
-&lt;xsl:param name="graphics.dir"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Identifies the graphics directory for the navigation components
-generated on all the slides. This parameter can be set in the source
-document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>graphics-dir</literal>.</para>
-
-<para>If non-empty, this value is prepended to each of the graphic
-image paths.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="bullet.image">
-<refmeta>
-<refentrytitle>bullet.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>bullet.image</refname>
-<refpurpose>Bullet image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="bullet.image.frag">
-&lt;xsl:param name="bullet.image"&gt;toc/bullet.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the bullet image used for foils in the
-framed ToC.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="next.image">
-<refmeta>
-<refentrytitle>next.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>next.image</refname>
-<refpurpose>Right-arrow image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="next.image.frag">
-&lt;xsl:param name="next.image"&gt;active/nav-next.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the right-pointing navigation arrow.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="prev.image">
-<refmeta>
-<refentrytitle>prev.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>prev.image</refname>
-<refpurpose>Left-arrow image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="prev.image.frag">
-&lt;xsl:param name="prev.image"&gt;active/nav-prev.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the left-pointing navigation arrow.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="up.image">
-<refmeta>
-<refentrytitle>up.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>up.image</refname>
-<refpurpose>Up-arrow image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="up.image.frag">
-&lt;xsl:param name="up.image"&gt;active/nav-up.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the upward-pointing navigation arrow.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="home.image">
-<refmeta>
-<refentrytitle>home.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>home.image</refname>
-<refpurpose>Home image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="home.image.frag">
-&lt;xsl:param name="home.image"&gt;active/nav-home.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the home navigation icon.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="toc.image">
-<refmeta>
-<refentrytitle>toc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>toc.image</refname>
-<refpurpose>ToC image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="toc.image.frag">
-&lt;xsl:param name="toc.image"&gt;active/nav-toc.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the ToC navigation icon.</para>
-
-</refsection>
-</refentry>
-
-
-<refentry version="5.0" xml:id="no.next.image">
-<refmeta>
-<refentrytitle>no.next.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>no.next.image</refname>
-<refpurpose>Inactive right-arrow image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="no.next.image.frag">
-&lt;xsl:param name="no.next.image"&gt;inactive/nav-next.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the inactive right-pointing navigation arrow.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="no.prev.image">
-<refmeta>
-<refentrytitle>no.prev.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>no.prev.image</refname>
-<refpurpose>Inactive left-arrow image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="no.prev.image.frag">
-&lt;xsl:param name="no.prev.image"&gt;inactive/nav-prev.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the inactive left-pointing navigation arrow.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="no.up.image">
-<refmeta>
-<refentrytitle>no.up.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>no.up.image</refname>
-<refpurpose>Inactive up-arrow image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="no.up.image.frag">
-&lt;xsl:param name="no.up.image"&gt;inactive/nav-up.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the inactive upward-pointing navigation arrow.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="no.home.image">
-<refmeta>
-<refentrytitle>no.home.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>no.home.image</refname>
-<refpurpose>Inactive home image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="no.home.image.frag">
-&lt;xsl:param name="no.home.image"&gt;inactive/nav-home.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the inactive home navigation icon.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="no.toc.image">
-<refmeta>
-<refentrytitle>no.toc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>no.toc.image</refname>
-<refpurpose>Inactive ToC image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="no.toc.image.frag">
-&lt;xsl:param name="no.toc.image"&gt;inactive/nav-toc.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the inactive ToC navigation icon.</para>
-
-</refsection>
-</refentry>
-
-
-<refentry version="5.0" xml:id="plus.image">
-<refmeta>
-<refentrytitle>plus.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>plus.image</refname>
-<refpurpose>Plus image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="plus.image.frag">
-&lt;xsl:param name="plus.image"&gt;toc/closed.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the <quote>plus</quote> image; the image used in a
-<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
-can be expanded.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="minus.image">
-<refmeta>
-<refentrytitle>minus.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>minus.image</refname>
-<refpurpose>Minus image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="minus.image.frag">
-&lt;xsl:param name="minus.image"&gt;toc/open.png&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the <quote>minus</quote> image; the image used in a
-<link linkend="dynamic.toc">dynamic ToC</link> to indicate that a section
-can be collapsed.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="hidetoc.image">
-<refmeta>
-<refentrytitle>hidetoc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>hidetoc.image</refname>
-<refpurpose>Hide ToC image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="hidetoc.image.frag">
-&lt;xsl:param name="hidetoc.image"&gt;hidetoc.gif&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the <quote>hide ToC</quote> image. This is used
-when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
-enabled.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="showtoc.image">
-<refmeta>
-<refentrytitle>showtoc.image</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>showtoc.image</refname>
-<refpurpose>Show ToC image</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="showtoc.image.frag">
-&lt;xsl:param name="showtoc.image"&gt;showtoc.gif&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the <quote>show ToC</quote> image. This is used
-when the <link linkend="toc.hide.show">ToC hide/show</link> parameter is
-enabled.</para>
-
-</refsection>
-</refentry>
-
-</reference>
-<reference xml:id="javascript">
-<title>HTML: JavaScript Parameters</title>
-<refentry version="5.0" xml:id="script.dir">
-<refmeta>
-<refentrytitle>script.dir</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>script.dir</refname>
-<refpurpose>Script directory</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="script.dir.frag">
-&lt;xsl:param name="script.dir"&gt;&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Identifies the JavaScript source directory for the slides.
-This parameter can be set in the source
-document with the &lt;?dbhtml?&gt; pseudo-attribute
-<literal>script-dir</literal>.</para>
-
-<para>If non-empty, this value is prepended to each of the JavaScript files.
-</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="ua.js">
-<refmeta>
-<refentrytitle>ua.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>ua.js</refname>
-<refpurpose>UA JavaScript file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="ua.js.frag">
-&lt;xsl:param name="ua.js"&gt;ua.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the UA JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="xbDOM.js">
-<refmeta>
-<refentrytitle>xbDOM.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>xbDOM.js</refname>
-<refpurpose>xbDOM JavaScript file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="xbDOM.js.frag">
-&lt;xsl:param name="xbDOM.js"&gt;xbDOM.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the xbDOM JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="xbStyle.js">
-<refmeta>
-<refentrytitle>xbStyle.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>xbStyle.js</refname>
-<refpurpose>xbStyle JavaScript file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="xbStyle.js.frag">
-&lt;xsl:param name="xbStyle.js"&gt;xbStyle.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the xbStyle JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="xbLibrary.js">
-<refmeta>
-<refentrytitle>xbLibrary.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>xbLibrary.js</refname>
-<refpurpose>xbLibrary JavaScript file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="xbLibrary.js.frag">
-&lt;xsl:param name="xbLibrary.js"&gt;xbLibrary.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the xbLibrary JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="xbCollapsibleLists.js">
-<refmeta>
-<refentrytitle>xbCollapsibleLists.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>xbCollapsibleLists.js</refname>
-<refpurpose>xbCollapsibleLists JavaScript file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="xbCollapsibleLists.js.frag">
-&lt;xsl:param name="xbCollapsibleLists.js"&gt;xbCollapsibleLists.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="overlay.js">
-<refmeta>
-<refentrytitle>overlay.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>overlay.js</refname>
-<refpurpose>Overlay JavaScript file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="overlay.js.frag">
-&lt;xsl:param name="overlay.js"&gt;overlay.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the overlay JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="slides.js">
-<refmeta>
-<refentrytitle>slides.js</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>slides.js</refname>
-<refpurpose>Slides overlay file</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="slides.js.frag">
-&lt;xsl:param name="slides.js"&gt;slides.js&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>Specifies the filename of the slides JavaScript file. It's unlikely
-that you will ever need to change this parameter.</para>
-
-</refsection>
-</refentry>
-
-</reference>
-<reference xml:id="l10n">
-<title>HTML: Localization Parameters</title>
-<refentry version="5.0" xml:id="text.home">
-<refmeta>
-<refentrytitle>text.home</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>text.home</refname>
-<refpurpose>Home</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="text.home.frag">
-&lt;xsl:param name="text.home"&gt;Home&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME:</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="text.toc">
-<refmeta>
-<refentrytitle>text.toc</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>text.toc</refname>
-<refpurpose>FIXME:</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="text.toc.frag">
-&lt;xsl:param name="text.toc"&gt;ToC&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME:</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="text.prev">
-<refmeta>
-<refentrytitle>text.prev</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>text.prev</refname>
-<refpurpose>FIXME:</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="text.prev.frag">
-&lt;xsl:param name="text.prev"&gt;Prev&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME:</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="text.up">
-<refmeta>
-<refentrytitle>text.up</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>text.up</refname>
-<refpurpose>FIXME:</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="text.up.frag">
-&lt;xsl:param name="text.up"&gt;Up&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME:</para>
-
-</refsection>
-</refentry>
-
-<refentry version="5.0" xml:id="text.next">
-<refmeta>
-<refentrytitle>text.next</refentrytitle>
-<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>text.next</refname>
-<refpurpose>FIXME:</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<programlisting xml:id="text.next.frag">
-&lt;xsl:param name="text.next"&gt;Next&lt;/xsl:param&gt;
-</programlisting>
-</refsynopsisdiv>
-
-<refsection><info><title>Description</title></info>
-
-<para>FIXME:</para>
-
-</refsection>
-</refentry>
-
-
-
-</reference>
-<appendix xml:id="styleheet"><title>The Stylesheet</title>
-
-<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
-around all these parameters.</para>
-
-<programlisting xml:id="top">
-
-&lt;!-- This file is generated from param.xweb --&gt;
-
-&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
-
-&lt;!-- ********************************************************************
- $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
- ********************************************************************
-
- This file is part of the DocBook Slides Stylesheet distribution.
- See ../README or http://docbook.sf.net/release/xsl/current/ for
- copyright and other information.
-
- ******************************************************************** --&gt;
-
-&lt;src:fragref linkend="active.toc.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="body.bg.color.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="bullet.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="css.stylesheet.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="css.stylesheet.dir.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="dynamic.toc.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="foilgroup.toc.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="graphics.dir.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="hidetoc.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="home.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="keyboard.nav.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="minus.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="multiframe.bottom.bgcolor.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="multiframe.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="multiframe.navigation.height.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="multiframe.top.bgcolor.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="nav.separator.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="next.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="no.home.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="no.next.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="no.prev.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="no.toc.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="no.up.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="output.indent.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="overlay.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="overlay.js.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="overlay.logo.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="plus.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="prev.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="script.dir.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="show.foil.number.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="showtoc.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="slides.js.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="text.home.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="text.next.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="text.prev.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="text.toc.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="text.up.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="titlefoil.html.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="toc.bg.color.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="toc.hide.show.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="toc.html.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="toc.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="toc.row.height.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="toc.width.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="ua.js.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="up.image.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="xbCollapsibleLists.js.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="xbDOM.js.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="xbStyle.js.frag"&gt;&lt;/src:fragref&gt;
-&lt;src:fragref linkend="xbLibrary.js.frag"&gt;&lt;/src:fragref&gt;
-
-&lt;/xsl:stylesheet&gt;
-</programlisting>
-
-</appendix>
-</book>
diff --git a/slides/html/param.xsl b/slides/html/param.xsl
deleted file mode 100644
index 2d69441..0000000
--- a/slides/html/param.xsl
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file is generated from param.xweb -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<!-- ********************************************************************
- $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
- ********************************************************************
-
- This file is part of the DocBook Slides Stylesheet distribution.
- See ../README or http://docbook.sf.net/release/xsl/current/ for
- copyright and other information.
-
- ******************************************************************** -->
-
-<xsl:param name="active.toc" select="0"/>
-<xsl:param name="body.bg.color">#FFFFFF</xsl:param>
-<xsl:param name="bullet.image">toc/bullet.png</xsl:param>
-<xsl:param name="css.stylesheet">slides.css</xsl:param>
-<xsl:param name="css.stylesheet.dir"/>
-<xsl:param name="dynamic.toc" select="0"/>
-<xsl:param name="foilgroup.toc" select="1"/>
-<xsl:param name="graphics.dir"/>
-<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param>
-<xsl:param name="home.image">active/nav-home.png</xsl:param>
-<xsl:param name="keyboard.nav" select="1"/>
-<xsl:param name="minus.image">toc/open.png</xsl:param>
-<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param>
-<xsl:param name="multiframe" select="0"/>
-<xsl:param name="multiframe.navigation.height">40</xsl:param>
-<xsl:param name="multiframe.top.bgcolor">white</xsl:param>
-<xsl:param name="nav.separator" select="1"/>
-<xsl:param name="next.image">active/nav-next.png</xsl:param>
-<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param>
-<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param>
-<xsl:param name="no.prev.image">inactive/nav-prev.png</xsl:param>
-<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param>
-<xsl:param name="no.up.image">inactive/nav-up.png</xsl:param>
-<xsl:param name="output.indent">no</xsl:param>
-<xsl:param name="overlay" select="0"/>
-<xsl:param name="overlay.js">overlay.js</xsl:param>
-<xsl:param name="overlay.logo">http://docbook.sourceforge.net/release/buttons/slides-1.png</xsl:param>
-<xsl:param name="plus.image">toc/closed.png</xsl:param>
-<xsl:param name="prev.image">active/nav-prev.png</xsl:param>
-<xsl:param name="script.dir"/>
-<xsl:param name="show.foil.number" select="0"/>
-<xsl:param name="showtoc.image">showtoc.gif</xsl:param>
-<xsl:param name="slides.js">slides.js</xsl:param>
-<xsl:param name="text.home">Home</xsl:param>
-<xsl:param name="text.next">Next</xsl:param>
-<xsl:param name="text.prev">Prev</xsl:param>
-<xsl:param name="text.toc">ToC</xsl:param>
-<xsl:param name="text.up">Up</xsl:param>
-<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
-<xsl:param name="toc.bg.color">#FFFFFF</xsl:param>
-<xsl:param name="toc.hide.show" select="0"/>
-<xsl:param name="toc.html" select="concat('toc', $html.ext)"/>
-<xsl:param name="toc.image">active/nav-toc.png</xsl:param>
-<xsl:param name="toc.row.height">22</xsl:param>
-<xsl:param name="toc.width">250</xsl:param>
-<!-- Presumably in pixels? -->
-<xsl:param name="ua.js">ua.js</xsl:param>
-<xsl:param name="up.image">active/nav-up.png</xsl:param>
-<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param>
-<xsl:param name="xbDOM.js">xbDOM.js</xsl:param>
-<xsl:param name="xbStyle.js">xbStyle.js</xsl:param>
-<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param>
-
-</xsl:stylesheet>
-
diff --git a/slides/html/plain.xsl b/slides/html/plain.xsl
deleted file mode 100644
index 47224da..0000000
--- a/slides/html/plain.xsl
+++ /dev/null
@@ -1,472 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="prev.image" select="'active/nav-prev.png'"/>
-<xsl:param name="next.image" select="'active/nav-next.png'"/>
-<xsl:param name="up.image" select="'active/nav-up.png'"/>
-<xsl:param name="toc.image" select="'active/nav-toc.png'"/>
-<xsl:param name="home.image" select="'active/nav-home.png'"/>
-
-<xsl:param name="no.prev.image" select="'inactive/nav-prev.png'"/>
-<xsl:param name="no.next.image" select="'inactive/nav-next.png'"/>
-<xsl:param name="no.up.image" select="'inactive/nav-up.png'"/>
-<xsl:param name="no.toc.image" select="'inactive/nav-toc.png'"/>
-<xsl:param name="no.home.image" select="'inactive/nav-home.png'"/>
-
-<xsl:param name="css.stylesheet" select="'slides-plain.css'"/>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="top-nav">
- <xsl:param name="prev"/>
- <xsl:param name="next"/>
- <xsl:param name="up"/>
- <xsl:param name="home"/>
- <xsl:param name="toc" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <td align="left" width="45%">
- <span class="slidestitle">
- <xsl:value-of select="(/slides/slidesinfo/title)[1]"/>
- </span>
- <xsl:text>&#160;</xsl:text>
- </td>
- <td width="10%" align="center" valign="bottom">
- <xsl:call-template name="foil.number"/>
- </td>
- <td align="right" width="45%">
- <xsl:choose>
- <xsl:when test="$home">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$home/slidesinfo/title"/>
- </xsl:attribute>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$toc != ''">
- <a title="ToC" href="{$toc}">
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prev/title"/>
- </xsl:attribute>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$up/title"/>
- </xsl:attribute>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next"/>
- <xsl:param name="toc" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <td align="left" width="50%">
- <xsl:text>&#160;</xsl:text>
- </td>
- <td align="right" width="50%">
- <xsl:choose>
- <xsl:when test="$home">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$home/slidesinfo/title"/>
- </xsl:attribute>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$toc.html != ''">
- <a title="ToC" href="{$toc.html}">
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prev/title"/>
- </xsl:attribute>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$up/title"/>
- </xsl:attribute>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template name="toc-top-nav">
- <xsl:param name="home" select="/slides"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next" select="(foil|foilgroup)[1]"/>
- <xsl:param name="toc"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0"
- summary="Navigation">
- <tr>
- <td align="left" width="50%">
- <xsl:text>&#160;</xsl:text>
- </td>
- <td align="right" width="50%">
- <xsl:choose>
- <xsl:when test="$home">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$home/slidesinfo/title"/>
- </xsl:attribute>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$toc != ''">
- <a title="ToC" href="{$toc}">
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prev/title"/>
- </xsl:attribute>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$up/title"/>
- </xsl:attribute>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="bottom-nav"/>
-
-</xsl:stylesheet>
diff --git a/slides/html/slides-common.xsl b/slides/html/slides-common.xsl
deleted file mode 100644
index 9848586..0000000
--- a/slides/html/slides-common.xsl
+++ /dev/null
@@ -1,1541 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="../../html/chunk.xsl"/>
-<xsl:include href="../../VERSION.xsl"/>
-
-<xsl:include href="param.xsl"/>
-<xsl:include href="jscript.xsl"/>
-<xsl:include href="graphics.xsl"/>
-<xsl:include href="css.xsl"/>
-
-<xsl:output method="html"/>
-
-<xsl:strip-space elements="slides foil foilgroup"/>
-
-<!-- Process the slides -->
-
-<xsl:template match="/">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="slides">
- <xsl:apply-templates select="." mode="toc"/>
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- Every slide has top and bottom navigation -->
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table border="0" width="100%" cellspacing="0" cellpadding="0"
- summary="Navigation table">
- <tr>
- <td align="left" valign="bottom">
- <xsl:if test="$home">
- <span class="slidestitle">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
- </a>
- </span>
- </xsl:if>
- <xsl:text>&#160;</xsl:text>
- </td>
-
- <td align="right" valign="bottom">
- <xsl:choose>
- <xsl:when test="$home">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.home}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.home}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$tocfile">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="$tocfile"/>
- </xsl:attribute>
- <img alt="{$text.toc}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.toc}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.up}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.up}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table border="0" width="100%" cellspacing="0" cellpadding="0"
- summary="Navigation table">
- <tr>
- <td align="left" valign="top">
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- <xsl:text>&#160;</xsl:text>
- </td>
-
- <td align="right" valign="top">
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- Navigation is also provided in the form of links in the head -->
-
-<xsl:template name="links">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:if test="$tocfile != ''">
- <link rel="contents" href="{$tocfile}">
- <xsl:attribute name="title">
- <xsl:value-of select="/slides/slidesinfo/title"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$home">
- <link rel="top">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
-
- <link rel="first">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$up">
- <link rel="up">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($up/title|$up/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$prev">
- <link rel="previous">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($prev/title|$prev/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$next">
- <link rel="next">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- </link>
-
- <xsl:variable name="last" select="$next/following::foil[last()]"/>
- <xsl:if test="$last">
- <link rel="last">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$last" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$last/title"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- </xsl:if>
-
- <xsl:for-each select="foil">
- <link rel="slides">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
-
- <xsl:for-each select="foilgroup|../foilgroup">
- <link rel="section">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- There are four kinds of slides: titlepage, toc, foil, and foilgroup -->
-<!-- titlepage -->
-
-<xsl:template match="slidesinfo">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
- <xsl:variable name="tocfile" select="$toc.html"/>
- <xsl:variable name="dir">
- <xsl:call-template name="dbhtml-dir"/>
- </xsl:variable>
-
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $dir, $titlefoil.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="/slides"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="class">
- <xsl:text>titlepage</xsl:text>
- <xsl:if test="@role">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- </xsl:attribute>
-
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="titlepage" id="{$id}">
- <xsl:call-template name="titlepage-top-nav">
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <div class="titlepage-body">
- <xsl:call-template name="titlepage-body"/>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="titlepage-bottom-nav">
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
- </div>
- </div>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="titlepage-body">
- <div class="{name(.)}">
- <xsl:apply-templates mode="titlepage.mode"/>
- </div>
-</xsl:template>
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="titlepage-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo/title">
- <h1 class="{name(.)}"><xsl:apply-templates/></h1>
-</xsl:template>
-
-<xsl:template match="slidesinfo/authorgroup">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="slidesinfo/author|slidesinfo/authorgroup/author">
- <h1 class="{name(.)}"><xsl:apply-imports/></h1>
-</xsl:template>
-
-<xsl:template match="slidesinfo/releaseinfo">
- <h4 class="{name(.)}"><xsl:apply-templates/></h4>
-</xsl:template>
-
-<xsl:template match="slidesinfo/date">
- <h4 class="{name(.)}"><xsl:apply-templates/></h4>
-</xsl:template>
-
-<xsl:template match="slidesinfo/copyright">
- <!-- nop -->
-</xsl:template>
-
-<!-- On slides, output the credits explicitly each time -->
-<xsl:template match="othercredit" mode="titlepage.mode">
- <xsl:variable name="contrib" select="string(contrib)"/>
- <xsl:choose>
- <xsl:when test="contrib">
- <xsl:call-template name="paragraph">
- <xsl:with-param name="class" select="name(.)"/>
- <xsl:with-param name="content">
- <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
- <xsl:text>: </xsl:text>
- <xsl:call-template name="person.name"/>
- <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="paragraph">
- <xsl:with-param name="class" select="name(.)"/>
- <xsl:with-param name="content">
- <xsl:call-template name="person.name"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- toc -->
-
-<xsl:template match="slides" mode="toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="/slides"/>
- <xsl:variable name="next" select="(foil|foilgroup)[1]"/>
- <xsl:variable name="tocfile" select="''"/>
- <xsl:variable name="dir"> <!-- MJ: added -->
- <xsl:call-template name="dbhtml-dir"/>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $dir, $toc.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="slidesinfo/title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
-
- <body class="tocpage">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div id="{$id}">
- <xsl:call-template name="toc-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <div class="toc-body">
- <xsl:call-template name="toc-body"/>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="toc-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
- </div>
- </div>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="toc-body">
- <h1 class="title">
- <a href="{$titlefoil.html}">
- <xsl:value-of select="/slides/slidesinfo/title"/>
- </a>
- </h1>
-
- <p class="toctitle">
- <b>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </b>
- </p>
- <dl class="toc">
- <xsl:apply-templates select="foilgroup|foil" mode="toc"/>
- </dl>
-</xsl:template>
-
-<xsl:template name="toc-top-nav">
- <xsl:param name="home" select="/slides"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next" select="(foil|foilgroup)[1]"/>
- <xsl:param name="tocfile"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="toc-bottom-nav">
- <xsl:param name="home" select="/slides"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next" select="(foil|foilgroup)[1]"/>
- <xsl:param name="tocfile"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="toc">
- <xsl:param name="recursive" select="1"/>
-
- <dt>
- <xsl:apply-templates select="." mode="number"/>
- <xsl:text>. </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:value-of select="title"/>
- </a>
- </dt>
- <xsl:if test="$recursive != 0">
- <dd>
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </dd>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="foil" mode="toc">
- <dt>
- <xsl:apply-templates select="." mode="number"/>
- <xsl:text>. </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:value-of select="title"/>
- </a>
- </dt>
-</xsl:template>
-
-<xsl:template match="title|titleabbrev" mode="toc">
- <xsl:apply-templates mode="toc"/>
-</xsl:template>
-
-<xsl:template match="speakernotes" mode="toc">
- <!-- nop -->
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- foil -->
-
-<xsl:template match="foil">
- <xsl:param name="thisfoil">
- <xsl:apply-templates select="." mode="chunk-filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil
- |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body>
- <xsl:attribute name="class">
- <xsl:value-of select="local-name(.)"/>
- <xsl:if test="@role">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- </xsl:attribute>
-
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <div class="foil-body">
- <xsl:call-template name="foil-body">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="foil-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template name="foil-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="foil-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil/title">
- <h1 class="{name(.)}">
- <xsl:apply-templates/>
- </h1>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- foilgroup -->
-
-<xsl:template match="foilgroup">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="chunk-filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body>
- <xsl:attribute name="class">
- <xsl:value-of select="local-name(.)"/>
- <xsl:if test="@role">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- </xsl:attribute>
-
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:call-template name="foilgroup-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <!-- n.b. the foilgroup-body template is responsible for generating -->
- <!-- the foilgroup toc -->
- <div class="foilgroup-body">
- <xsl:call-template name="foilgroup-body">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="foilgroup-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="foilgroup/title">
- <h1 class="{name(.)}"><xsl:apply-templates/></h1>
-</xsl:template>
-
-<xsl:template name="foilgroup-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:apply-templates select="*[name(.) != 'foil'
- and name(.) != 'foilgroup']"/>
-
- <xsl:if test="$foilgroup.toc != 0">
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </xsl:if>
-</xsl:template>
-
-<xsl:template name="foilgroup-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="foilgroup-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="overlayDiv.attributes">
- <xsl:choose>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position: absolute; visibility: visible;</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="style">padding-top: 2in;</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="processing-instruction('dbhtml')" mode="css.pi">
- <xsl:variable name="href">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="."/>
- <xsl:with-param name="attribute" select="'css-stylesheet'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:if test="$href!=''">
- <xsl:choose>
- <xsl:when test="$href = ''">
- <!-- nop -->
- </xsl:when>
- <xsl:when test="contains($href, '//')">
- <link type="text/css" rel="stylesheet" href="{$href}"/>
- </xsl:when>
- <xsl:when test="starts-with($href, '/')">
- <link type="text/css" rel="stylesheet" href="{$href}"/>
- </xsl:when>
- <xsl:otherwise>
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css-file">
- <xsl:with-param name="css" select="$href"/>
- </xsl:call-template>
- </xsl:attribute>
- </link>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
-
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="foil" mode="number">
- <xsl:number count="foil|foilgroup" level="any"/>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="number">
- <xsl:number count="foil|foilgroup" level="any"/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slides" mode="filename">
- <xsl:value-of select="$titlefoil.html"/>
-</xsl:template>
-
-<xsl:template match="foil" mode="filename">
- <xsl:text>foil</xsl:text>
- <xsl:number count="foil" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="filename">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="processing-instruction('Pub')">
- <xsl:variable name="pidata"><xsl:value-of select="(.)"/></xsl:variable>
- <xsl:choose>
- <xsl:when test="contains($pidata,'UDT')"></xsl:when>
- <xsl:when test="contains($pidata,'/_font')">
- <xsl:text disable-output-escaping="yes">&lt;/span&gt;</xsl:text>
- </xsl:when>
- <xsl:when test="contains($pidata,'_font')">
- <xsl:text disable-output-escaping="yes">&lt;span </xsl:text>
- <xsl:choose>
- <xsl:when test="contains($pidata,'green')">class="green"</xsl:when>
- <xsl:when test="contains($pidata,'blue')">class="blue"</xsl:when>
- <xsl:when test="contains($pidata,'orange')">class="orange"</xsl:when>
- <xsl:when test="contains($pidata,'red')">class="red"</xsl:when>
- <xsl:when test="contains($pidata,'brown')">class="brown"</xsl:when>
- <xsl:when test="contains($pidata,'violet')">class="violet"</xsl:when>
- <xsl:when test="contains($pidata,'black')">class="black"</xsl:when>
- <xsl:otherwise>class="bold"</xsl:otherwise>
- </xsl:choose>
- <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-<!-- blocks -->
-
-<xsl:template match="figure">
- <div class="{name(.)}">
- <xsl:apply-imports/>
- </div>
- <xsl:if test="following-sibling::*"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template match="copyright" mode="slide.footer.mode">
- <span class="{name(.)}">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Copyright'"/>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="dingbat">
- <xsl:with-param name="dingbat">copyright</xsl:with-param>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="copyright.years">
- <xsl:with-param name="years" select="year"/>
- <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
- <xsl:with-param name="single.year.ranges"
- select="$make.single.year.ranges"/>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:apply-templates select="holder" mode="titlepage.mode"/>
- </span>
-</xsl:template>
-
-<!-- ============================================================ -->
-<!-- inlines -->
-
-<xsl:template match="link">
- <xsl:call-template name="link">
- <xsl:with-param name="a.target" select="'foil'"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="ulink">
- <a>
- <xsl:if test="@id">
- <xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:if>
- <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
- <xsl:if test="$ulink.target != ''">
- <xsl:attribute name="target">
- <xsl:value-of select="$ulink.target"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="count(child::node())=0">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- <xsl:if test="@role='show'">
- <xsl:text> (</xsl:text>
- <xsl:value-of select="@url"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </a>
-</xsl:template>
-
-<xsl:template match="title/ulink">
- <a>
- <xsl:if test="@id">
- <xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:if>
- <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
- <xsl:if test="$ulink.target != ''">
- <xsl:attribute name="target">
- <xsl:value-of select="$ulink.target"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="count(child::node())=0">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
-</xsl:template>
-
-<xsl:template match="subtitle">
- <h2 class="subtitle">
- <xsl:apply-templates/>
- </h2>
-</xsl:template>
-
-<xsl:template match="graphic">
- <center>
- <!-- can't this be done a better way? -->
- <xsl:apply-imports/>
- </center>
-</xsl:template>
-
-<xsl:template match="titleabbrev">
- <!-- nop -->
-</xsl:template>
-
-<xsl:template match="speakernotes">
- <!-- nop -->
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- Chunking for slides -->
-
-<xsl:template name="chunk">
- <xsl:param name="node" select="."/>
- <xsl:choose>
- <xsl:when test="name($node)='slides'">1</xsl:when>
- <xsl:when test="name($node)='foilgroup'">1</xsl:when>
- <xsl:when test="name($node)='foil'">1</xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="*" mode="chunk-filename">
- <xsl:param name="recursive">0</xsl:param>
- <!-- returns the filename of a chunk -->
- <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
- <xsl:variable name="filename">
- <xsl:call-template name="pi.dbhtml_filename"/>
- </xsl:variable>
- <xsl:variable name="dir">
- <xsl:call-template name="dbhtml-dir"/>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$ischunk='0'">
- <!-- if called on something that isn't a chunk, walk up... -->
- <xsl:choose>
- <xsl:when test="count(./parent::*)>0">
- <xsl:apply-templates mode="chunk-filename" select="./parent::*">
- <xsl:with-param name="recursive" select="$recursive"/>
- </xsl:apply-templates>
- </xsl:when>
- <!-- unless there is no up, in which case return "" -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:when test="not($recursive) and $filename != ''">
- <!-- if this chunk has an explicit name, use it -->
- <xsl:if test="$dir != ''">
- <xsl:value-of select="$dir"/>
- <xsl:text>/</xsl:text>
- </xsl:if>
- <xsl:value-of select="$filename"/>
- </xsl:when>
-
- <xsl:when test="name(.)='foil'">
- <xsl:variable name="foilnumber">
- <xsl:number count="foil" level="any"/>
- </xsl:variable>
-
- <xsl:value-of select="$dir"/>
- <xsl:text>foil</xsl:text>
- <xsl:number value="$foilnumber" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:when>
-
- <xsl:when test="name(.)='foilgroup'">
- <xsl:variable name="foilgroupnumber">
- <xsl:number count="foilgroup" level="any" format="01"/>
- </xsl:variable>
-
- <xsl:value-of select="$dir"/>
- <xsl:text>foilgroup</xsl:text>
- <xsl:number value="$foilgroupnumber" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:text>chunk-filename-error-</xsl:text>
- <xsl:value-of select="name(.)"/>
- <xsl:number level="any" format="01" from="set"/>
- <xsl:if test="not($recursive)">
- <xsl:value-of select="$html.ext"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- Handling of xrefs -->
-
-<xsl:template match="foil|foilgroup" mode="xref-to">
- <xsl:param name="referrer"/>
- <xsl:param name="xrefstyle"/>
-
- <xsl:apply-templates select="." mode="object.xref.markup">
- <xsl:with-param name="purpose" select="'xref'"/>
- <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
- <xsl:with-param name="referrer" select="$referrer"/>
- </xsl:apply-templates>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<xsl:template match="html:*" xmlns:html='http://www.w3.org/1999/xhtml'>
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="foil.number">
- <xsl:choose>
- <xsl:when test="$show.foil.number != 0 and self::foil">
- <xsl:number count="foil" level="any"/>
- /
- <xsl:value-of select="count(//foil)"/>
- </xsl:when>
- <xsl:otherwise>
- &#160;
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/html/tables.xsl b/slides/html/tables.xsl
deleted file mode 100644
index 0462528..0000000
--- a/slides/html/tables.xsl
+++ /dev/null
@@ -1,336 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="blank.image" select="'blank.png'"/>
-<xsl:param name="arrow.image" select="'pointer.png'"/>
-
-<xsl:param name="toc.bg.color">#6A719C</xsl:param>
-<xsl:param name="toc.width">220</xsl:param>
-
-<xsl:param name="css.stylesheet" select="'slides-table.css'"/>
-
-<!-- ============================================================ -->
-
-<xsl:template name="foilgroup-body">
- <table border="0" width="100%" summary="Navigation and body table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="ttoc">
- <xsl:apply-templates select="." mode="t-toc"/>
- </div>
- </td>
- <td>&#160;</td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="{name(.)}">
- <xsl:apply-templates select="*[name(.) != 'foil'
- and name(.) != 'foilgroup']"/>
- </div>
-
- <xsl:if test="$foilgroup.toc != 0">
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </xsl:if>
- </td>
- </tr>
- </table>
-</xsl:template>
-
-<xsl:template name="foil-body">
- <table border="0" width="100%" summary="Navigation and body table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="ttoc">
- <xsl:apply-templates select="." mode="t-toc"/>
- </div>
- </td>
- <td>&#160;</td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="{name(.)}">
- <xsl:apply-templates/>
- </div>
- </td>
- </tr>
- </table>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="foilgroup" mode="t-toc">
- <xsl:variable name="thisfoilgroup" select="."/>
-
- <xsl:for-each select="/slides/foil|/slides/foilgroup">
- <xsl:choose>
- <xsl:when test="name(.) = 'foilgroup'">
- <xsl:choose>
- <xsl:when test="$thisfoilgroup = .">
- <img alt="+">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$arrow.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <span class="ttoc-foilgroup">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
-
- <xsl:if test="$thisfoilgroup = .">
- <xsl:for-each select="foil">
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
-
- <span class="ttoc-foil">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- <span class="ttoc-foil">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template match="foil" mode="t-toc">
- <xsl:variable name="thisfoil" select="."/>
-
- <xsl:for-each select="/slides/foil|/slides/foilgroup">
- <xsl:choose>
- <xsl:when test="name(.) = 'foilgroup'">
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- <span class="ttoc-foilgroup">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
-
- <xsl:if test="$thisfoil/ancestor::foilgroup = .">
- <xsl:for-each select="foil">
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
-
- <xsl:choose>
- <xsl:when test="$thisfoil = .">
- <img alt="+">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$arrow.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <span class="ttoc-foil">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <!-- foils only -->
- <xsl:for-each select="/slides/foil">
- <xsl:choose>
- <xsl:when test="$thisfoil = .">
- <img alt="+">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$arrow.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <span class="ttoc-foil">
- <xsl:apply-templates select="." mode="toc-title"/>
- </span>
- <br/>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slides" mode="toc-title">
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="slidesinfo/titleabbrev">
- <xsl:value-of select="slidesinfo/titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="slidesinfo/title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="toc-title">
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="toc-title">
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="nobreak">
- <xsl:param name="string" select="''"/>
- <xsl:choose>
- <xsl:when test="contains($string, ' ')">
- <xsl:value-of select="substring-before($string, ' ')"/>
- <xsl:text>&#160;</xsl:text>
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string" select="substring-after($string, ' ')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$string"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-</xsl:stylesheet>
diff --git a/slides/html/vslides.xsl b/slides/html/vslides.xsl
deleted file mode 100644
index f490099..0000000
--- a/slides/html/vslides.xsl
+++ /dev/null
@@ -1,667 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="but-fforward.png" select="'active/but-fforward.png'"/>
-<xsl:param name="but-info.png" select="'active/but-info.png'"/>
-<xsl:param name="but-next.png" select="'active/but-next.png'"/>
-<xsl:param name="but-prev.png" select="'active/but-prev.png'"/>
-<xsl:param name="but-rewind.png" select="'active/but-rewind.png'"/>
-
-<xsl:param name="but-xfforward.png" select="'inactive/but-fforward.png'"/>
-<xsl:param name="but-xinfo.png" select="'inactive/but-info.png'"/>
-<xsl:param name="but-xnext.png" select="'inactive/but-next.png'"/>
-<xsl:param name="but-xprev.png" select="'inactive/but-prev.png'"/>
-<xsl:param name="but-xrewind.png" select="'inactive/but-rewind.png'"/>
-
-<!-- overrides for this stylesheet -->
-<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
-<xsl:param name="toc.width" select="40"/>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slides">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $toc.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="slidesinfo/title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="/slides"/>
- <xsl:with-param name="tocfile" select="$toc.html"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="tocpage">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="next" select="/slides"/>
- <xsl:with-param name="tocfile"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
-
- <div class="toc-body">
- <xsl:call-template name="toc-body"/>
- </div>
-
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="slidesinfo">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $titlefoil.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
- <xsl:with-param name="tocfile" select="$toc.html"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="titlepage">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="first"/>
- <xsl:with-param name="last" select="(following::foilgroup|following::foil)[last()]"/>
- <xsl:with-param name="next" select="(following::foilgroup|following::foil)[1]"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="{name(.)}">
- <xsl:apply-templates mode="titlepage.mode"/>
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="nextfoil" select="foil[1]"/>
- <xsl:variable name="lastfoil" select="(descendant::foil|following::foil)[last()]"/>
- <xsl:variable name="prevfoil" select="(preceding::foil|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="foilgroup">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="last" select="$lastfoil"/>
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
- <xsl:apply-templates/>
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="foil">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
-
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="nextfoil" select="(following::foil
- |following::foilgroup)[1]"/>
-
- <xsl:variable name="lastfoil" select="following::foil[last()]"/>
-
- <xsl:variable name="prevfoil" select="(preceding-sibling::foil[1]
- |parent::foilgroup[1]
- |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="foil">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="last" select="$lastfoil"/>
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
- <xsl:apply-templates/>
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slidesinfo" mode="header">
- <div class="navhead">
- <!-- nop -->
- </div>
-</xsl:template>
-
-<xsl:template match="foil|foilgroup" mode="header">
- <div class="navhead">
- <table border="0" width="100%" summary="Header table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td align="left">
- <xsl:apply-templates select="/slides/slidesinfo/title"
- mode="slide.footer.mode"/>
- </td>
- <td align="right">
- <xsl:value-of select="count(preceding::foil)
- + count(preceding::foilgroup)
- + count(ancestor::foilgroup)
- + 1"/>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="footer">
- <div class="navfoot">
- <!-- nop -->
- </div>
-</xsl:template>
-
-<xsl:template match="foil|foilgroup" mode="footer">
- <div class="navfoot">
- <table border="0" width="100%" summary="Header table"
- cellpadding="0" cellspacing="0">
- <tr>
- <td align="center">
- <xsl:text>Slide </xsl:text>
- <xsl:value-of select="count(preceding::foil)
- + count(preceding::foilgroup)
- + count(ancestor::foilgroup)
- + 1"/>
- <xsl:text> of </xsl:text>
- <xsl:value-of select="count(//foil) + count(//foilgroup)"/>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template match="slides" mode="footer"/>
-
-<!-- ============================================================ -->
-
-<xsl:template name="vertical-navigation">
- <xsl:param name="first" select="/slides"/>
- <xsl:param name="prev"/>
- <xsl:param name="last"/>
- <xsl:param name="next"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="vnav">
- <xsl:choose>
- <xsl:when test="$first">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$first" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="First">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-rewind.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="First">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xrewind.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="Previous">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-prev.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Previous">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xprev.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="Last">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-next.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Last">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xnext.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <xsl:choose>
- <xsl:when test="$last">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$last" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="Next">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-fforward.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xfforward.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <br/>
- <br/>
-
- <xsl:choose>
- <xsl:when test="$tocfile != ''">
- <a href="{$tocfile}">
- <img border="0" alt="ToC">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-info.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" alt="ToC">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xinfo.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/html/w3c.xsl b/slides/html/w3c.xsl
deleted file mode 100644
index 5a5b420..0000000
--- a/slides/html/w3c.xsl
+++ /dev/null
@@ -1,376 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="logo.image.uri" select="''"/>
-<xsl:param name="logo.uri" select="''"/>
-<xsl:param name="logo.title" select="''"/>
-
-<xsl:param name="next.image" select="'active/w3c-next.png'"/>
-<xsl:param name="no.next.image" select="'inactive/w3c-next.png'"/>
-
-<xsl:param name="prev.image" select="'active/w3c-prev.png'"/>
-<xsl:param name="no.prev.image" select="'inactive/w3c-prev.png'"/>
-
-<xsl:param name="toc.image" select="'active/w3c-toc.png'"/>
-<xsl:param name="no.toc.image" select="'inactive/w3c-toc.png'"/>
-
-<xsl:param name="css.stylesheet" select="'slides-w3c.css'"/>
-
-<xsl:template name="logo">
- <xsl:if test="$logo.uri != ''">
- <a href="{$logo.uri}" title="{$logo.title}">
- <xsl:choose>
- <xsl:when test="$logo.image.uri=''">
- <xsl:value-of select="$logo.title"/>
- </xsl:when>
- <xsl:otherwise>
- <img src="{$logo.image.uri}" alt="{$logo.title}" border="0"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- </xsl:if>
-</xsl:template>
-
-<xsl:template name="overlayDiv.attributes">
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position: absolute; visibility: visible;</xsl:text>
- </xsl:attribute>
- </xsl:if>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%"
- summary="Navigation buttons">
- <tr>
- <td align="left" valign="top">
- <xsl:call-template name="logo"/>
- </td>
- <td valign="top" nowrap="nowrap" width="150">
- <div align="right">
- <xsl:choose>
- <xsl:when test="$prev">
- <a rel="previous" accesskey="P">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32"
- alt=" Previous" title="{$prev/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Previous" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$tocfile != ''">
- <a rel="contents" href="{$tocfile}" accesskey="C">
- <img border="0" width="32" height="32"
- alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32"
- alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a rel="next" accesskey="N">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32"
- alt=" Next" title="{$next/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Next" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </td>
- </tr>
- </table>
-
- <xsl:apply-templates select="title"/>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table class="footer" cellspacing="0" cellpadding="0" border="0" width="97%"
- summary="footer">
- <tr>
- <td align="left" valign="top">
- <xsl:variable name="author" select="(/slides/slidesinfo//author
- |/slides/slidesinfo//editor)"/>
- <xsl:for-each select="$author">
- <xsl:choose>
- <xsl:when test=".//email">
- <a href="mailto:{.//email[1]}">
- <xsl:call-template name="person.name"/>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="person.name"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="position() &lt; last()">, </xsl:if>
- </xsl:for-each>
- </td>
- <td align="right" valign="top">
- <span class="index">
- <xsl:value-of select="count(preceding::foil)
- + count(preceding::foilgroup)
- + count(ancestor::foilgroup)
- + 1"/>
- <xsl:text> of </xsl:text>
- <xsl:value-of select="count(//foil|//foilgroup)"/>
- </span>
- </td>
-
- <td valign="top" nowrap="nowrap" width="150">
- <div align="right">
- <xsl:choose>
- <xsl:when test="$prev">
- <a rel="previous" accesskey="P">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32"
- alt=" Previous" title="{$prev/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Prev" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a rel="next" accesskey="N">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32"
- alt=" Next" title="{$next/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Next" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%"
- summary="Navigation buttons">
- <tr>
- <td align="left" valign="top">
- <xsl:call-template name="logo"/>
- </td>
- <td valign="top" nowrap="nowrap" width="150">
- <div align="right">
- <xsl:choose>
- <xsl:when test="$prev">
- <a rel="previous" accesskey="P">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32"
- alt=" Previous" title="{$prev/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Previous" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$tocfile != ''">
- <a rel="contents" href="{$tocfile}" accesskey="C">
- <img border="0" width="32" height="32"
- alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32"
- alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a rel="next" accesskey="N">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32"
- alt=" Next" title="{$next/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Next" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </td>
- </tr>
- </table>
-
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="foil-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <!-- skip the title -->
- <xsl:apply-templates select="*[name(.) != 'title']"/>
-</xsl:template>
-
-<xsl:template name="foilgroup-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <!-- skip the title -->
- <xsl:apply-templates select="*[name(.) != 'title'
- and name(.) != 'foil'
- and name(.) != 'foilgroup']"/>
-
- <xsl:if test="$foilgroup.toc != 0">
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </xsl:if>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<xsl:template match="html:*" xmlns:html='http://www.w3.org/1999/xhtml'>
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/htmlhelp/htmlhelp.xsl b/slides/htmlhelp/htmlhelp.xsl
deleted file mode 100644
index 4a6b370..0000000
--- a/slides/htmlhelp/htmlhelp.xsl
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE xsl:stylesheet [
-<!ENTITY lf '<xsl:text xmlns:xsl="http://www.w3.org/1999/XSL/Transform">&#xA;</xsl:text>'>
-]>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
- xmlns:exsl="http://exslt.org/common"
- xmlns:set="http://exslt.org/sets"
- version="1.0"
- exclude-result-prefixes="doc exsl set">
-
-<!-- ********************************************************************
- $Id: htmlhelp.xsl 6569 2007-01-30 07:03:13Z xmldoc $
- ********************************************************************
-
- This stylesheet can convert DocBook Slides document type into HTML Help.
-
- ******************************************************************** -->
-
-<xsl:import href="../html/plain.xsl"/>
-<xsl:include href="../../htmlhelp/htmlhelp-common.xsl"/>
-
-<xsl:param name="keyboard.nav" select="0"/>
-<xsl:param name="htmlhelp.default.topic" select="'index.html'"/>
-
-<xsl:template match="slides" mode="title.markup">
- <xsl:param name="allow-anchors" select="0"/>
- <xsl:apply-templates select="(slidesinfo/title|title)[1]"
- mode="title.markup">
- <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
- </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="slides|foilgroup" mode="hhc">
- <xsl:variable name="title">
- <xsl:if test="$htmlhelp.autolabel=1">
- <xsl:variable name="label.markup">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:if test="normalize-space($label.markup)">
- <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates select="." mode="title.markup"/>
- </xsl:variable>
-
- <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
- <LI><OBJECT type="text/sitemap">&lf;
- <param name="Name" value="{normalize-space($title)}"/>&lf;
- <param name="Local">
- <xsl:attribute name="value">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- </param>
- </OBJECT></LI>&lf;
- </xsl:if>
- <xsl:if test="foil|foilgroup">
- <UL>&lf;
- <xsl:apply-templates select="foil|foilgroup" mode="hhc"/>
- </UL>&lf;
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="foil" mode="hhc">
- <xsl:variable name="title">
- <xsl:if test="$htmlhelp.autolabel=1">
- <xsl:variable name="label.markup">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:if test="normalize-space($label.markup)">
- <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates select="." mode="title.markup"/>
- </xsl:variable>
-
- <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*">
- <LI><OBJECT type="text/sitemap">&lf;
- <param name="Name" value="{normalize-space($title)}"/>&lf;
- <param name="Local">
- <xsl:attribute name="value">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- </param>
- </OBJECT></LI>&lf;
- </xsl:if>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/images/callouts/1.png b/slides/images/callouts/1.png
new file mode 100644
index 0000000..3d02a32
--- /dev/null
+++ b/slides/images/callouts/1.png
Binary files differ
diff --git a/slides/images/callouts/1.svg b/slides/images/callouts/1.svg
new file mode 100644
index 0000000..bb71eb0
--- /dev/null
+++ b/slides/images/callouts/1.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">1</text>
+</svg>
diff --git a/slides/images/callouts/10.png b/slides/images/callouts/10.png
new file mode 100644
index 0000000..a0bd8b6
--- /dev/null
+++ b/slides/images/callouts/10.png
Binary files differ
diff --git a/slides/images/callouts/10.svg b/slides/images/callouts/10.svg
new file mode 100644
index 0000000..03268e1
--- /dev/null
+++ b/slides/images/callouts/10.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">10</text>
+</svg>
diff --git a/slides/images/callouts/11.png b/slides/images/callouts/11.png
new file mode 100644
index 0000000..c08a9ee
--- /dev/null
+++ b/slides/images/callouts/11.png
Binary files differ
diff --git a/slides/images/callouts/11.svg b/slides/images/callouts/11.svg
new file mode 100644
index 0000000..523d265
--- /dev/null
+++ b/slides/images/callouts/11.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">11</text>
+</svg>
diff --git a/slides/images/callouts/12.png b/slides/images/callouts/12.png
new file mode 100644
index 0000000..6603447
--- /dev/null
+++ b/slides/images/callouts/12.png
Binary files differ
diff --git a/slides/images/callouts/12.svg b/slides/images/callouts/12.svg
new file mode 100644
index 0000000..4419da3
--- /dev/null
+++ b/slides/images/callouts/12.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">12</text>
+</svg>
diff --git a/slides/images/callouts/13.png b/slides/images/callouts/13.png
new file mode 100644
index 0000000..d6db3b0
--- /dev/null
+++ b/slides/images/callouts/13.png
Binary files differ
diff --git a/slides/images/callouts/13.svg b/slides/images/callouts/13.svg
new file mode 100644
index 0000000..01dded5
--- /dev/null
+++ b/slides/images/callouts/13.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">13</text>
+</svg>
diff --git a/slides/images/callouts/14.png b/slides/images/callouts/14.png
new file mode 100644
index 0000000..5d6c899
--- /dev/null
+++ b/slides/images/callouts/14.png
Binary files differ
diff --git a/slides/images/callouts/14.svg b/slides/images/callouts/14.svg
new file mode 100644
index 0000000..de2b624
--- /dev/null
+++ b/slides/images/callouts/14.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">14</text>
+</svg>
diff --git a/slides/images/callouts/15.png b/slides/images/callouts/15.png
new file mode 100644
index 0000000..ef8b5f5
--- /dev/null
+++ b/slides/images/callouts/15.png
Binary files differ
diff --git a/slides/images/callouts/15.svg b/slides/images/callouts/15.svg
new file mode 100644
index 0000000..4df779f
--- /dev/null
+++ b/slides/images/callouts/15.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">15</text>
+</svg>
diff --git a/slides/images/callouts/16.png b/slides/images/callouts/16.png
new file mode 100644
index 0000000..6a63d66
--- /dev/null
+++ b/slides/images/callouts/16.png
Binary files differ
diff --git a/slides/images/callouts/16.svg b/slides/images/callouts/16.svg
new file mode 100644
index 0000000..c355719
--- /dev/null
+++ b/slides/images/callouts/16.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">16</text>
+</svg>
diff --git a/slides/images/callouts/17.png b/slides/images/callouts/17.png
new file mode 100644
index 0000000..1efe639
--- /dev/null
+++ b/slides/images/callouts/17.png
Binary files differ
diff --git a/slides/images/callouts/17.svg b/slides/images/callouts/17.svg
new file mode 100644
index 0000000..62a3b5c
--- /dev/null
+++ b/slides/images/callouts/17.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">17</text>
+</svg>
diff --git a/slides/images/callouts/18.png b/slides/images/callouts/18.png
new file mode 100644
index 0000000..486ccbf
--- /dev/null
+++ b/slides/images/callouts/18.png
Binary files differ
diff --git a/slides/images/callouts/18.svg b/slides/images/callouts/18.svg
new file mode 100644
index 0000000..535bc8f
--- /dev/null
+++ b/slides/images/callouts/18.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">18</text>
+</svg>
diff --git a/slides/images/callouts/19.png b/slides/images/callouts/19.png
new file mode 100644
index 0000000..d8bca82
--- /dev/null
+++ b/slides/images/callouts/19.png
Binary files differ
diff --git a/slides/images/callouts/19.svg b/slides/images/callouts/19.svg
new file mode 100644
index 0000000..688b325
--- /dev/null
+++ b/slides/images/callouts/19.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">19</text>
+</svg>
diff --git a/slides/images/callouts/2.png b/slides/images/callouts/2.png
new file mode 100644
index 0000000..1a77a86
--- /dev/null
+++ b/slides/images/callouts/2.png
Binary files differ
diff --git a/slides/images/callouts/2.svg b/slides/images/callouts/2.svg
new file mode 100644
index 0000000..23c8558
--- /dev/null
+++ b/slides/images/callouts/2.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">2</text>
+</svg>
diff --git a/slides/images/callouts/20.png b/slides/images/callouts/20.png
new file mode 100644
index 0000000..6d53768
--- /dev/null
+++ b/slides/images/callouts/20.png
Binary files differ
diff --git a/slides/images/callouts/20.svg b/slides/images/callouts/20.svg
new file mode 100644
index 0000000..aacc3b3
--- /dev/null
+++ b/slides/images/callouts/20.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">20</text>
+</svg>
diff --git a/slides/images/callouts/21.png b/slides/images/callouts/21.png
new file mode 100644
index 0000000..2384215
--- /dev/null
+++ b/slides/images/callouts/21.png
Binary files differ
diff --git a/slides/images/callouts/21.svg b/slides/images/callouts/21.svg
new file mode 100644
index 0000000..d928558
--- /dev/null
+++ b/slides/images/callouts/21.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">21</text>
+</svg>
diff --git a/slides/images/callouts/22.png b/slides/images/callouts/22.png
new file mode 100644
index 0000000..717ae94
--- /dev/null
+++ b/slides/images/callouts/22.png
Binary files differ
diff --git a/slides/images/callouts/22.svg b/slides/images/callouts/22.svg
new file mode 100644
index 0000000..8eec99e
--- /dev/null
+++ b/slides/images/callouts/22.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">22</text>
+</svg>
diff --git a/slides/images/callouts/23.png b/slides/images/callouts/23.png
new file mode 100644
index 0000000..8edfe8a
--- /dev/null
+++ b/slides/images/callouts/23.png
Binary files differ
diff --git a/slides/images/callouts/23.svg b/slides/images/callouts/23.svg
new file mode 100644
index 0000000..4e6d1a1
--- /dev/null
+++ b/slides/images/callouts/23.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">23</text>
+</svg>
diff --git a/slides/images/callouts/24.png b/slides/images/callouts/24.png
new file mode 100644
index 0000000..93f7d8a
--- /dev/null
+++ b/slides/images/callouts/24.png
Binary files differ
diff --git a/slides/images/callouts/24.svg b/slides/images/callouts/24.svg
new file mode 100644
index 0000000..82a817d
--- /dev/null
+++ b/slides/images/callouts/24.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">24</text>
+</svg>
diff --git a/slides/images/callouts/25.png b/slides/images/callouts/25.png
new file mode 100644
index 0000000..724ccfe
--- /dev/null
+++ b/slides/images/callouts/25.png
Binary files differ
diff --git a/slides/images/callouts/25.svg b/slides/images/callouts/25.svg
new file mode 100644
index 0000000..0cba41c
--- /dev/null
+++ b/slides/images/callouts/25.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">25</text>
+</svg>
diff --git a/slides/images/callouts/26.png b/slides/images/callouts/26.png
new file mode 100644
index 0000000..9190642
--- /dev/null
+++ b/slides/images/callouts/26.png
Binary files differ
diff --git a/slides/images/callouts/26.svg b/slides/images/callouts/26.svg
new file mode 100644
index 0000000..5dcaf77
--- /dev/null
+++ b/slides/images/callouts/26.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">26</text>
+</svg>
diff --git a/slides/images/callouts/27.png b/slides/images/callouts/27.png
new file mode 100644
index 0000000..4103d55
--- /dev/null
+++ b/slides/images/callouts/27.png
Binary files differ
diff --git a/slides/images/callouts/27.svg b/slides/images/callouts/27.svg
new file mode 100644
index 0000000..fe86e86
--- /dev/null
+++ b/slides/images/callouts/27.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">27</text>
+</svg>
diff --git a/slides/images/callouts/28.png b/slides/images/callouts/28.png
new file mode 100644
index 0000000..7f09200
--- /dev/null
+++ b/slides/images/callouts/28.png
Binary files differ
diff --git a/slides/images/callouts/28.svg b/slides/images/callouts/28.svg
new file mode 100644
index 0000000..e9e3fb7
--- /dev/null
+++ b/slides/images/callouts/28.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">28</text>
+</svg>
diff --git a/slides/images/callouts/29.png b/slides/images/callouts/29.png
new file mode 100644
index 0000000..8e6646f
--- /dev/null
+++ b/slides/images/callouts/29.png
Binary files differ
diff --git a/slides/images/callouts/29.svg b/slides/images/callouts/29.svg
new file mode 100644
index 0000000..d1ae0a0
--- /dev/null
+++ b/slides/images/callouts/29.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">29</text>
+</svg>
diff --git a/slides/images/callouts/3.png b/slides/images/callouts/3.png
new file mode 100644
index 0000000..7728b4d
--- /dev/null
+++ b/slides/images/callouts/3.png
Binary files differ
diff --git a/slides/images/callouts/3.svg b/slides/images/callouts/3.svg
new file mode 100644
index 0000000..78d8b29
--- /dev/null
+++ b/slides/images/callouts/3.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">3</text>
+</svg>
diff --git a/slides/images/callouts/30.png b/slides/images/callouts/30.png
new file mode 100644
index 0000000..460c1c3
--- /dev/null
+++ b/slides/images/callouts/30.png
Binary files differ
diff --git a/slides/images/callouts/30.svg b/slides/images/callouts/30.svg
new file mode 100644
index 0000000..20a6e0a
--- /dev/null
+++ b/slides/images/callouts/30.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">30</text>
+</svg>
diff --git a/slides/images/callouts/4.png b/slides/images/callouts/4.png
new file mode 100644
index 0000000..d4702fd
--- /dev/null
+++ b/slides/images/callouts/4.png
Binary files differ
diff --git a/slides/images/callouts/4.svg b/slides/images/callouts/4.svg
new file mode 100644
index 0000000..fa625a7
--- /dev/null
+++ b/slides/images/callouts/4.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">4</text>
+</svg>
diff --git a/slides/images/callouts/5.png b/slides/images/callouts/5.png
new file mode 100644
index 0000000..f44526c
--- /dev/null
+++ b/slides/images/callouts/5.png
Binary files differ
diff --git a/slides/images/callouts/5.svg b/slides/images/callouts/5.svg
new file mode 100644
index 0000000..2a2f976
--- /dev/null
+++ b/slides/images/callouts/5.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">5</text>
+</svg>
diff --git a/slides/images/callouts/6.png b/slides/images/callouts/6.png
new file mode 100644
index 0000000..4105338
--- /dev/null
+++ b/slides/images/callouts/6.png
Binary files differ
diff --git a/slides/images/callouts/6.svg b/slides/images/callouts/6.svg
new file mode 100644
index 0000000..3fced48
--- /dev/null
+++ b/slides/images/callouts/6.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">6</text>
+</svg>
diff --git a/slides/images/callouts/7.png b/slides/images/callouts/7.png
new file mode 100644
index 0000000..d56a240
--- /dev/null
+++ b/slides/images/callouts/7.png
Binary files differ
diff --git a/slides/images/callouts/7.svg b/slides/images/callouts/7.svg
new file mode 100644
index 0000000..0cc4191
--- /dev/null
+++ b/slides/images/callouts/7.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">7</text>
+</svg>
diff --git a/slides/images/callouts/8.png b/slides/images/callouts/8.png
new file mode 100644
index 0000000..6715b4a
--- /dev/null
+++ b/slides/images/callouts/8.png
Binary files differ
diff --git a/slides/images/callouts/8.svg b/slides/images/callouts/8.svg
new file mode 100644
index 0000000..c80281c
--- /dev/null
+++ b/slides/images/callouts/8.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">8</text>
+</svg>
diff --git a/slides/images/callouts/9.png b/slides/images/callouts/9.png
new file mode 100644
index 0000000..59c7fa6
--- /dev/null
+++ b/slides/images/callouts/9.png
Binary files differ
diff --git a/slides/images/callouts/9.svg b/slides/images/callouts/9.svg
new file mode 100644
index 0000000..6a71f9d
--- /dev/null
+++ b/slides/images/callouts/9.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="24" height="24">
+ <text x="0" y="5">9</text>
+</svg>
diff --git a/slides/images/callouts/gen.sh b/slides/images/callouts/gen.sh
new file mode 100755
index 0000000..954a805
--- /dev/null
+++ b/slides/images/callouts/gen.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+#
+# This script was taken from FreeBSD.
+#
+# It uses ImageMagick to generate callout icons.
+#
+
+for i in `jot 9 1`
+do
+ convert -size 202x202 xc:green -transparent green -fill black -draw 'circle 100,100 100' -fill white -stroke none -pointsize 160 -gravity center -kerning -5 -font Helvetica-bold -draw "text 0,5 \"$i\"" -scale '24x24' $i.png
+ convert -size 202x202 xc:green -transparent green -fill black -draw 'circle 100,100 100' -fill white -stroke none -pointsize 160 -gravity center -kerning -5 -font Helvetica-bold -draw "text 0,5 \"$i\"" -scale '24x24' $i.svg
+done
+
+for i in `jot 21 10`
+do
+ convert -size 202x202 xc:green -transparent green -fill black -draw 'circle 100,100 100' -fill white -stroke none -pointsize 140 -gravity center -kerning -5 -font Helvetica-bold -draw "text 0,5 \"$i\"" -scale '24x24' $i.png
+ convert -size 202x202 xc:green -transparent green -fill black -draw 'circle 100,100 100' -fill white -stroke none -pointsize 140 -gravity center -kerning -5 -font Helvetica-bold -draw "text 0,5 \"$i\"" -scale '24x24' $i.svg
+done
+
+exit 0
diff --git a/slides/images/face1.gif b/slides/images/face1.gif
new file mode 100755
index 0000000..04e50cd
--- /dev/null
+++ b/slides/images/face1.gif
Binary files differ
diff --git a/slides/images/face2.gif b/slides/images/face2.gif
new file mode 100755
index 0000000..12d8240
--- /dev/null
+++ b/slides/images/face2.gif
Binary files differ
diff --git a/slides/images/face3.gif b/slides/images/face3.gif
new file mode 100755
index 0000000..ac6e5e4
--- /dev/null
+++ b/slides/images/face3.gif
Binary files differ
diff --git a/slides/images/face4.gif b/slides/images/face4.gif
new file mode 100755
index 0000000..3f68740
--- /dev/null
+++ b/slides/images/face4.gif
Binary files differ
diff --git a/slides/keynote/default.xsl b/slides/keynote/default.xsl
deleted file mode 100644
index 7ff90b1..0000000
--- a/slides/keynote/default.xsl
+++ /dev/null
@@ -1,600 +0,0 @@
-<xsl:stylesheet version='1.0'
- xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
- xmlns='http://developer.apple.com/schemas/APXL'
- xmlns:apxl='http://developer.apple.com/schemas/APXL'
- xmlns:plugin='http://developer.apple.com/schemas/APXLPlugins'
- xmlns:doc='http://nwalsh.com/xsl/documentation/1.0'
- xmlns:str='http://xsltsl.org/string'
- xmlns:math='http://xsltsl.org/math'
- exclude-result-prefixes='doc str math'>
-
- <xsl:import href='xsltsl/stdlib.xsl'/>
- <xsl:output method='xml' indent='yes' encoding='UTF-8'/>
- <xsl:strip-space elements='*'/>
-
- <doc:article xmlns=''>
- <articleinfo>
- <title>Keynote Slides</title>
-
- <author>
- <firstname>Steve</firstname>
- <surname>Ball</surname>
- <affiliation>
- <orgname>Zveno</orgname>
- <address>
- <otheraddr>
- <ulink url='http://www.zveno.com/'>zveno.com</ulink>
- </otheraddr>
- </address>
- </affiliation>
- </author>
-
- <releaseinfo>$Id: default.xsl 3991 2004-11-10 06:51:55Z balls $</releaseinfo>
-
- <copyright>
- <year>2004</year>
- <year>2003</year>
- <holder>Steve Ball, Zveno Pty Ltd</holder>
- </copyright>
-
- <legalnotice>
- <para>Zveno Pty Ltd makes this software and associated documentation available free of charge for any purpose. You may make copies of the software but you must include all of this notice on any copy.</para>
- <para>Zveno Pty Ltd does not warrant that this software is error free or fit for any purpose. Zveno Pty Ltd disclaims any liability for all claims, expenses, losses, damages and costs any user may incur as a result of using, copying or modifying the software.</para>
- </legalnotice>
- </articleinfo>
- </doc:article>
-
- <xsl:param name='slides'/>
-
- <xsl:variable name='slide-master' select='"Title &amp; Subtitle"'/>
- <xsl:variable name='foilgroup-master' select='"Title - Center"'/>
- <xsl:variable name='overview-master' select='"Title - Top"'/>
- <xsl:variable name='bullet-master' select='"SmlTitle &amp; Bullets"'/>
- <xsl:variable name='bullet-and-image-master' select='"Title &amp; Bullets - Left"'/>
- <xsl:variable name='title-only-master' select='"SmlTitle"'/>
-
- <xsl:variable name='masters' select='/apxl:presentation/apxl:theme/apxl:master-slides'/>
-
- <xsl:template match='/'>
- <xsl:choose>
- <xsl:when test='$slides = ""'>
- <xsl:message terminate='yes'>You must specify your slides document using the "slides" parameter</xsl:message>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match='apxl:slide-list'>
- <slide-list>
- <xsl:apply-templates select='document($slides)' mode='slides'/>
- </slide-list>
- </xsl:template>
-
- <xsl:template match='slides' mode='slides'>
- <slide id='slide-1' master-slide-id="{$masters/apxl:master-slide[@name=$slide-master]/@id}">
- <drawables>
- <body visibility='tracks-master' vertical-alignment='tracks-master'/>
- <title visibility='tracks-master' vertical-alignment='tracks-master'/>
- </drawables>
- <transition-style type='inherited'/>
- <thumbnails>
- <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
- </thumbnails>
- <bullets>
- <bullet marker-type='inherited' level='0'>
- <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
- <xsl:apply-templates select='slidesinfo/title/node()'/>
- </content>
- </bullet>
- <xsl:choose>
- <xsl:when test='slidesinfo/subtitle'>
- <bullet marker-type='inherited' level='1'>
- <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
- <xsl:apply-templates select='slidesinfo/subtitle/node()' mode='slides'/>
- </content>
- </bullet>
- </xsl:when>
- <xsl:when test='slidesinfo/corpauthor'>
- <bullet marker-type='inherited' level='1'>
- <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
- <xsl:apply-templates select='slidesinfo/corpauthor/node()' mode='slides'/>
- </content>
- </bullet>
- </xsl:when>
- <xsl:when test='slidesinfo/author'>
- <bullet marker-type='inherited' level='1'>
- <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
- <xsl:apply-templates select='slidesinfo/author' mode='slides'/>
- </content>
- </bullet>
- </xsl:when>
- </xsl:choose>
- </bullets>
- <notes font-size='18' font-name='LucidaGrande'>
- <xsl:apply-templates select='slidesinfo/*[not(self::title|self::subtitle|self::corpauthor|self::author)]' mode='slides'/>
- </notes>
- </slide>
-
- <xsl:if test='foilgroup'>
- <xsl:call-template name='overview'/>
- </xsl:if>
-
- <xsl:apply-templates select='foilgroup|foil' mode='slides'/>
- </xsl:template>
-
- <xsl:template name='overview'>
- <xsl:param name='current' select='/'/>
-
- <slide id='overview-{generate-id()}' master-slide-id="{$masters/apxl:master-slide[@name=$overview-master]/@id}">
- <drawables>
- <body visibility='tracks-master' vertical-alignment='tracks-master'/>
- <title visibility='tracks-master' vertical-alignment='tracks-master'/>
-
- <xsl:for-each select='ancestor-or-self::slides/foilgroup'>
- <textbox id='textbox-{position()}' grow-horizontally='true' transformation='1 0 0 1 {100 + floor((position() - 1) div 10) * 400} {200 + floor((position() - 1) mod 10) * 50}' size='200 50'>
- <content tab-stops='L 84' font-size='36' paragraph-alignment='left'>
- <xsl:attribute name='font-color'>
- <xsl:choose>
- <xsl:when test='generate-id() = generate-id($current)'>
- <xsl:text>1 0.5 0</xsl:text>
- </xsl:when>
- <xsl:otherwise>g1</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:apply-templates select='title' mode='slides'/>
- </content>
- </textbox>
- </xsl:for-each>
-
- </drawables>
- <transition-style type='inherited'/>
- <thumbnails>
- <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
- </thumbnails>
- <bullets>
- <bullet marker-type='inherited' level='0'>
- <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>Overview</content>
- </bullet>
- </bullets>
- </slide>
- </xsl:template>
-
- <xsl:template match='author' mode='slides'>
- <xsl:apply-templates select='firstname/node()' mode='slides'/>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select='surname/node()' mode='slides'/>
- </xsl:template>
- <xsl:template match='copyright' mode='slides'>
- <xsl:text>Copyright (c) </xsl:text>
- <xsl:value-of select='year'/>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select='holder' mode='slides'/>
- <xsl:text>. </xsl:text>
- </xsl:template>
-
- <xsl:template match='foilgroup' mode='slides'>
- <xsl:variable name='number' select='count(preceding-sibling::foilgroup) + count(preceding::foil) + 1'/>
-
- <xsl:call-template name='overview'>
- <xsl:with-param name='current' select='.'/>
- </xsl:call-template>
-
- <slide id='foilgroup-{generate-id()}'>
- <xsl:attribute name='master-slide-id'>
- <xsl:choose>
- <xsl:when test='*[not(self::foil|self::foilgroupinfo|self::speakernotes)]'>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$foilgroup-master]/@id'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <drawables>
- <title visibility='tracks-master' vertical-alignment='tracks-master'/>
- <body visibility='hidden' vertical-alignment='tracks-master'/>
- <xsl:call-template name='drawables'/>
- </drawables>
- <transition-style type='inherited'/>
- <thumbnails>
- <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
- </thumbnails>
- <bullets>
- <bullet marker-type='inherited' level='0'>
- <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
- <xsl:apply-templates select='title' mode='slides'/>
- </content>
- </bullet>
-
- <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/>
- </bullets>
- <xsl:if test='speakernotes'>
- <notes font-size='18' font-name='LucidaGrande'>
- <xsl:apply-templates select='speakernotes/para[1]/node()' mode='slides'/>
- <xsl:for-each select='speakernotes/para[position() != 1]'>
- <xsl:text>; </xsl:text>
- <xsl:apply-templates select='node()' mode='slides'/>
- </xsl:for-each>
- </notes>
- </xsl:if>
- </slide>
-
- <xsl:apply-templates select='foil' mode='slides'/>
-
- </xsl:template>
-
- <xsl:template match='foil' mode='slides'>
- <xsl:variable name='number' select='count(preceding::foilgroup) + count(preceding::foil) + count(preceding-sibling::foil) + 1'/>
-
- <slide id='foil-{generate-id()}'>
- <xsl:attribute name='master-slide-id'>
- <xsl:choose>
- <xsl:when test='imageobject'>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/>
- </xsl:when>
- <xsl:when test='itemizedlist[.//imageobject]'>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-and-image-master]/@id'/>
- </xsl:when>
- <xsl:when test='itemizedlist'>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-master]/@id'/>
- </xsl:when>
- <xsl:when test='example|informalexample'>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-master]/@id'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <drawables>
- <body visibility='tracks-master' vertical-alignment='tracks-master'/>
- <title visibility='tracks-master' vertical-alignment='tracks-master'/>
- <xsl:call-template name='drawables'/>
- </drawables>
- <transition-style type='inherited'/>
- <thumbnails>
- <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/>
- </thumbnails>
- <bullets>
- <bullet marker-type='inherited' level='0'>
- <content tab-stops='L 96' font-size='64' font-color='g1' font-name='GillSans' paragraph-alignment='inherited'>
- <!--
- <xsl:apply-templates select='../title' mode='slides'/>
- <xsl:text>: </xsl:text>
--->
- <xsl:apply-templates select='title' mode='slides'/>
- </content>
- </bullet>
- <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/>
- </bullets>
- <xsl:if test='speakernotes'>
- <notes font-size='18' font-name='LucidaGrande'>
- <xsl:apply-templates select='speakernotes/para[1]/node()' mode='slides'/>
- <xsl:for-each select='speakernotes/para[position() != 1]'>
- <xsl:text>; </xsl:text>
- <xsl:apply-templates select='node()' mode='slides'/>
- </xsl:for-each>
- </notes>
- </xsl:if>
- </slide>
- </xsl:template>
-
- <doc:template xmlns=''>
- <title>drawables Template</title>
-
- <para>This template adds objects to the drawables section of a foil. These include images, as well as unadorned (non-bullet) text.</para>
-
- <para>A single image is placed centered on the foil. An image on a foil that contains other text is placed on the right-hand-side.</para>
- </doc:template>
-
- <xsl:template name='drawables'>
- <xsl:choose>
- <xsl:when test='imageobject'>
- <plugin opacity='1' transformation='1 0 0 1 140 130'>
- <plugin-data>
- <plugin:movie bundled='true' src='{imageobject/imagedata/@fileref}' key='root' width='740' height='560'/>
- <string key='CPVersion'>1.0</string>
- <string key='MIMEType'>video/quicktime</string>
- </plugin-data>
- <styles>
- <shadow-style opacity='0' radius='0'/>
- </styles>
- </plugin>
- </xsl:when>
- <xsl:when test='false() and .//informaltable|.//table'>
- <xsl:variable name='table' select='.//informaltable|.//table[1]'/>
- <xsl:variable name='cells' select='$table/tgroup/*/row/entry'/>
- <xsl:variable name='numrows' select='count($table/tgroup/*/row)'/>
- <xsl:variable name='numcols' select='count($table/tgroup/*[1]/row[1]/entry)'/>
- <xsl:variable name='identbase' select='count($table/preceding::node())'/>
-
- <plugin transformation='1 0 0 1 200 200'>
- <plugin-data>
- <plugin:table key='root' version='1.2'>
- <xsl:attribute name='size'>
- <xsl:text>{800, 400}</xsl:text>
- </xsl:attribute>
-
- <dict/>
- <xsl:for-each select='$cells'>
- <plugin:element type='text' tr='5834' bl='5838' tl='5833' br='5839'>
- <xsl:attribute name='tl'>
- <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1)) + (position() mod $numcols)'/>
- </xsl:attribute>
- <xsl:attribute name='tr'>
- <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1)) + (position() mod $numcols) + 1'/>
- </xsl:attribute>
- <xsl:attribute name='bl'>
- <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1) + 1) + (position() mod $numcols)'/>
- </xsl:attribute>
- <xsl:attribute name='br'>
- <xsl:value-of select='$identbase + (floor(position() div $numcols) * ($numcols + 1) + 1) + (position() mod $numcols) + 1'/>
- </xsl:attribute>
- <plugin:node ident='5833'>
- <xsl:attribute name='pos'>
- <xsl:text>{0, 300}</xsl:text>
- </xsl:attribute>
- </plugin:node>
- <plugin:node ident='5834'>
- <xsl:attribute name='pos'>
- <xsl:text>{150, 300}</xsl:text>
- </xsl:attribute>
- </plugin:node>
- <plugin:node ident='5838'>
- <xsl:attribute name='pos'>
- <xsl:text>{0, 200}</xsl:text>
- </xsl:attribute>
- </plugin:node>
- <plugin:node ident='5839'>
- <xsl:attribute name='pos'>
- <xsl:text>{150, 200}</xsl:text>
- </xsl:attribute>
- </plugin:node>
- <content tab-stops='L 84' font-size='32' font-color='g1' font-name='GillSans' paragraph-alignment='center'>
- <xsl:value-of select='$cells[1]'/>
- </content>
- <dict/>
- </plugin:element>
-
- </xsl:for-each>
- </plugin:table>
- </plugin-data>
- </plugin>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test='not(self::foilgroup) and .//imageobject'>
- <xsl:variable name='base'>
- <xsl:call-template name='str:substring-after-last'>
- <xsl:with-param name='text' select='.//imageobject/imagedata/@fileref'/>
- <xsl:with-param name='chars' select='"/"'/>
- </xsl:call-template>
- </xsl:variable>
- <image display-name='{$base}' id='image-1' image-data='{.//imageobject/imagedata/@fileref}' byte-size='1' transformation='1 0 0 1 500 200' natural-size='{.//imageobject/imagedata/@width} {.//imageobject/imagedata/@height}' lock-aspect-ratio='true'/>
- </xsl:if>
- <xsl:apply-templates select='para|informalexample|example' mode='slides'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match='itemizedlist/listitem' mode='slides'>
- <bullet marker-type='inherited' level='{count(ancestor::itemizedlist)}'>
- <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='left'>
- <xsl:apply-templates select='para|informalexample' mode='slides'/>
- </content>
- </bullet>
- <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/>
- </xsl:template>
- <xsl:template match='listitem/para|listitem/informalexample' mode='slides'>
- <xsl:if test='preceding-sibling::*'>
- <xsl:text>
-
-</xsl:text>
- </xsl:if>
- <xsl:apply-templates mode='slides'/>
- </xsl:template>
- <xsl:template match='listitem/informalexample/programlisting' mode='slides'>
- <textbox transformation='1 0 0 1 110 260' size='830 82'>
- <content tab-stops='L 84' font-size='36' font-color='g1' font-name='AmericanTypewriter-CondensedBold' paragraph-alignment='left'>
- <xsl:call-template name='literallayout'/>
- </content>
- </textbox>
- </xsl:template>
-
- <xsl:template name='literallayout'>
- <xsl:param name='nodes' select='node()'/>
- <xsl:param name='inCDATA' select='false()'/>
-
- <xsl:choose>
- <xsl:when test='not($nodes) and $inCDATA'>
- <xsl:text disable-output-escaping='yes'>]]&gt;</xsl:text>
- </xsl:when>
- <xsl:when test='not($nodes)'/>
- <xsl:when test='$nodes[1][self::emphasis] and $inCDATA'>
- <xsl:text disable-output-escaping='yes'>]]&gt;</xsl:text>
- <xsl:apply-templates select='$nodes[1]' mode='literal'/>
- <xsl:call-template name='literallayout'>
- <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$nodes[1][self::emphasis]'>
- <xsl:apply-templates select='$nodes[1]' mode='literal'/>
- <xsl:call-template name='literallayout'>
- <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$inCDATA'>
- <xsl:apply-templates select='$nodes[1]' mode='literal'/>
- <xsl:call-template name='literallayout'>
- <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
- <xsl:with-param name='inCDATA' select='$inCDATA'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text disable-output-escaping='yes'>&lt;![CDATA[</xsl:text>
- <xsl:apply-templates select='$nodes[1]' mode='literal'/>
- <xsl:call-template name='literallayout'>
- <xsl:with-param name='nodes' select='$nodes[position() != 1]'/>
- <xsl:with-param name='inCDATA' select='true()'/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match='para' mode='slides'>
- <textbox transformation='1 0 0 1 110 {200 + count(preceding-sibling::para|preceding-sibling::informalexample) * 60}' size='830 41'>
- <content tab-stops='L 84' font-size='36' font-color='g1' paragraph-alignment='left'>
- <xsl:attribute name='font-name'>
- <xsl:choose>
- <xsl:when test='@font-style = "italic"'>GillSans-Italic</xsl:when>
- <xsl:otherwise>GillSans</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <xsl:apply-templates mode='slides'/>
- </content>
- </textbox>
- </xsl:template>
-
- <xsl:template match='text()' mode='slides'>
- <xsl:variable name='tmp'>
- <xsl:call-template name='str:subst'>
- <xsl:with-param name='text' select='.'/>
- <xsl:with-param name='replace'>&quot;</xsl:with-param>
- <xsl:with-param name='with'>“</xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='content'>
- <xsl:call-template name='str:subst'>
- <xsl:with-param name='text' select='$tmp'/>
- <xsl:with-param name='replace'>]]&gt;</xsl:with-param>
- <xsl:with-param name='with'>]] &gt;</xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test='ancestor::programlisting'>
- <xsl:value-of disable-output-escaping='yes' select='$content'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='$content'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match='text()' mode='literal'>
- <xsl:variable name='tmp'>
- <xsl:call-template name='str:subst'>
- <xsl:with-param name='text' select='.'/>
- <xsl:with-param name='replace'>&lt;</xsl:with-param>
- <xsl:with-param name='with'>&lt;</xsl:with-param>
- <xsl:with-param name='disable-output-escaping' select='yes'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='tmp2'>
- <xsl:call-template name='str:subst'>
- <xsl:with-param name='text' select='$tmp'/>
- <xsl:with-param name='replace'>]]&gt;</xsl:with-param>
- <xsl:with-param name='with'>]] &gt;</xsl:with-param>
- <xsl:with-param name='disable-output-escaping' select='yes'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select='$tmp2' disable-output-escaping='yes'/>
- </xsl:template>
-
- <xsl:template match='informalexample|example' mode='slides'>
- <xsl:apply-templates mode='slides'/>
- </xsl:template>
- <xsl:template match='programlisting' mode='slides'>
- <xsl:variable name='lines'>
- <xsl:call-template name='str:count-substring'>
- <xsl:with-param name='text' select='text()'/>
- <xsl:with-param name='chars' select='"&#x0a;"'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='offset'>
- <xsl:choose>
- <xsl:when test='string-length(../preceding-sibling::para) > 45'>20</xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- xsl:comment> layout programlisting with offset <xsl:value-of select='$offset'/> have preceding-sibling para? <xsl:value-of select='count(../preceding-sibling::para)'/> length <xsl:value-of select='string-length(../preceding-sibling::para)'/></xsl:comment -->
- <textbox transformation='1 0 0 1 110 {200 + $offset + count(preceding-sibling::para|../preceding-sibling::para|preceding-sibling::informalexample|preceding-sibling::example) * 60}' size='830 {($lines + 1) * 41}'>
- <content tab-stops='L 84' font-size='36' font-color='g1' font-name='AmericanTypewriter-CondensedBold' paragraph-alignment='left'>
- <xsl:choose>
- <xsl:when test='emphasis'>
- <xsl:call-template name='literallayout'/>
- </xsl:when>
- <xsl:otherwise>
- <span>
- <xsl:call-template name='literallayout'/>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- </content>
- </textbox>
- </xsl:template>
-
- <xsl:template match='emphasis' mode='literal'>
- <span>
- <xsl:choose>
- <xsl:when test='ancestor::programlisting and @font-style = "italic" and @font-weight="bold"'>
- <xsl:attribute name='font-name'>AmericanTypewriter-CondensedBoldItalic</xsl:attribute>
- </xsl:when>
- <xsl:when test='@font-style = "italic" and @font-weight="bold"'>
- <xsl:attribute name='font-name'>GillSans-BoldItalic</xsl:attribute>
- </xsl:when>
- <xsl:when test='ancestor::programlisting and @font-style = "italic"'>
- <xsl:attribute name='font-name'>AmericanTypewriter-CondensedItalic</xsl:attribute>
- </xsl:when>
- <xsl:when test='@font-style = "italic"'>
- <xsl:attribute name='font-name'>GillSans-Italic</xsl:attribute>
- </xsl:when>
- <xsl:when test='ancestor::programlisting and @font-weight = "bold"'>
- <xsl:attribute name='font-name'>AmericanTypewriter-CondensedBold</xsl:attribute>
- </xsl:when>
- <xsl:when test='@font-weight = "bold"'>
- <xsl:attribute name='font-name'>GillSans-Bold</xsl:attribute>
- </xsl:when>
- </xsl:choose>
- <xsl:if test='@fill'>
- <xsl:attribute name='font-color'>
- <xsl:variable name='red'>
- <xsl:call-template name='math:cvt-hex-decimal'>
- <xsl:with-param name='value' select='substring(@fill, 2, 2)'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='green'>
- <xsl:call-template name='math:cvt-hex-decimal'>
- <xsl:with-param name='value' select='substring(@fill, 4, 2)'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='blue'>
- <xsl:call-template name='math:cvt-hex-decimal'>
- <xsl:with-param name='value' select='substring(@fill, 6, 2)'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:value-of select='$red div 255'/>
- <xsl:text> </xsl:text>
- <xsl:value-of select='$green div 255'/>
- <xsl:text> </xsl:text>
- <xsl:value-of select='$blue div 255'/>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name='literallayout'/>
- </span>
- </xsl:template>
-
- <xsl:template match="*">
- <xsl:copy>
- <xsl:for-each select="@*">
- <xsl:copy/>
- </xsl:for-each>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="comment()|processing-instruction()">
- <xsl:copy/>
- </xsl:template>
-</xsl:stylesheet>
diff --git a/slides/keynote/xsltsl/cmp.xsl b/slides/keynote/xsltsl/cmp.xsl
deleted file mode 100644
index 6e2866d..0000000
--- a/slides/keynote/xsltsl/cmp.xsl
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet
- version="1.0"
- extension-element-prefixes="doc"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:str="http://xsltsl.org/string"
- xmlns:cmp="http://xsltsl.org/cmp"
- exclude-result-prefixes="cmp str doc"
->
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: cmp.xsl 6297 2006-09-14 01:32:27Z xmldoc $
- </releaseinfo>
- <author>
- <surname>Hummel</surname>
- <firstname>Mark</firstname>
- </author>
- <copyright>
- <year>2003</year>
- <holder>Mark Hummel</holder>
- </copyright>
- </referenceinfo>
-
- <title>XML Compare</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This module provides a template for comparing two xml documents. </para>
-
- </section>
- </partintro>
-
- </doc:reference>
-
-
- <doc:template name="cmp:diff">
- <refpurpose>Find differences</refpurpose>
-
- <refdescription>
- <para>Compare two xml documents and display differences. Two xml documents are defined to be the same if: They have the matching elements and attributes, and that the data in the elements also match. The comparison is order sensitive. </para>
-
- <para>The element names from the documents at the current depth are compared, followed by their values, then any attribute names and values are compared. The process is applied then to the subtrees of the documents.</para>
-
- <para>Notes: If there are leaf nodes in one nodeset which don't exist in the other, the value of those 'extra' elements won't appear as a difference.
- </para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>ns1</term>
- <term>ns2</term>
- <listitem>
- <para>The two nodesets which are to be compared. </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the difference between the documents. </para>
-
- <para>The format of the output is an xml document. A node is added to the result tree for every difference. The node contains the type of difference (e.g element name difference, attribute value difference, etc), the value in the first nodeset and the value in the second nodeset, and the parent node. The indentation level is the depth at which the difference was found relative to the first document. </para>
-
- </refreturn>
- </doc:template>
-
- <!-- pass in a nodeset and compare. Is order sensitive. Output attribute, element and textual differences. -->
-
- <xsl:template name="cmp:diff">
- <xsl:param name="ns1"/>
- <xsl:param name="ns2"/>
-
- <!-- attribute compare -->
- <!-- Optimisation attempt
-
- Can probaby change this into one loop ie -
- <xsl:for-each
- i = position
- if node1[i] = node2[i]...
-
- -->
-
- <!-- Need to check if there are two sets of attributes -->
- <xsl:choose>
- <xsl:when test='count($ns1/attribute::*) = count($ns2/attribute::*)'>
- <xsl:for-each select="$ns1/attribute::*">
- <xsl:variable name="name1" select="name()"/>
- <xsl:variable name="value1" select="."/>
- <xsl:variable name="i" select="position()"/>
-
- <xsl:for-each select="$ns2/attribute::*">
-
- <xsl:variable name="j" select="position()"/>
- <xsl:variable name="name2" select="name()"/>
- <xsl:variable name="value2" select="."/>
-
- <xsl:if test="$i = $j">
- <xsl:if test="$name1 != $name2">
- <attributeNameDifference>
- <parentElement><xsl:value-of select="name(..)"/></parentElement>
- <before><xsl:value-of select="$name1"/></before>
- <after><xsl:value-of select="$name2"/></after>
- </attributeNameDifference>
- </xsl:if>
-
- <xsl:if test="$name1 = $name2 and $value1 != $value2">
- <attributeValueDifference>
- <parentElement><xsl:value-of select="name(..)"/></parentElement>
- <before><xsl:value-of select="$value1"/></before>
- <after><xsl:value-of select="$value2"/></after>
- </attributeValueDifference>
- </xsl:if>
-
- </xsl:if>
- </xsl:for-each>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <attributeNameDifference>
- <parentElement>
- <xsl:value-of select="name(..)"/>
- </parentElement>
- <before><xsl:value-of select='$ns1/attribute::*'/></before>
- <after><xsl:value-of select='$ns2/attribute::*'/></after>
- </attributeNameDifference>
- </xsl:otherwise>
- </xsl:choose>
-
-
- <!-- Find element differences by comparing the element names from the same position in both documents. Iterate over all the nodes in the nodeset with the largest number of elements, so the extra elements will appear as differences. -->
-
- <xsl:choose>
- <!-- Define loop direction based on which tree has more nodes
- FIXME: Replacing this with one for-each and a test for the case
- of the second tree having more nodes would be more elegant
-
- Solution: Add variable for direction and assign the 'larger' nodeset to that
- variable. Then do one for-each.
-
- FIXME: The solution is a bit too iterative. Make it more functional
-
- -->
- <xsl:when test="count($ns1) &gt; count($ns2)">
- <xsl:for-each select="$ns1">
- <xsl:variable name="i" select="position()"/>
-
- <xsl:message>node[<xsl:value-of select='$i'/>]:
- <xsl:value-of select='$ns1[$i]'/>
- </xsl:message>
-
- <!-- Element name compare -->
- <xsl:if test="name($ns1[$i]) != name($ns2[$i])">
- <elementNameDifference>
- <parentElement><xsl:value-of select="name(..)"/></parentElement>
- <before><xsl:value-of select="name($ns1[$i])"/></before>
- <after><xsl:value-of select="name($ns2[$i])"/></after>
- </elementNameDifference>
- </xsl:if>
-
- <!-- Element Value compare -->
-
- <xsl:if test="count($ns1/*) = 0">
- <xsl:if test="$ns1[$i] != $ns2[$i]">
- <elementValueDifference>
- <parentElement><xsl:value-of select="name(..)"/></parentElement>
- <before><xsl:value-of select="$ns1[$i]"/></before>
- <after><xsl:value-of select="$ns2[$i]"/></after>
- </elementValueDifference>
- </xsl:if>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each select="$ns2">
- <xsl:variable name="i" select="position()"/>
-
- <!-- Element Name compare -->
-
- <xsl:if test="name($ns1[$i]) != name($ns2[$i])">
- <elementNameDifference>
- <parentElement><xsl:value-of select="name(..)"/></parentElement>
- <before><xsl:value-of select="name($ns1[$i])"/></before>
- <after><xsl:value-of select="name($ns2[$i])"/></after>
- </elementNameDifference>
-
- </xsl:if>
-
- <!-- value compare -->
-
- <xsl:if test="count($ns2/*) = 0">
- <xsl:if test="$ns2[$i] != $ns1[$i]">
- <elementValueDifference>
- <parentElement><xsl:value-of select="name(..)"/></parentElement>
- <after><xsl:value-of select="$ns2[$i]"/></after>
- <before><xsl:value-of select="$ns1[$i]"/></before>
- </elementValueDifference>
- </xsl:if>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- stop processing when leaf node is reached. -->
-
- <xsl:if test="count($ns1/*) &gt; 0 and count($ns2/*) &gt; 0">
- <xsl:call-template name="cmp:diff">
- <xsl:with-param name="ns1" select="$ns1/*"/>
- <xsl:with-param name="ns2" select="$ns2/*"/>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <!-- Return false if the two nodesets are not identical
- -->
-
- <doc:template name="cmp:cmp">
- <refpurpose>Compare</refpurpose>
-
- <refdescription>
- <para>Recursively compare two xml nodesets, stop when a difference is found and return false. Otherwise return true if the document is identical. </para>
-
- <para>The element names from the documents at the current depth are compared, followed by their values, then any attribute names and values are compared. The process is applied then to the subtrees of the documents.</para>
-
- <para>Notes: If there are leaf nodes in one nodeset which don't exist in the other, the value of those 'extra' elements won't appear as a difference.
- </para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>ns1</term>
- <term>ns2</term>
- <listitem>
- <para>The two nodesets which are to be compared. </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>False when the nodesets are not identical, empty otherwise. </para>
-
- </refreturn>
- </doc:template>
-
- <xsl:template name="cmp:cmp">
- <xsl:param name="ns1"/>
- <xsl:param name="ns2"/>
- <xsl:param name="depth"/>
-
- <xsl:choose>
- <xsl:when test='count($ns1) != count($ns2)'>
- <xsl:value-of select='"countDiff"'/>
- </xsl:when>
- <xsl:when test='count($ns1/attribute::*) != count($ns2/attribute::*)'>
- <xsl:value-of select='"countDiff"'/>
- </xsl:when>
- <xsl:when test='$ns1 and $ns2'>
-
- <xsl:variable name='result'>
- <xsl:call-template name='cmp:cmp'>
- <xsl:with-param name='ns1' select='$ns1/*'/>
- <xsl:with-param name='ns2' select='$ns2/*'/>
- <xsl:with-param name='depth' select='$depth+1'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test='$result = "countDiff"'>
- <xsl:value-of select='$result'/>
- </xsl:when>
- <xsl:when test='$result = "textDiff"'>
- <xsl:value-of select='$result'/>
- </xsl:when>
- <xsl:when test='$result = ""'>
-
- <xsl:variable name='keyText1' select='name($ns1)'/>
- <xsl:variable name='keyText2' select='name($ns2)'/>
-
- <xsl:choose>
- <!-- Check if the text of the nodesets are the same and the attributes-->
- <xsl:when test='$ns1 = $ns2 and $keyText1 = $keyText2'>
-
- <!-- Check the attribute names are the same -->
- <!-- Number of attributes being different is caught higher up -->
- <xsl:if test='count($ns1/attribute::*)'>
- <xsl:for-each select='$ns1/attribute::*'>
- <xsl:variable name='i' select='position()'/>
- <xsl:variable name='name1' select='name(.)'/>
- <xsl:variable name='value1' select='.'/>
-
- <xsl:for-each select='$ns2/attribute::*'>
- <xsl:variable name='j' select='position()'/>
- <xsl:variable name='name2' select='name(.)'/>
- <xsl:variable name='value2' select='.'/>
-
- <xsl:if test='$i = $j and ($name1 != $name2 or
- $value1 != $value2)'>
- <xsl:value-of select='"textDiff"'/>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:for-each>
- </xsl:if>
- <!--
- <xsl:variable name='diffResult'>
- <xsl:call-template name='cmp:diff'>
- <xsl:with-param name='ns1' select='$ns1'/>
- <xsl:with-param name='ns2' select='$ns2'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:if test='not($diffResult = "")'>
- <xsl:value-of select='"textDiff"'/>
- </xsl:if>
- -->
-
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='"textDiff"'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-
- </xsl:when>
- <xsl:when test='$ns1 and not($ns2)'>
- <xsl:value-of select='"structDiff"'/>
- </xsl:when>
- <xsl:when test='$ns2 and not($ns1)'>
- <xsl:value-of select='"structDiff"'/>
- </xsl:when>
- </xsl:choose>
-
- </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/slides/keynote/xsltsl/date-time.xsl b/slides/keynote/xsltsl/date-time.xsl
deleted file mode 100644
index 671260d..0000000
--- a/slides/keynote/xsltsl/date-time.xsl
+++ /dev/null
@@ -1,1524 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:dt="http://xsltsl.org/date-time"
- xmlns:str="http://xsltsl.org/string"
- extension-element-prefixes="doc str">
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: date-time.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Diamond</surname>
- <firstname>Jason</firstname>
- </author>
- <copyright>
- <year>2004</year>
- <holder>Steve Ball</holder>
- </copyright>
- <copyright>
- <year>2001</year>
- <holder>Jason Diamond</holder>
- </copyright>
- </referenceinfo>
-
- <title>Date/Time Processing</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This module provides templates for formatting and parsing date/time strings.</para>
-
- <para>See <ulink url="http://www.tondering.dk/claus/calendar.html">http://www.tondering.dk/claus/calendar.html</ulink> for more information on calendars and the calculations this library performs.</para>
-
- </section>
- </partintro>
-
- </doc:reference>
-
- <doc:template name="dt:format-date-time" xmlns="">
- <refpurpose>Returns a string with a formatted date/time.</refpurpose>
-
- <refdescription>
- <para>The formatted date/time is determined by the format parameter. The default format is %Y-%m-%dT%H:%M:%S%z, the W3C format.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
-
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>The date-time value in XML Schemas (WXS) format.</para>
- <para>If this value is specified, it takes priority over other parameters.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>year</term>
- <listitem>
- <para>Year, in either 2 or 4+ digit format..</para>
- <para>If the year is given as a two digit value, it will be converted to a four digit value using the fixed window method. Values between 00 and 49 will be prepended by "20". Values between 50 and 99 will be prepended by "19".</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; January = 1)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>day</term>
- <listitem>
- <para>Day of month (1 - 31)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>hour</term>
- <listitem>
- <para>Hours since midnight (0 - 23)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>minute</term>
- <listitem>
- <para>Minutes after hour (0 - 59)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>second</term>
- <listitem>
- <para>Seconds after minute (0 - 59)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>time-zone</term>
- <listitem>
- <para>Time zone string (e.g., 'Z' or '-08:00')</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>format</term>
- <listitem>
- <para>The format specification.</para>
- <variablelist>
-
- <varlistentry>
- <term>%a</term>
- <listitem>
- <para>Abbreviated weekday name</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%A</term>
- <listitem>
- <para>Full weekday name</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%b</term>
- <listitem>
- <para>Abbreviated month name</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%B</term>
- <listitem>
- <para>Full month name</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%c</term>
- <listitem>
- <para>Date and time representation appropriate for locale</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%d</term>
- <listitem>
- <para>Day of month as decimal number (01 - 31)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%e</term>
- <listitem>
- <para>Day of month as decimal number (1 - 31)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%H</term>
- <listitem>
- <para>Hour in 24-hour format (00 - 23)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%I</term>
- <listitem>
- <para>Hour in 12-hour format (01 - 12)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%i</term>
- <listitem>
- <para>Hour in 12-hour format (1 - 12)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%j</term>
- <listitem>
- <para>Day of year as decimal number (001 - 366)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%m</term>
- <listitem>
- <para>Month as decimal number (01 - 12)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%n</term>
- <listitem>
- <para>Month as decimal number (1 - 12)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%M</term>
- <listitem>
- <para>Minute as decimal number (00 - 59)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%P</term>
- <listitem>
- <para>Current locale's A.M./P.M. indicator for 12-hour clock, uppercase</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%Q</term>
- <listitem>
- <para>Current locale's A.M./P.M. indicator for 12-hour clock, uppercase with periods</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%p</term>
- <listitem>
- <para>Current locale's A.M./P.M. indicator for 12-hour clock, lowercase</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%q</term>
- <listitem>
- <para>Current locale's A.M./P.M. indicator for 12-hour clock, lowercase with periods</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%S</term>
- <listitem>
- <para>Second as decimal number (00 - 59)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%U</term>
- <listitem>
- <para>Week of year as decimal number, with Sunday as first day of week (00 - 53)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%w</term>
- <listitem>
- <para>Weekday as decimal number (0 - 6; Sunday is 0)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%W</term>
- <listitem>
- <para>Week of year as decimal number, with Monday as first day of week (00 - 53)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%x</term>
- <listitem>
- <para>Date representation for current locale </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%X</term>
- <listitem>
- <para>Time representation for current locale</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%y</term>
- <listitem>
- <para>Year without century, as decimal number (00 - 99)</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%Y</term>
- <listitem>
- <para>Year with century, as decimal number</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%z</term>
- <listitem>
- <para>Time-zone name or abbreviation; no characters if time zone is unknown</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>%%</term>
- <listitem>
- <para>Percent sign</para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a formatted date/time string.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:format-date-time">
- <xsl:param name='xsd-date-time'/>
- <xsl:param name="year"/>
- <xsl:param name="month"/>
- <xsl:param name="day"/>
- <xsl:param name="hour"/>
- <xsl:param name="minute"/>
- <xsl:param name="second"/>
- <xsl:param name="time-zone"/>
- <xsl:param name="format" select="'%Y-%m-%dT%H:%M:%S%z'"/>
-
- <xsl:value-of select="substring-before($format, '%')"/>
-
- <xsl:variable name="code" select="substring(substring-after($format, '%'), 1, 1)"/>
-
- <xsl:choose>
-
- <xsl:when test='$xsd-date-time'>
- <xsl:call-template name='dt:format-date-time'>
- <xsl:with-param name='year'>
- <xsl:call-template name='dt:get-xsd-datetime-year'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='month'>
- <xsl:call-template name='dt:get-xsd-datetime-month'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='day'>
- <xsl:call-template name='dt:get-xsd-datetime-day'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='hour'>
- <xsl:call-template name='dt:get-xsd-datetime-hour'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='minute'>
- <xsl:call-template name='dt:get-xsd-datetime-minute'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='second'>
- <xsl:call-template name='dt:get-xsd-datetime-second'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='time-zone'>
- <xsl:call-template name='dt:get-xsd-datetime-timezone'>
- <xsl:with-param name='xsd-date-time' select='$xsd-date-time'/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name='format'>
- <xsl:choose>
- <xsl:when test='contains($format, "%")'>
- <xsl:text>%</xsl:text>
- <xsl:value-of select='substring-after($format, "%")'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='$format'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Abbreviated weekday name -->
- <xsl:when test="$code='a'">
- <xsl:variable name="day-of-the-week">
- <xsl:call-template name="dt:calculate-day-of-the-week">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="dt:get-day-of-the-week-abbreviation">
- <xsl:with-param name="day-of-the-week" select="$day-of-the-week"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Full weekday name -->
- <xsl:when test="$code='A'">
- <xsl:variable name="day-of-the-week">
- <xsl:call-template name="dt:calculate-day-of-the-week">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="dt:get-day-of-the-week-name">
- <xsl:with-param name="day-of-the-week" select="$day-of-the-week"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Abbreviated month name -->
- <xsl:when test="$code='b'">
- <xsl:call-template name="dt:get-month-abbreviation">
- <xsl:with-param name="month" select="$month"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Full month name -->
- <xsl:when test="$code='B'">
- <xsl:call-template name="dt:get-month-name">
- <xsl:with-param name="month" select="$month"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Date and time representation appropriate for locale -->
- <xsl:when test="$code='c'">
- <xsl:text>[not implemented]</xsl:text>
- </xsl:when>
-
- <!-- Day of month as decimal number (01 - 31) -->
- <xsl:when test="$code='d'">
- <xsl:if test="$day &lt; 10">0</xsl:if>
- <xsl:value-of select="number($day)"/>
- </xsl:when>
- <!-- Day of month as decimal number (1 - 31) -->
- <xsl:when test="$code='e'">
- <xsl:value-of select="number($day)"/>
- </xsl:when>
-
- <!-- Hour in 24-hour format (00 - 23) -->
- <xsl:when test="$code='H'">
- <xsl:if test="$hour &lt; 10">0</xsl:if>
- <xsl:value-of select="number($hour)"/>
- </xsl:when>
-
- <!-- Hour in 12-hour format (01 - 12) -->
- <xsl:when test="$code='I'">
- <xsl:choose>
- <xsl:when test="$hour = 0">12</xsl:when>
- <xsl:when test="$hour &lt; 10">0<xsl:value-of select="$hour - 0"/></xsl:when>
- <xsl:when test="$hour &lt; 13"><xsl:value-of select="$hour - 0"/></xsl:when>
- <xsl:when test="$hour &lt; 22">0<xsl:value-of select="$hour - 12"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$hour - 12"/></xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- Hour in 12-hour format (1 - 12) -->
- <xsl:when test="$code='i'">
- <xsl:choose>
- <xsl:when test="$hour = 0">12</xsl:when>
- <xsl:when test="$hour &lt; 10"><xsl:value-of select="$hour - 0"/></xsl:when>
- <xsl:when test="$hour &lt; 13"><xsl:value-of select="$hour - 0"/></xsl:when>
- <xsl:when test="$hour &lt; 22"><xsl:value-of select="$hour - 12"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$hour - 12"/></xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <!-- Day of year as decimal number (001 - 366) -->
- <xsl:when test="$code='j'">
- <xsl:text>[not implemented]</xsl:text>
- </xsl:when>
-
- <!-- Month as decimal number (01 - 12) -->
- <xsl:when test="$code='m'">
- <xsl:if test="$month &lt; 10">0</xsl:if>
- <xsl:value-of select="number($month)"/>
- </xsl:when>
- <!-- Month as decimal number (1 - 12) -->
- <xsl:when test="$code='n'">
- <xsl:value-of select="number($month)"/>
- </xsl:when>
-
- <!-- Minute as decimal number (00 - 59) -->
- <xsl:when test="$code='M'">
- <xsl:if test="$minute &lt; 10">0</xsl:if>
- <xsl:value-of select="number($minute)"/>
- </xsl:when>
-
- <!-- Current locale's A.M./P.M. indicator for 12-hour clock -->
- <xsl:when test="$code='p'">
- <xsl:choose>
- <xsl:when test="$hour &lt; 12">am</xsl:when>
- <xsl:otherwise>pm</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- Current locale's A.M./P.M. indicator for 12-hour clock with periods -->
- <xsl:when test="$code='q'">
- <xsl:choose>
- <xsl:when test="$hour &lt; 12">am</xsl:when>
- <xsl:otherwise>p.m.</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- Current locale's A.M./P.M. indicator for 12-hour clock -->
- <xsl:when test="$code='P'">
- <xsl:choose>
- <xsl:when test="$hour &lt; 12">AM</xsl:when>
- <xsl:otherwise>PM</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- Current locale's A.M./P.M. indicator for 12-hour clock with periods -->
- <xsl:when test="$code='Q'">
- <xsl:choose>
- <xsl:when test="$hour &lt; 12">AM</xsl:when>
- <xsl:otherwise>P.M.</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <!-- Second as decimal number (00 - 59) -->
- <xsl:when test="$code='S'">
- <xsl:if test="$second &lt; 10">0</xsl:if>
- <xsl:value-of select="number($second)"/>
- </xsl:when>
-
- <!-- Week of year as decimal number, with Sunday as first day of week (00 - 53) -->
- <xsl:when test="$code='U'">
- <!-- add 1 to day -->
- <xsl:call-template name="dt:calculate-week-number">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day + 1"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Weekday as decimal number (0 - 6; Sunday is 0) -->
- <xsl:when test="$code='w'">
- <xsl:call-template name="dt:calculate-day-of-the-week">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Week of year as decimal number, with Monday as first day of week (00 - 53) -->
- <xsl:when test="$code='W'">
- <xsl:call-template name="dt:calculate-week-number">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Date representation for current locale -->
- <xsl:when test="$code='x'">
- <xsl:text>[not implemented]</xsl:text>
- </xsl:when>
-
- <!-- Time representation for current locale -->
- <xsl:when test="$code='X'">
- <xsl:text>[not implemented]</xsl:text>
- </xsl:when>
-
- <!-- Year without century, as decimal number (00 - 99) -->
- <xsl:when test="$code='y'">
- <xsl:choose>
- <xsl:when test='not(number($year))'>invalid year value</xsl:when>
-
- <!-- workaround MSXML bug -->
- <xsl:when test='number($year) mod 100 = 0'>00</xsl:when>
-
- <xsl:otherwise>
- <xsl:number format='01' value='number($year) mod 100'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <!-- Year with century, as decimal number -->
- <xsl:when test="$code='Y'">
- <xsl:choose>
- <xsl:when test='not(number($year))'>invalid year value</xsl:when>
- <xsl:when test='string-length($year) = 2'>
- <xsl:call-template name='dt:format-two-digit-year'>
- <xsl:with-param name='year' select='$year'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='string-length($year) >= 4'>
- <xsl:value-of select='$year'/>
- </xsl:when>
- <xsl:otherwise>invalid year value</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <!-- Time-zone name or abbreviation; no characters if time zone is unknown -->
- <xsl:when test="$code='z'">
- <xsl:value-of select="$time-zone"/>
- </xsl:when>
-
- <!-- Percent sign -->
- <xsl:when test="$code='%'">
- <xsl:text>%</xsl:text>
- </xsl:when>
-
- </xsl:choose>
-
- <xsl:variable name="remainder" select="substring(substring-after($format, '%'), 2)"/>
-
- <xsl:if test="not($xsd-date-time) and $remainder">
- <xsl:call-template name="dt:format-date-time">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- <xsl:with-param name="hour" select="$hour"/>
- <xsl:with-param name="minute" select="$minute"/>
- <xsl:with-param name="second" select="$second"/>
- <xsl:with-param name="time-zone" select="$time-zone"/>
- <xsl:with-param name="format" select="$remainder"/>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <doc:template name="dt:calculate-day-of-the-week" xmlns="">
- <refpurpose>Calculates the day of the week.</refpurpose>
-
- <refdescription>
- <para>Given any Gregorian date, this calculates the day of the week.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>year</term>
- <listitem>
- <para>Year</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; January = 1)</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>day</term>
- <listitem>
- <para>Day of month (1 - 31)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the day of the week (0 - 6; Sunday = 0).</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:calculate-day-of-the-week">
- <xsl:param name="year"/>
- <xsl:param name="month"/>
- <xsl:param name="day"/>
-
- <xsl:variable name="a" select="floor((14 - $month) div 12)"/>
- <xsl:variable name="y" select="$year - $a"/>
- <xsl:variable name="m" select="$month + 12 * $a - 2"/>
-
- <xsl:value-of select="($day + $y + floor($y div 4) - floor($y div 100) + floor($y div 400) + floor((31 * $m) div 12)) mod 7"/>
-
- </xsl:template>
-
- <doc:template name="dt:calculate-last-day-of-month" xmlns="">
- <refpurpose>Calculates the number of days for a specified month.</refpurpose>
-
- <refdescription>
- <para>Given any Gregorian month, this calculates the last day of the month.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>year</term>
- <listitem>
- <para>Year</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; January = 1)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the number of days in given month as a decimal number.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="dt:calculate-last-day-of-month">
- <xsl:param name="year"/>
- <xsl:param name="month"/>
-
- <xsl:choose>
- <xsl:when test="$month = 2">
- <xsl:choose>
- <xsl:when test="($year mod 4) = 0 and (($year mod 400) = 0
- or ($year mod 100) != 0)">29</xsl:when>
- <xsl:otherwise>28</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$month &lt; 8">
- <xsl:choose>
- <xsl:when test="$month mod 2 = 0">30</xsl:when>
- <xsl:otherwise>31</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="$month mod 2 = 1">30</xsl:when>
- <xsl:otherwise>31</xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-day-of-the-week-name" xmlns="">
- <refpurpose>Gets the day of the week's full name.</refpurpose>
-
- <refdescription>
- <para>Converts a numeric day of the week value into a string representing the day's full name.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>day-of-the-week</term>
- <listitem>
- <para>Day of the week (0 - 6; Sunday = 0)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a string.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:get-day-of-the-week-name">
- <xsl:param name="day-of-the-week"/>
-
- <xsl:choose>
- <xsl:when test="$day-of-the-week = 0">Sunday</xsl:when>
- <xsl:when test="$day-of-the-week = 1">Monday</xsl:when>
- <xsl:when test="$day-of-the-week = 2">Tuesday</xsl:when>
- <xsl:when test="$day-of-the-week = 3">Wednesday</xsl:when>
- <xsl:when test="$day-of-the-week = 4">Thursday</xsl:when>
- <xsl:when test="$day-of-the-week = 5">Friday</xsl:when>
- <xsl:when test="$day-of-the-week = 6">Saturday</xsl:when>
- <xsl:otherwise>error: <xsl:value-of select="$day-of-the-week"/></xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="dt:get-day-of-the-week-abbreviation" xmlns="">
- <refpurpose>Gets the day of the week's abbreviation.</refpurpose>
-
- <refdescription>
- <para>Converts a numeric day of the week value into a string representing the day's abbreviation.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>day-of-the-week</term>
- <listitem>
- <para>Day of the week (0 - 6; Sunday = 0)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a string.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:get-day-of-the-week-abbreviation">
- <xsl:param name="day-of-the-week"/>
-
- <xsl:choose>
- <xsl:when test="$day-of-the-week = 0">Sun</xsl:when>
- <xsl:when test="$day-of-the-week = 1">Mon</xsl:when>
- <xsl:when test="$day-of-the-week = 2">Tue</xsl:when>
- <xsl:when test="$day-of-the-week = 3">Wed</xsl:when>
- <xsl:when test="$day-of-the-week = 4">Thu</xsl:when>
- <xsl:when test="$day-of-the-week = 5">Fri</xsl:when>
- <xsl:when test="$day-of-the-week = 6">Sat</xsl:when>
- <xsl:otherwise>error: <xsl:value-of select="$day-of-the-week"/></xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="dt:get-month-name" xmlns="">
- <refpurpose>Gets the month's full name.</refpurpose>
-
- <refdescription>
- <para>Converts a numeric month value into a string representing the month's full name.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; Januaray = 1)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a string.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:get-month-name">
- <xsl:param name="month"/>
-
- <xsl:choose>
- <xsl:when test="$month = 1">January</xsl:when>
- <xsl:when test="$month = 2">February</xsl:when>
- <xsl:when test="$month = 3">March</xsl:when>
- <xsl:when test="$month = 4">April</xsl:when>
- <xsl:when test="$month = 5">May</xsl:when>
- <xsl:when test="$month = 6">June</xsl:when>
- <xsl:when test="$month = 7">July</xsl:when>
- <xsl:when test="$month = 8">August</xsl:when>
- <xsl:when test="$month = 9">September</xsl:when>
- <xsl:when test="$month = 10">October</xsl:when>
- <xsl:when test="$month = 11">November</xsl:when>
- <xsl:when test="$month = 12">December</xsl:when>
- <xsl:otherwise>error: <xsl:value-of select="$month"/></xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="dt:get-month-abbreviation" xmlns="">
- <refpurpose>Gets the month's abbreviation.</refpurpose>
-
- <refdescription>
- <para>Converts a numeric month value into a string representing the month's abbreviation.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; Januaray = 1)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a string.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:get-month-abbreviation">
- <xsl:param name="month"/>
-
- <xsl:choose>
- <xsl:when test="$month = 1">Jan</xsl:when>
- <xsl:when test="$month = 2">Feb</xsl:when>
- <xsl:when test="$month = 3">Mar</xsl:when>
- <xsl:when test="$month = 4">Apr</xsl:when>
- <xsl:when test="$month = 5">May</xsl:when>
- <xsl:when test="$month = 6">Jun</xsl:when>
- <xsl:when test="$month = 7">Jul</xsl:when>
- <xsl:when test="$month = 8">Aug</xsl:when>
- <xsl:when test="$month = 9">Sep</xsl:when>
- <xsl:when test="$month = 10">Oct</xsl:when>
- <xsl:when test="$month = 11">Nov</xsl:when>
- <xsl:when test="$month = 12">Dec</xsl:when>
- <xsl:otherwise>error: <xsl:value-of select="$month"/></xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="dt:calculate-julian-day" xmlns="">
- <refpurpose>Calculates the Julian Day for a specified date.</refpurpose>
-
- <refdescription>
- <para>Given any Gregorian date, this calculates the Julian Day.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>year</term>
- <listitem>
- <para>Year</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; January = 1)</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>day</term>
- <listitem>
- <para>Day of month (1 - 31)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the Julian Day as a decimal number.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:calculate-julian-day">
- <xsl:param name="year"/>
- <xsl:param name="month"/>
- <xsl:param name="day"/>
-
- <xsl:variable name="a" select="floor((14 - $month) div 12)"/>
- <xsl:variable name="y" select="$year + 4800 - $a"/>
- <xsl:variable name="m" select="$month + 12 * $a - 3"/>
-
- <xsl:value-of select="$day + floor((153 * $m + 2) div 5) + $y * 365 + floor($y div 4) - floor($y div 100) + floor($y div 400) - 32045"/>
-
- </xsl:template>
-
- <doc:template name="dt:format-julian-day" xmlns="">
- <refpurpose>Returns a string with a formatted date for a specified Julian Day.</refpurpose>
-
- <refdescription>
- <para>Given any Julian Day, this returns a string according to the format specification.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>julian-day</term>
- <listitem>
- <para>A Julian Day</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>format</term>
- <listitem>
- <para>The format specification. See dt:format-date-time for more details.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>A string.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:format-julian-day">
- <xsl:param name="julian-day"/>
- <xsl:param name="format" select="'%Y-%m-%d'"/>
-
- <xsl:variable name="a" select="$julian-day + 32044"/>
- <xsl:variable name="b" select="floor((4 * $a + 3) div 146097)"/>
- <xsl:variable name="c" select="$a - floor(($b * 146097) div 4)"/>
-
- <xsl:variable name="d" select="floor((4 * $c + 3) div 1461)"/>
- <xsl:variable name="e" select="$c - floor((1461 * $d) div 4)"/>
- <xsl:variable name="m" select="floor((5 * $e + 2) div 153)"/>
-
- <xsl:variable name="day" select="$e - floor((153 * $m + 2) div 5) + 1"/>
- <xsl:variable name="month" select="$m + 3 - 12 * floor($m div 10)"/>
- <xsl:variable name="year" select="$b * 100 + $d - 4800 + floor($m div 10)"/>
-
- <xsl:call-template name="dt:format-date-time">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- <xsl:with-param name="format" select="$format"/>
- </xsl:call-template>
-
- </xsl:template>
-
- <doc:template name="dt:calculate-week-number" xmlns="">
- <refpurpose>Calculates the week number for a specified date.</refpurpose>
-
- <refdescription>
- <para>Assumes Monday is the first day of the week.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>year</term>
- <listitem>
- <para>Year</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month (1 - 12; January = 1)</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>day</term>
- <listitem>
- <para>Day of month (1 - 31)</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the week number as a decimal number.</para>
- </refreturn>
-
- </doc:template>
-
- <xsl:template name="dt:calculate-week-number">
- <xsl:param name="year"/>
- <xsl:param name="month"/>
- <xsl:param name="day"/>
-
- <xsl:variable name="J">
- <xsl:call-template name="dt:calculate-julian-day">
- <xsl:with-param name="year" select="$year"/>
- <xsl:with-param name="month" select="$month"/>
- <xsl:with-param name="day" select="$day"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="d4" select="($J + 31741 - ($J mod 7)) mod 146097 mod 36524 mod 1461"/>
- <xsl:variable name="L" select="floor($d4 div 1460)"/>
- <xsl:variable name="d1" select="(($d4 - $L) mod 365) + $L"/>
-
- <xsl:value-of select="floor($d1 div 7) + 1"/>
-
- </xsl:template>
-
- <doc:template name="dt:get-month-number" xmlns="">
- <refpurpose>Take a month by name and return a number which can be used as input to the templates. </refpurpose>
-
- <refdescription>
- <para>Input</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>month</term>
- <listitem>
- <para>Month as described either by full name or abbreviation.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Return a month as a decimal number. (Jan = 1)</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-month-number'>
- <xsl:param name='month'/>
-
- <xsl:variable name='monToUpper'>
- <xsl:call-template name='str:to-upper'>
- <xsl:with-param name='text' select='$month'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test='starts-with($monToUpper,"JAN")'>
- <xsl:value-of select='"1"'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"FEB")'>
- <xsl:value-of select='2'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"MAR")'>
- <xsl:value-of select='3'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"APR")'>
- <xsl:value-of select='4'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"MAY")'>
- <xsl:value-of select='5'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"JUN")'>
- <xsl:value-of select='6'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"JUL")'>
- <xsl:value-of select='7'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"AUG")'>
- <xsl:value-of select='8'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"SEP")'>
- <xsl:value-of select='9'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"OCT")'>
- <xsl:value-of select='10'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"NOV")'>
- <xsl:value-of select='11'/>
- </xsl:when>
- <xsl:when test='starts-with($monToUpper,"DEC")'>
- <xsl:value-of select='"12"'/>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-year" xmlns="">
- <refpurpose>Return year component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns year component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-year'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-year'>
- <xsl:with-param name='xsd-date-time' select='substring-before($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check for time -->
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'/>
-
- <xsl:otherwise>
- <!-- This is a date -->
- <xsl:value-of select='substring-before($xsd-date-time, "-")'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-month" xmlns="">
- <refpurpose>Return month component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns month component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-month'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-month'>
- <xsl:with-param name='xsd-date-time' select='substring-before($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check for time -->
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'/>
-
- <xsl:otherwise>
- <!-- This is a date -->
- <xsl:value-of select='substring(substring-after($xsd-date-time, "-"), 1, 2)'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-day" xmlns="">
- <refpurpose>Return day component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns day component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-day'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-day'>
- <xsl:with-param name='xsd-date-time' select='substring-before($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check for time -->
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'/>
-
- <xsl:otherwise>
- <!-- This is a date -->
- <xsl:value-of select='substring(substring-after($xsd-date-time, "-"), 4, 2)'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-hour" xmlns="">
- <refpurpose>Return hour component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns hour component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-hour'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-hour'>
- <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check for time -->
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
- <xsl:value-of select='substring($xsd-date-time, 1, 2)'/>
- </xsl:when>
-
- <xsl:otherwise>
- <!-- This is a date -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-minute" xmlns="">
- <refpurpose>Return minute component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns minute component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-minute'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-minute'>
- <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check for time -->
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
- <xsl:value-of select='substring($xsd-date-time, 4, 2)'/>
- </xsl:when>
-
- <xsl:otherwise>
- <!-- This is a date -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-second" xmlns="">
- <refpurpose>Return second component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns second component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-second'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-second'>
- <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check for time -->
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
- <xsl:variable name='part' select='substring($xsd-date-time, 7)'/>
- <xsl:choose>
- <xsl:when test='contains($part, "Z")'>
- <xsl:value-of select='substring-before($part, "Z")'/>
- </xsl:when>
- <xsl:when test='contains($part, "+")'>
- <xsl:value-of select='substring-before($part, "+")'/>
- </xsl:when>
- <xsl:when test='contains($part, "-")'>
- <xsl:value-of select='substring-before($part, "-")'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='$part'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:otherwise>
- <!-- This is a date -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:get-xsd-datetime-timezone" xmlns="">
- <refpurpose>Return timezone component of XSD DateTime value.</refpurpose>
-
- <refdescription>
- <para>Extract component of XML Schemas DateTime value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>xsd-date-time</term>
- <listitem>
- <para>A value in XSD DateTime format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns timezone component.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='dt:get-xsd-datetime-timezone'>
- <xsl:param name='xsd-date-time'/>
-
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "Z")'>Z</xsl:when>
- <xsl:when test='contains($xsd-date-time, "T")'>
- <xsl:call-template name='dt:get-xsd-datetime-timezone'>
- <xsl:with-param name='xsd-date-time' select='substring-after($xsd-date-time, "T")'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test='substring($xsd-date-time, 3, 1) = ":"'>
- <!-- This is a time -->
- <xsl:choose>
- <xsl:when test='contains($xsd-date-time, "+")'>
- <xsl:text>+</xsl:text>
- <xsl:value-of select='substring-after($xsd-date-time, "+")'/>
- </xsl:when>
- <xsl:when test='contains($xsd-date-time, "-")'>
- <xsl:text>-</xsl:text>
- <xsl:value-of select='substring-after($xsd-date-time, "-")'/>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <!-- This is a date -->
- <xsl:value-of select='substring(substring-after($xsd-date-time, "-"), 6)'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="dt:format-two-digit-year" xmlns="">
- <refpurpose>Return two digit year as four digit year value.</refpurpose>
-
- <refdescription>
- <para>Prepend century to two digit year value.</para>
- <para>Century value is calculated according to suggested solutions in RFC2626 (section 5).</para>
- <para>Fixed window solution: 20 is prepended to year if the year is less than 50, otherwise 19 is prepended to year.</para>
- <para>Sliding window solution: The year is considered in the future if the year is less than the current 2 digit year plus 'n' years (where 'n' is a param), otherwise it is considered in the past.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>year</term>
- <listitem>
- <para>A year value in 2 digit format.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>method</term>
- <listitem>
- <para>RFC2626 suggested solution ('fixed' or 'sliding'). Default is 'fixed'.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>n</term>
- <listitem>
- <para>No. of years. Used in sliding windows solution.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns four digit year value.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="dt:format-two-digit-year">
- <xsl:param name="year" />
- <xsl:param name="method" select="'fixed'"/>
-
- <xsl:choose>
- <xsl:when test="string-length($year) != 2">invalid year value</xsl:when>
- <xsl:when test="$method = 'fixed'">
- <xsl:choose>
- <xsl:when test="$year &lt; 50">20</xsl:when>
- <xsl:otherwise>19</xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$year" />
- </xsl:when>
- <xsl:when test="$method = 'window'">not yet implemented</xsl:when>
- <xsl:otherwise>invalid method</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- </xsl:stylesheet>
diff --git a/slides/keynote/xsltsl/example.xsl b/slides/keynote/xsltsl/example.xsl
deleted file mode 100644
index 349bab9..0000000
--- a/slides/keynote/xsltsl/example.xsl
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet
- version="1.0"
- extension-element-prefixes="doc"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:eg="http://xsltsl.org/example"
->
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: example.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2001</year>
- <holder>Steve Ball</holder>
- </copyright>
- </referenceinfo>
-
- <title>Example Stylesheet</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This module provides a template for adding stylesheet modules to the XSLT Standard Library.</para>
- <para>To add a new module to the library, follow these easy steps:</para>
- <orderedlist>
- <listitem>
- <para>Copy this file and replace its contents with the new module templates and documentation.</para>
- </listitem>
- <listitem>
- <para>Copy the corresponding test file in the <filename>test</filename> directory. Replace its contents with tests for the new module.</para>
- </listitem>
- <listitem>
- <para>Add an include element in the <filename>stdlib.xsl</filename> stylesheet.</para>
- </listitem>
- <listitem>
- <para>Add an entry in the <filename>test/test.xml</filename> file.</para>
- </listitem>
- <listitem>
- <para>Add entries in the <filename>test/test.xsl</filename> stylesheet.</para>
- </listitem>
- <listitem>
- <para>Add an entry in the <filename>doc/build.xml</filename> file.</para>
- </listitem>
- </orderedlist>
-
- <para>The <filename>example.xsl</filename> stylesheet provides a more extensive example.</para>
-
- </section>
- </partintro>
-
- </doc:reference>
-
- <doc:template name="eg:example" xmlns="">
- <refpurpose>Template Example</refpurpose>
-
- <refdescription>
- <para>Provides a template for writing templates. Replace this paragraph with a description of your template</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The example string</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns nothing.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="eg:example">
- <xsl:param name="text"/>
- </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/slides/keynote/xsltsl/markup.xsl b/slides/keynote/xsltsl/markup.xsl
deleted file mode 100644
index cff2485..0000000
--- a/slides/keynote/xsltsl/markup.xsl
+++ /dev/null
@@ -1,789 +0,0 @@
-<xsl:stylesheet version='1.0'
- xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
- xmlns:doc='http://xsltsl.org/xsl/documentation/1.0'
- xmlns:markup='http://xsltsl.org/markup'
- xmlns:str='http://xsltsl.org/string'
- extension-element-prefixes='doc markup str'>
-
- <doc:reference xmlns=''>
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: markup.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2003</year>
- <year>2001</year>
- <holder>Steve Ball</holder>
- </copyright>
- </referenceinfo>
-
- <title>XML Markup Templates</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This stylesheet module provides functions for generating literal XML markup.</para>
-
- </section>
- </partintro>
-
- </doc:reference>
-
- <doc:template name="markup:xml-declaration" xmlns="">
- <refpurpose>Create an XML Declaration</refpurpose>
-
- <refdescription>
- <para>This template returns an XML Declaration. Although the XSLT standard provides control over the generation of the XML Declaration, this template may be useful in circumstances where the values must be computed at runtime.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>version</term>
- <listitem>
- <para>Version number.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>standalone</term>
- <listitem>
- <para>Standalone indication. Must be value "yes" or "no".</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>encoding</term>
- <listitem>
- <para>Character encoding.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an XML Declaration as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:xml-declaration'>
- <xsl:param name='version' select="'1.0'"/>
- <xsl:param name='standalone'/>
- <xsl:param name='encoding'/>
-
- <xsl:text disable-output-escaping='yes'>&lt;?xml version="</xsl:text>
- <xsl:copy-of select="$version"/>
- <xsl:text>"</xsl:text>
-
- <xsl:choose>
- <xsl:when test="string-length($standalone) = 0"/>
- <xsl:when test='$standalone = "yes" or $standalone = "no"'>
- <xsl:text> standalone="</xsl:text>
- <xsl:copy-of select="$standalone"/>
- <xsl:text>"</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">invalid value "<xsl:value-of select="$standalone"/>" for standalone attribute</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test='string-length($encoding) &gt; 0'>
- <xsl:text> encoding="</xsl:text>
- <xsl:copy-of select='$encoding'/>
- <xsl:text>"</xsl:text>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>?&gt;
-</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:doctype-declaration" xmlns="">
- <refpurpose>Create a Document Type Declaration</refpurpose>
-
- <refdescription>
- <para>This template returns a Document Type Declaration. Although the XSLT standard provides control over the generation of a Document Type Declaration, this template may be useful in circumstances where the values for the identifiers or the internal subset must be computed at runtime.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>docel</term>
- <listitem>
- <para>The name of the document element.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>publicid</term>
- <listitem>
- <para>The public identifier for the external DTD subset.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>systemid</term>
- <listitem>
- <para>The system identifier for the external DTD subset.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>internaldtd</term>
- <listitem>
- <para>The internal DTD subset.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a Document Type Declaration as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:doctype-declaration'>
- <xsl:param name='docel'/>
- <xsl:param name='publicid'/>
- <xsl:param name='systemid'/>
- <xsl:param name='internaldtd'/>
-
- <xsl:if test='string-length($docel) = 0'>
- <xsl:message terminate='yes'>No document element specified</xsl:message>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE </xsl:text>
- <xsl:copy-of select="$docel"/>
-
- <xsl:call-template name='markup:external-identifier'>
- <xsl:with-param name='publicid' select='$publicid'/>
- <xsl:with-param name='systemid' select='$systemid'/>
- <xsl:with-param name='leading-space' select='true()'/>
- </xsl:call-template>
-
- <xsl:if test='string-length($internaldtd) &gt; 0'>
- <xsl:text> [</xsl:text>
- <xsl:copy-of select='$internaldtd'/>
- <xsl:text>]</xsl:text>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&gt;
-</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:element-declaration" xmlns="">
- <refpurpose>Create an Element Declaration</refpurpose>
-
- <refdescription>
- <para>This template returns an element declaration..</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>type</term>
- <listitem>
- <para>The element type.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>content-spec</term>
- <listitem>
- <para>The content specification.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an element declaration as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:element-declaration'>
- <xsl:param name='type'/>
- <xsl:param name='content-spec' select="'ANY'"/>
-
- <xsl:if test='string-length($type) = 0'>
- <xsl:message terminate='yes'>element type must be specified</xsl:message>
- </xsl:if>
- <xsl:if test='string-length($content-spec) = 0'>
- <xsl:message terminate='yes'>content specification must be specified</xsl:message>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&lt;!ELEMENT </xsl:text>
- <xsl:copy-of select='$type'/>
- <xsl:text> </xsl:text>
- <xsl:copy-of select='$content-spec'/>
- <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:attlist-declaration" xmlns="">
- <refpurpose>Create an Attribute List Declaration</refpurpose>
-
- <refdescription>
- <para>This template returns an attribute list declaration.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>type</term>
- <listitem>
- <para>The element type.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>attr-defns</term>
- <listitem>
- <para>Attribute definitions.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an attribute list declaration as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:attlist-declaration'>
- <xsl:param name='type'/>
- <xsl:param name='attr-defns'/>
-
- <xsl:if test='string-length($type) = 0'>
- <xsl:message terminate='yes'>element type must be specified</xsl:message>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&lt;!ATTLIST </xsl:text>
- <xsl:copy-of select='$type'/>
- <xsl:text> </xsl:text>
- <xsl:copy-of select='$attr-defns'/>
- <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:attribute-definition" xmlns="">
- <refpurpose>Create an Attribute Definition</refpurpose>
-
- <refdescription>
- <para>This template returns an attribute definition.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>name</term>
- <listitem>
- <para>The attribute name.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>type</term>
- <listitem>
- <para>The attribute type.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>default</term>
- <listitem>
- <para>The attribute default.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an attribute definition as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:attribute-definition'>
- <xsl:param name='name'/>
- <xsl:param name='type'/>
- <xsl:param name='default'/>
-
- <xsl:if test='string-length($name) = 0'>
- <xsl:message terminate='yes'>attribute name must be specified</xsl:message>
- </xsl:if>
- <xsl:if test='string-length($type) = 0'>
- <xsl:message terminate='yes'>attribute type must be specified</xsl:message>
- </xsl:if>
- <xsl:if test='string-length($default) = 0'>
- <xsl:message terminate='yes'>attribute default must be specified</xsl:message>
- </xsl:if>
-
- <xsl:text> </xsl:text>
- <xsl:copy-of select='$name'/>
- <xsl:text> </xsl:text>
- <xsl:copy-of select='$type'/>
- <xsl:text> </xsl:text>
- <xsl:copy-of select='$default'/>
- </xsl:template>
-
- <doc:template name="markup:entity-declaration" xmlns="">
- <refpurpose>Create an Entity Declaration</refpurpose>
-
- <refdescription>
- <para>This template returns an entity declaration.</para>
- <para>If the 'text' parameter is given a value, then an internal entity is created. If either the 'publicid' or 'systemid' parameters are given a value then an external entity is created. It is an error for the 'text' parameter to have value as well as the 'publicid', 'systemid' or 'notation' parameters.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>name</term>
- <listitem>
- <para>The entity name.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>parameter</term>
- <listitem>
- <para>Boolean value to determine whether a parameter entity is created. Default is 'false()'.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The replacement text. Must be a string.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>nodes</term>
- <listitem>
- <para>The replacement text as a nodeset. The nodeset is formatted as XML using the as-xml template. If both text and nodes are specified then nodes takes precedence.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>publicid</term>
- <listitem>
- <para>The public identifier for an external entity.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>systemid</term>
- <listitem>
- <para>The system identifier for an external entity.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>notation</term>
- <listitem>
- <para>The notation for an external entity.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an entity declaration as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:entity-declaration'>
- <xsl:param name='name'/>
- <xsl:param name='parameter' select='false()'/>
- <xsl:param name='text'/>
- <xsl:param name='nodes'/>
- <xsl:param name='publicid'/>
- <xsl:param name='systemid'/>
- <xsl:param name='notation'/>
-
- <xsl:if test='string-length($name) = 0'>
- <xsl:message terminate='yes'>entity name must be specified</xsl:message>
- </xsl:if>
- <xsl:if test='string-length($text) &gt; 0 and
- (string-length($publicid) &gt; 0 or
- string-length($systemid) &gt; 0 or
- string-length($notation) &gt; 0)'>
- <xsl:message terminate='yes'>both replacement text and external identifier specified</xsl:message>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&lt;!ENTITY </xsl:text>
- <xsl:copy-of select='$name'/>
- <xsl:text> </xsl:text>
- <xsl:if test="$parameter">
- <xsl:text>% </xsl:text>
- </xsl:if>
-
- <xsl:choose>
- <xsl:when test="$nodes">
- <xsl:call-template name='markup:quote-value'>
- <xsl:with-param name='value'>
- <xsl:call-template name="markup:as-xml">
- <xsl:with-param name="nodes" select="$nodes"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$text'>
- <xsl:call-template name='markup:quote-value'>
- <xsl:with-param name='value' select='$text'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name='markup:external-identifier'>
- <xsl:with-param name='publicid' select='$publicid'/>
- <xsl:with-param name='systemid' select='$systemid'/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test='$notation'>
- <xsl:text> NDATA "</xsl:text>
- <xsl:copy-of select='$notation'/>
- <xsl:text>"</xsl:text>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:quote-value" xmlns="">
- <refpurpose>Quote an Attribute Value</refpurpose>
-
- <refdescription>
- <para>This template returns a quoted value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>value</term>
- <listitem>
- <para>The value to quote.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a quote value as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:quote-value'>
- <xsl:param name='value'/>
-
- <xsl:variable name="quoted">
- <xsl:call-template name='markup:quote-value-aux'>
- <xsl:with-param name='value' select='$value'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="contains($value, '&lt;')">
- <xsl:call-template name='str:subst'>
- <xsl:with-param name='text' select='$quoted'/>
- <xsl:with-param name='replace'>&lt;</xsl:with-param>
- <xsl:with-param name='with'>
- <xsl:text disable-output-escaping='yes'>&amp;lt;</xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select='$quoted'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name='markup:quote-value-aux'>
- <xsl:param name='value'/>
-
- <!-- Quoting hell! -->
- <xsl:variable name="quot">&quot;</xsl:variable>
- <xsl:variable name="apos">&apos;</xsl:variable>
-
- <xsl:choose>
- <xsl:when test='contains($value, $quot) and contains($value, $apos)'>
- <xsl:text>"</xsl:text>
- <xsl:call-template name='str:subst'>
- <xsl:with-param name='text' select='$value'/>
- <xsl:with-param name='replace'>"</xsl:with-param>
- <xsl:with-param name='with'>
- <xsl:text disable-output-escaping='yes'>&amp;quot;</xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>"</xsl:text>
- </xsl:when>
- <xsl:when test='contains($value, $quot)'>
- <xsl:text>'</xsl:text>
- <xsl:value-of select='$value'/>
- <xsl:text>'</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>"</xsl:text>
- <xsl:value-of select='$value'/>
- <xsl:text>"</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="markup:external-identifier" xmlns="">
- <refpurpose>Create an External Identifier</refpurpose>
-
- <refdescription>
- <para>This template returns an external identifier.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>publicid</term>
- <listitem>
- <para>The public identifier.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>systemid</term>
- <listitem>
- <para>The system identifier.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an external identifier as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:external-identifier'>
- <xsl:param name='publicid'/>
- <xsl:param name='systemid'/>
- <xsl:param name='leading-space' select='false()'/>
-
- <xsl:choose>
- <xsl:when test='string-length($publicid) &gt; 0'>
- <xsl:if test='$leading-space'>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text disable-output-escaping='yes'>PUBLIC "</xsl:text>
- <xsl:value-of select='$publicid' disable-output-escaping='yes'/>
- <xsl:text disable-output-escaping='yes'>"</xsl:text>
- <xsl:if test='string-length($systemid) &gt; 0'>
- <xsl:text disable-output-escaping='yes'> "</xsl:text>
- <xsl:value-of select='$systemid' disable-output-escaping='yes'/>
- <xsl:text disable-output-escaping='yes'>"</xsl:text>
- </xsl:if>
- </xsl:when>
- <xsl:when test="string-length($systemid) &gt; 0">
- <xsl:if test='$leading-space'>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text disable-output-escaping='yes'>SYSTEM "</xsl:text>
- <xsl:value-of select='$systemid' disable-output-escaping='yes'/>
- <xsl:text disable-output-escaping='yes'>"</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="markup:entity-reference" xmlns="">
- <refpurpose>Create an Entity Reference</refpurpose>
-
- <refdescription>
- <para>This template returns an entity reference.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>name</term>
- <listitem>
- <para>The name of the entity.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an entity reference as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:entity-reference'>
- <xsl:param name='name'/>
-
- <xsl:text disable-output-escaping='yes'>&amp;</xsl:text>
- <xsl:value-of select='$name'/>
- <xsl:text>;</xsl:text>
-
- </xsl:template>
-
- <doc:template name="markup:notation-declaration" xmlns="">
- <refpurpose>Create a Notation Declaration</refpurpose>
-
- <refdescription>
- <para>This template returns a notation declaration.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>name</term>
- <listitem>
- <para>The notation name.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>publicid</term>
- <listitem>
- <para>The public identifier for the notation.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>systemid</term>
- <listitem>
- <para>The system identifier for the notation.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a notation declaration as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:notation-declaration'>
- <xsl:param name='name'/>
- <xsl:param name='publicid'/>
- <xsl:param name='systemid'/>
-
- <xsl:if test='string-length($name) = 0'>
- <xsl:message terminate='yes'>notation name must be specified</xsl:message>
- </xsl:if>
- <xsl:if test='string-length($publicid) = 0 and string-length($systemid) = 0'>
- <xsl:message terminate='yes'>external identifier must be specified</xsl:message>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&lt;!NOTATION </xsl:text>
- <xsl:copy-of select='$name'/>
-
- <xsl:call-template name='markup:external-identifier'>
- <xsl:with-param name='publicid' select='$publicid'/>
- <xsl:with-param name='systemid' select='$systemid'/>
- <xsl:with-param name='leading-space' select='true()'/>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:cdata-section" xmlns="">
- <refpurpose>Create a CDATA Section</refpurpose>
-
- <refdescription>
- <para>This template returns a CDATA Section. The XSLT specification provides a mechanism for instructing the XSL processor to output character data in a CDATA section for certain elements, but this template may be useful in those circumstances where not all instances of an element are to have their content placed in a CDATA section.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The content of the CDATA section.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a CDATA section as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:cdata-section'>
- <xsl:param name='text'/>
-
- <xsl:if test="contains($text, ']]&gt;')">
- <xsl:message terminate="yes">CDATA section contains "]]&gt;"</xsl:message>
- </xsl:if>
-
- <xsl:text disable-output-escaping='yes'>&lt;![CDATA[</xsl:text>
- <xsl:copy-of select='$text'/>
- <xsl:text disable-output-escaping='yes'>]]&gt;</xsl:text>
- </xsl:template>
-
- <doc:template name="markup:as-xml" xmlns="">
- <refpurpose>Format Nodeset As XML Markup</refpurpose>
-
- <refdescription>
- <para>This template returns XML markup. Each node in the given nodeset is converted to its equivalent XML markup.</para>
-
- <para>BUG: This version may not adequately handle XML Namespaces.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>nodes</term>
- <listitem>
- <para>Nodeset to format as XML.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns XML markup.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='markup:as-xml'>
- <xsl:param name='nodes'/>
-
- <xsl:if test="$nodes">
- <xsl:choose>
- <xsl:when test="$nodes[1]/self::*">
- <xsl:text disable-output-escaping='yes'>&lt;</xsl:text>
- <xsl:value-of select="name($nodes[1])"/>
- <xsl:for-each select="$nodes[1]/@*">
- <xsl:text> </xsl:text>
- <xsl:value-of select="name()"/>
- <xsl:text>=</xsl:text>
- <xsl:call-template name='markup:quote-value'>
- <xsl:with-param name='value' select='.'/>
- </xsl:call-template>
- </xsl:for-each>
-
- <xsl:choose>
- <xsl:when test='$nodes[1]/node()'>
- <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
- <xsl:call-template name='markup:as-xml'>
- <xsl:with-param name='nodes' select='$nodes[1]/node()'/>
- </xsl:call-template>
- <xsl:text disable-output-escaping='yes'>&lt;/</xsl:text>
- <xsl:value-of select="name($nodes[1])"/>
- <xsl:text disable-output-escaping='yes'>&gt;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text disable-output-escaping='yes'>/&gt;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$nodes[1]/self::text()">
- <xsl:value-of select="$nodes[1]"/>
- </xsl:when>
- <xsl:when test="$nodes[1]/self::comment()">
- <xsl:text disable-output-escaping='yes'>&lt;!--</xsl:text>
- <xsl:value-of select="$nodes[1]"/>
- <xsl:text disable-output-escaping='yes'>--&gt;</xsl:text>
- </xsl:when>
- <xsl:when test="$nodes[1]/self::processing-instruction()">
- <xsl:text disable-output-escaping='yes'>&lt;?</xsl:text>
- <xsl:value-of select="name($nodes[1])"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$nodes[1]"/>
- <xsl:text disable-output-escaping='yes'>?&gt;</xsl:text>
- </xsl:when>
-
- <xsl:when test="not($nodes[1]/parent::*)"/> <!-- root node -->
- <xsl:when test="count($nodes[1] | $nodes[1]/../namespace::*) = count($nodes[1]/../namespace::*)"/> <!-- namespace node -->
- <xsl:when test="count($nodes[1] | $nodes[1]/../@*) = count($nodes[1]/../@*)"/> <!-- attribute node -->
- </xsl:choose>
-
- <xsl:call-template name="markup:as-xml">
- <xsl:with-param name="nodes" select="$nodes[position() &gt; 1]"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/keynote/xsltsl/math.xsl b/slides/keynote/xsltsl/math.xsl
deleted file mode 100644
index e3e14dd..0000000
--- a/slides/keynote/xsltsl/math.xsl
+++ /dev/null
@@ -1,704 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:math="http://xsltsl.org/math"
- exclude-result-prefixes="doc math">
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: math.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2004</year>
- <year>2002</year>
- <holder>Steve Ball</holder>
- </copyright>
- </referenceinfo>
-
- <title>Math Module</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This module provides mathematical functions.</para>
- </section>
- </partintro>
-
- </doc:reference>
-
- <doc:template name="math:power" xmlns="">
- <refpurpose>Power</refpurpose>
-
- <refdescription>
- <para>Raises a number to a power.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>base</term>
- <listitem>
- <para>The base number. Must be a number.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>power</term>
- <listitem>
- <para>The power to raise the number to. Must be an integer.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns base multiplied by itself power times. If the base or power are not numbers or if the power is fractional then an empty string is returned.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:power">
- <xsl:param name="base"/>
- <xsl:param name="power"/>
-
- <xsl:choose>
- <xsl:when test='$power = "0" and $base = "0"'>
- <xsl:text>1</xsl:text>
- </xsl:when>
- <xsl:when test='$power = "0" and number($base)'>
- <xsl:text>1</xsl:text>
- </xsl:when>
- <xsl:when test='$power = "0" and not(number($base))'/>
- <xsl:when test='$base = "0" and number($power)'>
- <xsl:text>0</xsl:text>
- </xsl:when>
-
- <xsl:when test='not(number($base)) or not(number($power))'/>
-
- <xsl:when test='floor(number($power)) != number($power)'/>
-
- <xsl:when test='number($power) &lt; 0'>
- <xsl:variable name='x'>
- <xsl:call-template name='math:power'>
- <xsl:with-param name='base' select='$base'/>
- <xsl:with-param name='power' select='-1 * $power'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select='1 div $x'/>
- </xsl:when>
-
- <xsl:when test='number($power) = 1'>
- <xsl:value-of select='$base'/>
- </xsl:when>
-
- <xsl:when test='number($power) &gt; 0'>
- <xsl:variable name='x'>
- <xsl:call-template name='math:power'>
- <xsl:with-param name='base' select='$base'/>
- <xsl:with-param name='power' select='$power - 1'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select='$base * $x'/>
- </xsl:when>
- <xsl:otherwise/>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="math:abs" xmlns="">
- <refpurpose>Absolute Value</refpurpose>
-
- <refdescription>
- <para>Absolute value of a number.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>number</term>
- <listitem>
- <para>The number. Must be a number.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the absolute value of the number.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:abs">
- <xsl:param name="number"/>
-
- <xsl:choose>
- <xsl:when test='$number &lt; 0'>
- <xsl:value-of select='$number * -1'/>
- </xsl:when>
- <xsl:when test='$number >= 0'>
- <xsl:value-of select='$number'/>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="math:cvt-hex-decimal" xmlns="">
- <refpurpose>Conversion</refpurpose>
-
- <refdescription>
- <para>Converts a hexidecimal value to a decimal value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>value</term>
- <listitem>
- <para>The hexidecimal number. Must be a number in hexidecimal format.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the value as a decimal string. If the value is not a number then a NaN value is returned.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:cvt-hex-decimal">
- <xsl:param name="value"/>
-
- <xsl:choose>
- <xsl:when test='$value = ""'/>
-
- <xsl:when test='string-length($value) = 1'>
- <xsl:call-template name='math:cvt-hex-decimal-digit'>
- <xsl:with-param name='digit' select='$value'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name='first-digit'>
- <xsl:call-template name='math:cvt-hex-decimal-digit'>
- <xsl:with-param name='digit' select='substring($value, 1, 1)'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='remainder'>
- <xsl:call-template name='math:cvt-hex-decimal'>
- <xsl:with-param name='value' select='substring($value, 2)'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:value-of select='$first-digit * 16 + $remainder'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name='math:cvt-hex-decimal-digit'>
- <xsl:param name='digit' select='0'/>
- <xsl:choose>
- <xsl:when test='$digit &lt;= 9'>
- <xsl:value-of select='$digit'/>
- </xsl:when>
- <xsl:when test='$digit = "a" or $digit = "A"'>10</xsl:when>
- <xsl:when test='$digit = "b" or $digit = "B"'>11</xsl:when>
- <xsl:when test='$digit = "c" or $digit = "C"'>12</xsl:when>
- <xsl:when test='$digit = "d" or $digit = "D"'>13</xsl:when>
- <xsl:when test='$digit = "e" or $digit = "E"'>14</xsl:when>
- <xsl:when test='$digit = "f" or $digit = "F"'>15</xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="math:cvt-decimal-hex" xmlns="">
- <refpurpose>Conversion</refpurpose>
-
- <refdescription>
- <para>Converts a decimal value to a hexidecimal value.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>value</term>
- <listitem>
- <para>The decimal number.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the value as a hexidecimal string (lowercase). If the value is not a number then a NaN value is returned.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:cvt-decimal-hex">
- <xsl:param name="value"/>
-
- <xsl:choose>
- <xsl:when test='$value = "0"'>0</xsl:when>
- <xsl:when test='not(number($value))'>NaN</xsl:when>
-
- <xsl:when test='$value div 16 >= 1'>
- <xsl:call-template name='math:cvt-decimal-hex'>
- <xsl:with-param name='value' select='floor($value div 16)'/>
- </xsl:call-template>
- <xsl:call-template name='math:cvt-decimal-hex'>
- <xsl:with-param name='value' select='$value mod 16'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$value = 10'>a</xsl:when>
- <xsl:when test='$value = 11'>b</xsl:when>
- <xsl:when test='$value = 12'>c</xsl:when>
- <xsl:when test='$value = 13'>d</xsl:when>
- <xsl:when test='$value = 14'>e</xsl:when>
- <xsl:when test='$value = 15'>f</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='$value'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="math:ordinal" xmlns="">
- <refpurpose>Ordinal number</refpurpose>
-
- <refdescription>
- <para>Gives the ordinal number of a given counting number. For example, 1 becomes "1st".</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>number</term>
- <listitem>
- <para>An integer number.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the number with an ordinal suffix.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:ordinal">
- <xsl:param name="number"/>
-
- <xsl:choose>
- <xsl:when test='$number &lt; 0'/>
- <xsl:otherwise>
- <xsl:value-of select='$number'/>
- <xsl:choose>
- <xsl:when test='$number = 11 or $number = 12 or $number = 13'>th</xsl:when>
- <xsl:when test='$number mod 10 = 1'>st</xsl:when>
- <xsl:when test='$number mod 10 = 2'>nd</xsl:when>
- <xsl:when test='$number mod 10 = 3'>rd</xsl:when>
- <xsl:otherwise>th</xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <doc:template name="math:ordinal-as-word" xmlns="">
- <refpurpose>Returns an ordinal number</refpurpose>
-
- <refdescription>
- <para>This template returns the ordinal number for a given counting number as a word. For example "first" for 1.</para>
- <para>Only handles numbers less than 10000000 (ten million).</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>number</term>
- <listitem>
- <para>The counting number.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>conjunctive</term>
- <listitem>
- <para>Whether to add the word "and" to the result, for example "one hundred and first" rather than "one hundred first". Default is "yes".</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the ordinal number as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:ordinal-as-word">
- <xsl:param name="number" select="0"/>
- <xsl:param name='conjunctive' select='"yes"'/>
- <xsl:param name='preceding' select='0'/>
-
- <xsl:choose>
- <xsl:when test='$preceding = 1 and $number = 0'/>
- <xsl:when test='$number = 0'>zeroth</xsl:when>
-
- <xsl:when test="$number &lt; 1 or $number != floor($number)"/>
-
- <xsl:when test='$number = 1'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>first</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 2'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>second</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 3'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>third</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 4'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>fourth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 5'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>fifth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 6'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>sixth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 7'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>seventh</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 8'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>eighth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 9'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>ninth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 10'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>tenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 11'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>eleventh</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 12'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>twelveth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 13'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>thirteenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 14'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>fourteenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 15'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>fifteenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 16'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>sixteenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 17'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>seventeenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 18'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>eighteenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 19'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>nineteenth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 20'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>twentieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 30'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>thirtieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 40'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>fortieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 50'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>fiftieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 60'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>sixtieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 70'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>seventieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 80'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>eightieth</xsl:text>
- </xsl:when>
- <xsl:when test='$number = 90'>
- <xsl:if test='$preceding = 1'> and </xsl:if>
- <xsl:text>ninetieth</xsl:text>
- </xsl:when>
-
- <xsl:when test='$number mod 1000000 = 0'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000000)'/>
- </xsl:call-template>
- <xsl:text> millionth</xsl:text>
- </xsl:when>
- <xsl:when test='$number &lt; 1000000 and $number mod 1000 = 0'>
- <xsl:if test='$preceding = 1 and $conjunctive'> and </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000)'/>
- </xsl:call-template>
- <xsl:text> thousandth</xsl:text>
- </xsl:when>
- <xsl:when test='$number &lt; 1000 and $number mod 100 = 0'>
- <xsl:if test='$preceding = 1 and $conjunctive'> and </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 100)'/>
- </xsl:call-template>
- <xsl:text> hundredth</xsl:text>
- </xsl:when>
-
- <xsl:when test='$number &gt; 1000000'>
- <xsl:if test='$preceding = 1'>
- <xsl:text> </xsl:text>
- <xsl:if test='$conjunctive'>and </xsl:if>
- </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000000) * 1000000'/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when
- test='(floor(floor(($number mod 1000000) + 0.1) div 100000) > 0 and $number mod 100000 > 0) or
- (floor(floor(($number mod 100000) + 0.1) div 10000) > 0 and $number mod 10000 > 0) or
- (floor(floor(($number mod 10000) + 0.1) div 1000) > 0 and $number mod 1000 > 0) or
- (floor(floor(($number mod 1000) + 0.1) div 100) > 0 and $number mod 100 > 0) or
- (floor(floor(($number mod 100) + 0.1) div 10) > 0 and $number mod 10 > 0 and $number mod 100 > 20)'>
- <xsl:text> </xsl:text>
- <xsl:call-template name='math:ordinal-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 1000000) + 0.1)'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- <xsl:with-param name='preceding' select='0'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name='math:ordinal-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 1000000) + 0.1)'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- <xsl:with-param name='preceding' select='1'/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test='$number &gt; 1000'>
- <xsl:if test='$preceding = 1'>
- <xsl:text> </xsl:text>
- <xsl:if test='$conjunctive'>and </xsl:if>
- </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000) * 1000'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test='floor(floor(($number mod 1000) + 0.1) div 100) > 0'>
- <xsl:text> </xsl:text>
- <xsl:call-template name='math:ordinal-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 1000) + 0.1)'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- <xsl:with-param name='preceding' select='0'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name='math:ordinal-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 1000) + 0.1)'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- <xsl:with-param name='preceding' select='1'/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test='$number &gt; 100'>
- <xsl:if test='$preceding = 1'>
- <xsl:text> </xsl:text>
- <xsl:if test='$conjunctive'>and </xsl:if>
- </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 100) * 100'/>
- </xsl:call-template>
- <xsl:call-template name='math:ordinal-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 100) + 0.1)'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- <xsl:with-param name='preceding' select='1'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test='$number &gt; 20'>
- <xsl:if test='$preceding = 1'>
- <xsl:text> </xsl:text>
- <xsl:if test='$conjunctive'>and </xsl:if>
- </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 10) * 10'/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:call-template name='math:ordinal-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 10) + 0.1)'/>
- <xsl:with-param name='conjunctive' select='$conjunctive'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise/>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="math:number-as-word" xmlns="">
- <refpurpose>Returns a number as a word</refpurpose>
-
- <refdescription>
- <para>This template returns the word for a given integer number, for example "one" for 1.</para>
- <para>Only handles numbers less than 10000000 (ten million).</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>number</term>
- <listitem>
- <para>The counting number.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>conjunctive</term>
- <listitem>
- <para>Adds the word "and" where appropriate, for example.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the number as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="math:number-as-word">
- <xsl:param name="number" select="0"/>
- <xsl:param name='conjunctive' select='true()'/>
-
- <xsl:choose>
-
- <xsl:when test='$number = 0'>zero</xsl:when>
-
- <xsl:when test='$number &lt; 0'>
- <xsl:text>minus </xsl:text>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='-1 * $number'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="$number != floor($number)"/>
-
- <xsl:when test='$number mod 1000000 = 0'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000000)'/>
- </xsl:call-template>
- <xsl:text> million</xsl:text>
- </xsl:when>
- <xsl:when test='$number &gt;= 1000000'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000000)'/>
- </xsl:call-template>
- <xsl:text> million </xsl:text>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 1000000) + 0.1)'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$number mod 1000 = 0'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000)'/>
- </xsl:call-template>
- <xsl:text> thousand</xsl:text>
- </xsl:when>
- <xsl:when test='$number &gt;= 1000'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 1000)'/>
- </xsl:call-template>
- <xsl:text> thousand </xsl:text>
- <xsl:if test='$conjunctive and floor(floor(($number mod 1000) + 0.1) div 100) = 0'>and </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 1000) + 0.1)'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$number mod 100 = 0'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 100)'/>
- </xsl:call-template>
- <xsl:text> hundred</xsl:text>
- </xsl:when>
- <xsl:when test='$number &gt;= 100'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 100)'/>
- </xsl:call-template>
- <xsl:text> hundred </xsl:text>
- <xsl:if test='$conjunctive'>and </xsl:if>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 100) + 0.1)'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test='$number = 1'>one</xsl:when>
- <xsl:when test='$number = 2'>two</xsl:when>
- <xsl:when test='$number = 3'>three</xsl:when>
- <xsl:when test='$number = 4'>four</xsl:when>
- <xsl:when test='$number = 5'>five</xsl:when>
- <xsl:when test='$number = 6'>six</xsl:when>
- <xsl:when test='$number = 7'>seven</xsl:when>
- <xsl:when test='$number = 8'>eight</xsl:when>
- <xsl:when test='$number = 9'>nine</xsl:when>
- <xsl:when test='$number = 10'>ten</xsl:when>
- <xsl:when test='$number = 11'>eleven</xsl:when>
- <xsl:when test='$number = 12'>twelve</xsl:when>
- <xsl:when test='$number = 13'>thirteen</xsl:when>
- <xsl:when test='$number = 14'>fourteen</xsl:when>
- <xsl:when test='$number = 15'>fifteen</xsl:when>
- <xsl:when test='$number = 16'>sixteen</xsl:when>
- <xsl:when test='$number = 17'>seventeen</xsl:when>
- <xsl:when test='$number = 18'>eighteen</xsl:when>
- <xsl:when test='$number = 19'>nineteen</xsl:when>
- <xsl:when test='$number = 20'>twenty</xsl:when>
- <xsl:when test='$number = 30'>thirty</xsl:when>
- <xsl:when test='$number = 40'>forty</xsl:when>
- <xsl:when test='$number = 50'>fifty</xsl:when>
- <xsl:when test='$number = 60'>sixty</xsl:when>
- <xsl:when test='$number = 70'>seventy</xsl:when>
- <xsl:when test='$number = 80'>eighty</xsl:when>
- <xsl:when test='$number = 90'>ninety</xsl:when>
-
- <xsl:when test='$number &lt; 100'>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor($number div 10) * 10'/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:call-template name='math:number-as-word'>
- <xsl:with-param name='number' select='floor(($number mod 10) + 0.1)'/>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-</xsl:stylesheet>
-
diff --git a/slides/keynote/xsltsl/node.xsl b/slides/keynote/xsltsl/node.xsl
deleted file mode 100644
index bf4fd7f..0000000
--- a/slides/keynote/xsltsl/node.xsl
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:node="http://xsltsl.org/node"
- extension-element-prefixes="doc node">
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: node.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2001</year>
- <holder>Steve Ball</holder>
- </copyright>
- </referenceinfo>
-
- <title>Node Templates</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This stylesheet module provides functions for reporting on or manipulating nodes and nodesets.</para>
-
- </section>
- </partintro>
-
- </doc:reference>
-
- <doc:template name="node:xpath" xmlns="">
- <refpurpose>Returns an XPath location path</refpurpose>
-
- <refdescription>
- <para>This template returns an XPath location path that uniquely identifies the given node within the document.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>node</term>
- <listitem>
- <para>The node to create an XPath for. If this parameter is given as a nodeset, then the first node in the nodeset is used.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns an XPath location path as a string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="node:xpath">
- <xsl:param name="node" select="."/>
-
- <xsl:choose>
-
- <xsl:when test="$node">
-
- <xsl:for-each select="$node[1]/ancestor-or-self::*">
- <xsl:text/>/<xsl:value-of select="name()"/>
- <xsl:text/>[<xsl:value-of select="count(preceding-sibling::*[name() = name(current())]) + 1"/>]<xsl:text/>
- </xsl:for-each>
-
- <xsl:choose>
-
- <xsl:when test="$node[1]/self::comment()">
- <xsl:text>/comment()</xsl:text>
- <xsl:text/>[<xsl:value-of select="count($node[1]/preceding-sibling::comment()) + 1" />]<xsl:text/>
- </xsl:when>
-
- <xsl:when test="$node[1]/self::processing-instruction()">
- <xsl:text>/processing-instruction()</xsl:text>
- <xsl:text/>[<xsl:value-of select="count($node[1]/preceding-sibling::processing-instruction()) + 1" />]<xsl:text/>
- </xsl:when>
-
- <xsl:when test="$node[1]/self::text()">
- <xsl:text>/text()</xsl:text>
- <xsl:text/>[<xsl:value-of select="count($node[1]/preceding-sibling::text()) + 1" />]<xsl:text/>
- </xsl:when>
-
- <xsl:when test="not($node[1]/..)">
- <xsl:text>/</xsl:text>
- </xsl:when>
-
- <xsl:when test="count($node[1]/../namespace::* | $node[1]) = count($node[1]/../namespace::*)">
- <xsl:text/>/namespace::<xsl:value-of select="name($node[1])" />
- </xsl:when>
-
- <xsl:when test="count($node[1]/../@* | $node[1]) = count($node[1]/../@*)">
- <xsl:text/>/@<xsl:value-of select="name($node[1])" />
- </xsl:when>
-
- </xsl:choose>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:text>/..</xsl:text>
- </xsl:otherwise>
-
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="node:type" xmlns="">
- <refpurpose>Return node type</refpurpose>
-
- <refdescription>
- <para>Returns the type of a node as a string.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>node</term>
- <listitem>
- <para>The node to get the type for. If this parameter is given as a nodeset, then the first node in the nodeset is used.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns node type as a string. Values returned are:</para>
- <variablelist>
- <varlistentry>
- <term>Element</term>
- <listitem>
- <para><literal>element</literal></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Text Node</term>
- <listitem>
- <para><literal>text</literal></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Comment</term>
- <listitem>
- <para><literal>comment</literal></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Processing Instruction</term>
- <listitem>
- <para><literal>processing instruction</literal></para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refreturn>
- </doc:template>
-
- <xsl:template name="node:type">
- <xsl:param name="node" select="."/>
-
- <xsl:choose>
- <xsl:when test="not($node)"/>
- <xsl:when test="$node[1]/self::*">
- <xsl:text>element</xsl:text>
- </xsl:when>
- <xsl:when test="$node[1]/self::text()">
- <xsl:text>text</xsl:text>
- </xsl:when>
- <xsl:when test="$node[1]/self::comment()">
- <xsl:text>comment</xsl:text>
- </xsl:when>
- <xsl:when test="$node[1]/self::processing-instruction()">
- <xsl:text>processing instruction</xsl:text>
- </xsl:when>
- <xsl:when test="not($node[1]/parent::*)">
- <xsl:text>root</xsl:text>
- </xsl:when>
- <xsl:when test="count($node[1] | $node[1]/../namespace::*) = count($node[1]/../namespace::*)">
- <xsl:text>namespace</xsl:text>
- </xsl:when>
- <xsl:when test="count($node[1] | $node[1]/../@*) = count($node[1]/../@*)">
- <xsl:text>attribute</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="node:copy" xmlns="">
- <refpurpose>Copy Nodes</refpurpose>
-
- <refdescription>
- <para>Makes a copy of the given nodes, including attributes and descendants.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>nodes</term>
- <listitem>
- <para>The nodes to copy.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the copied nodes as a result tree fragment.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='node:copy'>
- <xsl:param name='nodes' select='.'/>
-
- <xsl:for-each select='$nodes'>
- <xsl:copy>
- <xsl:for-each select='@*'>
- <xsl:copy/>
- </xsl:for-each>
-
- <xsl:for-each select='node()'>
- <xsl:call-template name='node:copy'/>
- </xsl:for-each>
- </xsl:copy>
- </xsl:for-each>
- </xsl:template>
-</xsl:stylesheet>
-
diff --git a/slides/keynote/xsltsl/stdlib.xsl b/slides/keynote/xsltsl/stdlib.xsl
deleted file mode 100644
index c014f13..0000000
--- a/slides/keynote/xsltsl/stdlib.xsl
+++ /dev/null
@@ -1,340 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE xsl:stylesheet [
- <!ENTITY version "1.2.1">
-]>
-
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- exclude-result-prefixes="doc"
- version="1.0">
-
- <xsl:import href="string.xsl"/>
- <xsl:import href="date-time.xsl"/>
- <xsl:import href="node.xsl"/>
- <xsl:import href="uri.xsl"/>
- <xsl:import href="markup.xsl"/>
- <xsl:import href="math.xsl"/>
- <xsl:import href="cmp.xsl"/>
-
- <xsl:import href="svg.xsl"/>
-<!--
- <xsl:import href="html/html.xsl"/>
- <xsl:import href="fo/fo.xsl"/>
--->
-
- <!-- For a new module, add an import element here -->
- <xsl:import href="example.xsl"/>
-
- <doc:book xmlns="">
- <bookinfo>
- <title>XSLT Standard Library</title>
- <subtitle>Version &version;</subtitle>
- <!-- $Id: stdlib.xsl 3991 2004-11-10 06:51:55Z balls $ -->
-
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2004</year>
- <year>2002</year>
- <holder>Steve Ball</holder>
- </copyright>
- </bookinfo>
-
- <preface>
- <para>The <ulink url="http://www.w3.org/Style/XSL">XSLT</ulink> Standard Library, <acronym>xsltsl</acronym>, provides the XSLT developer with a set of XSLT templates for commonly used functions. These are implemented purely in XSLT, that is they do not use any extensions.</para>
- <para><acronym>xsltsl</acronym> is a <ulink url="http://sourceforge.net/projects/xsltsl/">SourceForge project</ulink>.</para>
- <para><ulink url="http://sourceforge.net/"><inlinemediaobject>
- <imageobject>
- <imagedata fileref="sflogo.gif" width="88" height="31"/>
- </imageobject>
- <textobject>
- <phrase>SourceForge Logo</phrase>
- </textobject>
- </inlinemediaobject></ulink></para>
- <para>Goals of the <acronym>xsltsl</acronym> project include:</para>
- <itemizedlist>
- <listitem>
- <para>Provision of a high-quality library of XSLT templates, suitable for inclusion by vendors in XSLT processor software products.</para>
- </listitem>
- <listitem>
- <para>Demonstration of best practice in XSLT stylesheet development and documentation.</para>
- </listitem>
- <listitem>
- <para>Provide examples of various techniques used to develop XSLT stylesheets (ie. a working FAQ).</para>
- </listitem>
- </itemizedlist>
- </preface>
-
- <chapter>
- <title>Using The Library</title>
-
- <para>There are two ways of using the library:</para>
- <itemizedlist>
- <listitem>
- <para>Use a local copy of the library.</para>
- <orderedlist>
- <listitem>
- <para>Download the distribution (see below).</para>
- </listitem>
- <listitem>
- <para>Unpack the distribution, using either gunzip/tar or unzip.</para>
- </listitem>
- <listitem>
- <para>In your stylesheet import or include either the main stylesheet, <filename>stdlib.xsl</filename>, or the stylesheet module you wish to use, such as <filename>string.xsl</filename>. This example assumes that the distribution has been extracted into the same directory as your own stylesheet:</para>
- <informalexample>
- <programlisting><![CDATA[
-<xsl:import href="stdlib.xsl"/>
-]]></programlisting>
- </informalexample>
- </listitem>
- </orderedlist>
- </listitem>
- <listitem>
- <para>Import or include either the main stylesheet, or the stylesheet module you wish to use, directly from the library website; http://xsltsl.sourceforge.net/modules/. The <filename>modules</filename> directory always contains the latest stable release. For example:</para>
- <informalexample>
- <programlisting><![CDATA[
-<xsl:import href="http://xsltsl.sourceforge.net/modules/stdlib.xsl"/>
-]]></programlisting>
- </informalexample>
- <para>Older versions of the library are available in subdirectories. For example, to access version 1.1 of the library use:</para>
- <informalexample>
- <programlisting><![CDATA[
-<xsl:import href="http://xsltsl.sourceforge.net/modules/1.1/stdlib.xsl"/>
-]]></programlisting>
- </informalexample>
- </listitem>
- </itemizedlist>
- <para>Next, add XML Namespace declarations for the modules you wish to use. For example, to use templates from the string module, your stylesheet should have the following declaration:</para>
- <informalexample>
- <programlisting><![CDATA[
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:str="http://xsltsl.org/string">
-
-<xsl:import href="http://xsltsl.sourceforge.net/modules/stdlib.xsl"/>
-]]></programlisting>
- </informalexample>
- <para>Finally, use a template with the <sgmltag>call-template</sgmltag> element. Most templates require parameters, which are passed using the <sgmltag>with-param</sgmltag> element. For example:</para>
- <informalexample>
- <programlisting><![CDATA[
-<xsl:template match="foo">
- <xsl:call-template name="str:subst">
- <xsl:with-param name="text" select="."/>
- <xsl:with-param name="replace">a word</xsl:with-param>
- <xsl:with-param name="with">another word</xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-]]></programlisting>
- </informalexample>
- </chapter>
-
- <chapter>
- <title>Obtaining The Library</title>
-
- <para>The XSLT Standard Library is available for download as either:</para>
- <itemizedlist>
- <listitem>
- <para>Gzip'd tarball: <ulink url="http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.tar.gz">http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.tar.gz</ulink></para>
- </listitem>
- <listitem>
- <para>Zip file: <ulink url="http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.zip">http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.zip</ulink></para>
- </listitem>
- </itemizedlist>
- </chapter>
-
- <chapter>
- <title>Getting Involved</title>
-
- <para>Contributions to the project are most welcome, and may be in the form of stylesheet modules, patches, bug reports or sample code. Any contributed code must use the LGPL license to be accepted into the library.</para>
-
- <para>See the SourceForge Project Page <ulink url="http://sourceforge.net/projects/xsltsl/">http://sourceforge.net/projects/xsltsl/</ulink> for information on the development of the project. Bug reports may be submitted here.</para>
-
- <para>See the project Web Page <ulink url="http://xsltsl.sourceforge.net/">http://xsltsl.sourceforge.net/</ulink> for documentation.</para>
-
- <para>There are three mailing lists for the project:</para>
- <variablelist>
- <varlistentry>
- <term><email>xsltsl-users@lists.sourceforge.net</email></term>
- <listitem>
- <para>Discussion of the use of <acronym>xsltsl</acronym>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><email>xsltsl-devel@lists.sourceforge.net</email></term>
- <listitem>
- <para>Discussion of the development of <acronym>xsltsl</acronym>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><email>xsltsl-announce@lists.sourceforge.net</email></term>
- <listitem>
- <para>Project announcements.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </chapter>
-
- <chapter>
- <title>XML Namespaces</title>
-
- <para>Apart from the XSLT XML Namespace (http://www.w3.org/1999/XSL/Transform), <acronym>xsltsl</acronym> employs a number of XML Namespaces to allow inclusion of the library in developer stylesheets. In addition, documentation is defined in a separate namespace.</para>
- <para>Each module is allocated a namespace URI by appending the module name to the URI for the project, http://xsltsl.org/. For example, the string module has the namespace URI http://xsltsl.org/string.</para>
- <para>All documentation is written using an <ulink url="docbook-extensions.html">extension</ulink> of <ulink url="http://www.docbook.org/">DocBook</ulink> designed for <ulink url="docbook-extensions.html">embedding DocBook into XSLT stylesheets</ulink>. The namespace URI for DocBook embedded in stylesheets is http://xsltsl.org/xsl/documentation/1.0</para>
- </chapter>
-
- <chapter>
- <title>Engineering Standards</title>
-
- <para>In order to maintain a high engineering standard, all modules and contributions to the <acronym>xsltsl</acronym> project must adhere to the following coding and documentation standards. Submissions which do not meet (or exceed) this standard will not be accepted.</para>
- <itemizedlist>
- <listitem>
- <para>All stylesheets must be indented, with each level indented by two spaces. NB. a simple stylesheet could be used to enforce/fix this.</para>
- </listitem>
- <listitem>
- <para>Templates are named using a qualified name (QName). The namespace URI for the template's containing stylesheet is assigned as above.</para>
- </listitem>
- <listitem>
- <para>Parameters for templates should use sensible names. Where possible (or if in doubt), follow these conventions:</para>
- <itemizedlist>
- <listitem>
- <para>A parameter containing a single node is named <parametername>node</parametername>. Where more than one parameter contains a single node, the suffix <parametername>Node</parametername> is appended to the parameter name, eg. <parametername>referenceNode</parametername></para>
- </listitem>
- <listitem>
- <para>A parameter which potentially contains multiple nodes is named <parametername>nodes</parametername>. Where more than one parameter potentially contains multiple nodes, the suffix <parametername>Nodes</parametername> is appended to the parameter name, eg. <parametername>copyNodes</parametername></para>
- </listitem>
- <listitem>
- <para>A parameter which contains a string value is named <parametername>text</parametername>.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <para>All templates in each stylesheet must be documented. A template is documented as a <ulink url="http://www.docbook.org/">DocBook</ulink> RefEntry.</para>
- </listitem>
- <listitem>
- <para>Every stylesheet must include a test suite. The test system is in the <filename>test</filename> subdirectory. See <ulink url="test/test.html">test/test.html</ulink> for further details.</para>
- </listitem>
- </itemizedlist>
-
- <para>An <ulink url="example.xsl">example stylesheet</ulink> has been provided, which acts as a template for new stylesheet modules.</para>
-
- </chapter>
-
- <chapter>
- <title>Related Work</title>
-
- <para>The <ulink url="http://www.exslt.org/">EXSLT</ulink> project is creating a library to standardise extension functions. The XSLT Standard Library is complementary to the EXSLT project.</para>
-
- </chapter>
-
- <chapter>
- <title>Reference Documentation</title>
-
- <para>Reference documentation is available for each module.</para>
-
- <section>
- <title>String Processing</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="string.html">string.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Nodes</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="node.html">node.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Date/Time Processing</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="date-time.html">date-time.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Mathematics</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="math.html">math.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>URI (Uniform Resource Identifier) Processing</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="uri.html">uri.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Comparing Nodesets</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="cmp.html">cmp.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Generating XML Markup</title>
-
- <itemizedlist>
- <listitem>
- <para><ulink url="markup.html">markup.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>Presentation Media Support</title>
-
- <itemizedlist>
- <listitem>
- <para>Scalable Vector Graphics: <ulink url="svg.html">svg.xsl</ulink></para>
- </listitem>
-<!--
- <listitem>
- <para><ulink url="html/html.html">html/html.xsl</ulink></para>
- </listitem>
- <listitem>
- <para><ulink url="fo/fo.html">fo/fo.xsl</ulink></para>
- </listitem>
--->
- </itemizedlist>
- </section>
-
- <section>
- <title>Example</title>
-
- <!-- Add a new module in a similar fashion -->
-
- <itemizedlist>
- <listitem>
- <para><ulink url="example.html">example.xsl</ulink></para>
- </listitem>
- </itemizedlist>
- </section>
- </chapter>
-
- </doc:book>
-
-</xsl:stylesheet>
diff --git a/slides/keynote/xsltsl/string.xsl b/slides/keynote/xsltsl/string.xsl
deleted file mode 100644
index e7eef8b..0000000
--- a/slides/keynote/xsltsl/string.xsl
+++ /dev/null
@@ -1,1233 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:str="http://xsltsl.org/string"
- extension-element-prefixes="doc str">
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: string.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2002</year>
- <year>2001</year>
- <holder>Steve Ball</holder>
- </copyright>
- </referenceinfo>
-
- <title>String Processing</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This module provides templates for manipulating strings.</para>
-
- </section>
- </partintro>
-
- </doc:reference>
-
- <!-- Common string constants and datasets as XSL variables -->
-
- <!-- str:lower and str:upper contain pairs of lower and upper case
- characters. Below insanely long strings should contain the
- official lower/uppercase pairs, making this stylesheet working
- for every language on earth. Hopefully. -->
- <!-- These values are not enough, however. There are some
- exceptions, dealt with below. -->
- <xsl:variable name="xsltsl-str-lower" select="'&#x0061;&#x0062;&#x0063;&#x0064;&#x0065;&#x0066;&#x0067;&#x0068;&#x0069;&#x006A;&#x006B;&#x006C;&#x006D;&#x006E;&#x006F;&#x0070;&#x0071;&#x0072;&#x0073;&#x0074;&#x0075;&#x0076;&#x0077;&#x0078;&#x0079;&#x007A;&#x00B5;&#x00E0;&#x00E1;&#x00E2;&#x00E3;&#x00E4;&#x00E5;&#x00E6;&#x00E7;&#x00E8;&#x00E9;&#x00EA;&#x00EB;&#x00EC;&#x00ED;&#x00EE;&#x00EF;&#x00F0;&#x00F1;&#x00F2;&#x00F3;&#x00F4;&#x00F5;&#x00F6;&#x00F8;&#x00F9;&#x00FA;&#x00FB;&#x00FC;&#x00FD;&#x00FE;&#x00FF;&#x0101;&#x0103;&#x0105;&#x0107;&#x0109;&#x010B;&#x010D;&#x010F;&#x0111;&#x0113;&#x0115;&#x0117;&#x0119;&#x011B;&#x011D;&#x011F;&#x0121;&#x0123;&#x0125;&#x0127;&#x0129;&#x012B;&#x012D;&#x012F;&#x0131;&#x0133;&#x0135;&#x0137;&#x013A;&#x013C;&#x013E;&#x0140;&#x0142;&#x0144;&#x0146;&#x0148;&#x014B;&#x014D;&#x014F;&#x0151;&#x0153;&#x0155;&#x0157;&#x0159;&#x015B;&#x015D;&#x015F;&#x0161;&#x0163;&#x0165;&#x0167;&#x0169;&#x016B;&#x016D;&#x016F;&#x0171;&#x0173;&#x0175;&#x0177;&#x017A;&#x017C;&#x017E;&#x017F;&#x0183;&#x0185;&#x0188;&#x018C;&#x0192;&#x0195;&#x0199;&#x01A1;&#x01A3;&#x01A5;&#x01A8;&#x01AD;&#x01B0;&#x01B4;&#x01B6;&#x01B9;&#x01BD;&#x01BF;&#x01C5;&#x01C6;&#x01C8;&#x01C9;&#x01CB;&#x01CC;&#x01CE;&#x01D0;&#x01D2;&#x01D4;&#x01D6;&#x01D8;&#x01DA;&#x01DC;&#x01DD;&#x01DF;&#x01E1;&#x01E3;&#x01E5;&#x01E7;&#x01E9;&#x01EB;&#x01ED;&#x01EF;&#x01F2;&#x01F3;&#x01F5;&#x01F9;&#x01FB;&#x01FD;&#x01FF;&#x0201;&#x0203;&#x0205;&#x0207;&#x0209;&#x020B;&#x020D;&#x020F;&#x0211;&#x0213;&#x0215;&#x0217;&#x0219;&#x021B;&#x021D;&#x021F;&#x0223;&#x0225;&#x0227;&#x0229;&#x022B;&#x022D;&#x022F;&#x0231;&#x0233;&#x0253;&#x0254;&#x0256;&#x0257;&#x0259;&#x025B;&#x0260;&#x0263;&#x0268;&#x0269;&#x026F;&#x0272;&#x0275;&#x0280;&#x0283;&#x0288;&#x028A;&#x028B;&#x0292;&#x0345;&#x03AC;&#x03AD;&#x03AE;&#x03AF;&#x03B1;&#x03B2;&#x03B3;&#x03B4;&#x03B5;&#x03B6;&#x03B7;&#x03B8;&#x03B9;&#x03BA;&#x03BB;&#x03BC;&#x03BD;&#x03BE;&#x03BF;&#x03C0;&#x03C1;&#x03C2;&#x03C3;&#x03C4;&#x03C5;&#x03C6;&#x03C7;&#x03C8;&#x03C9;&#x03CA;&#x03CB;&#x03CC;&#x03CD;&#x03CE;&#x03D0;&#x03D1;&#x03D5;&#x03D6;&#x03DB;&#x03DD;&#x03DF;&#x03E1;&#x03E3;&#x03E5;&#x03E7;&#x03E9;&#x03EB;&#x03ED;&#x03EF;&#x03F0;&#x03F1;&#x03F2;&#x03F5;&#x0430;&#x0431;&#x0432;&#x0433;&#x0434;&#x0435;&#x0436;&#x0437;&#x0438;&#x0439;&#x043A;&#x043B;&#x043C;&#x043D;&#x043E;&#x043F;&#x0440;&#x0441;&#x0442;&#x0443;&#x0444;&#x0445;&#x0446;&#x0447;&#x0448;&#x0449;&#x044A;&#x044B;&#x044C;&#x044D;&#x044E;&#x044F;&#x0450;&#x0451;&#x0452;&#x0453;&#x0454;&#x0455;&#x0456;&#x0457;&#x0458;&#x0459;&#x045A;&#x045B;&#x045C;&#x045D;&#x045E;&#x045F;&#x0461;&#x0463;&#x0465;&#x0467;&#x0469;&#x046B;&#x046D;&#x046F;&#x0471;&#x0473;&#x0475;&#x0477;&#x0479;&#x047B;&#x047D;&#x047F;&#x0481;&#x048D;&#x048F;&#x0491;&#x0493;&#x0495;&#x0497;&#x0499;&#x049B;&#x049D;&#x049F;&#x04A1;&#x04A3;&#x04A5;&#x04A7;&#x04A9;&#x04AB;&#x04AD;&#x04AF;&#x04B1;&#x04B3;&#x04B5;&#x04B7;&#x04B9;&#x04BB;&#x04BD;&#x04BF;&#x04C2;&#x04C4;&#x04C8;&#x04CC;&#x04D1;&#x04D3;&#x04D5;&#x04D7;&#x04D9;&#x04DB;&#x04DD;&#x04DF;&#x04E1;&#x04E3;&#x04E5;&#x04E7;&#x04E9;&#x04EB;&#x04ED;&#x04EF;&#x04F1;&#x04F3;&#x04F5;&#x04F9;&#x0561;&#x0562;&#x0563;&#x0564;&#x0565;&#x0566;&#x0567;&#x0568;&#x0569;&#x056A;&#x056B;&#x056C;&#x056D;&#x056E;&#x056F;&#x0570;&#x0571;&#x0572;&#x0573;&#x0574;&#x0575;&#x0576;&#x0577;&#x0578;&#x0579;&#x057A;&#x057B;&#x057C;&#x057D;&#x057E;&#x057F;&#x0580;&#x0581;&#x0582;&#x0583;&#x0584;&#x0585;&#x0586;&#x1E01;&#x1E03;&#x1E05;&#x1E07;&#x1E09;&#x1E0B;&#x1E0D;&#x1E0F;&#x1E11;&#x1E13;&#x1E15;&#x1E17;&#x1E19;&#x1E1B;&#x1E1D;&#x1E1F;&#x1E21;&#x1E23;&#x1E25;&#x1E27;&#x1E29;&#x1E2B;&#x1E2D;&#x1E2F;&#x1E31;&#x1E33;&#x1E35;&#x1E37;&#x1E39;&#x1E3B;&#x1E3D;&#x1E3F;&#x1E41;&#x1E43;&#x1E45;&#x1E47;&#x1E49;&#x1E4B;&#x1E4D;&#x1E4F;&#x1E51;&#x1E53;&#x1E55;&#x1E57;&#x1E59;&#x1E5B;&#x1E5D;&#x1E5F;&#x1E61;&#x1E63;&#x1E65;&#x1E67;&#x1E69;&#x1E6B;&#x1E6D;&#x1E6F;&#x1E71;&#x1E73;&#x1E75;&#x1E77;&#x1E79;&#x1E7B;&#x1E7D;&#x1E7F;&#x1E81;&#x1E83;&#x1E85;&#x1E87;&#x1E89;&#x1E8B;&#x1E8D;&#x1E8F;&#x1E91;&#x1E93;&#x1E95;&#x1E9B;&#x1EA1;&#x1EA3;&#x1EA5;&#x1EA7;&#x1EA9;&#x1EAB;&#x1EAD;&#x1EAF;&#x1EB1;&#x1EB3;&#x1EB5;&#x1EB7;&#x1EB9;&#x1EBB;&#x1EBD;&#x1EBF;&#x1EC1;&#x1EC3;&#x1EC5;&#x1EC7;&#x1EC9;&#x1ECB;&#x1ECD;&#x1ECF;&#x1ED1;&#x1ED3;&#x1ED5;&#x1ED7;&#x1ED9;&#x1EDB;&#x1EDD;&#x1EDF;&#x1EE1;&#x1EE3;&#x1EE5;&#x1EE7;&#x1EE9;&#x1EEB;&#x1EED;&#x1EEF;&#x1EF1;&#x1EF3;&#x1EF5;&#x1EF7;&#x1EF9;&#x1F00;&#x1F01;&#x1F02;&#x1F03;&#x1F04;&#x1F05;&#x1F06;&#x1F07;&#x1F10;&#x1F11;&#x1F12;&#x1F13;&#x1F14;&#x1F15;&#x1F20;&#x1F21;&#x1F22;&#x1F23;&#x1F24;&#x1F25;&#x1F26;&#x1F27;&#x1F30;&#x1F31;&#x1F32;&#x1F33;&#x1F34;&#x1F35;&#x1F36;&#x1F37;&#x1F40;&#x1F41;&#x1F42;&#x1F43;&#x1F44;&#x1F45;&#x1F51;&#x1F53;&#x1F55;&#x1F57;&#x1F60;&#x1F61;&#x1F62;&#x1F63;&#x1F64;&#x1F65;&#x1F66;&#x1F67;&#x1F70;&#x1F71;&#x1F72;&#x1F73;&#x1F74;&#x1F75;&#x1F76;&#x1F77;&#x1F78;&#x1F79;&#x1F7A;&#x1F7B;&#x1F7C;&#x1F7D;&#x1F80;&#x1F81;&#x1F82;&#x1F83;&#x1F84;&#x1F85;&#x1F86;&#x1F87;&#x1F90;&#x1F91;&#x1F92;&#x1F93;&#x1F94;&#x1F95;&#x1F96;&#x1F97;&#x1FA0;&#x1FA1;&#x1FA2;&#x1FA3;&#x1FA4;&#x1FA5;&#x1FA6;&#x1FA7;&#x1FB0;&#x1FB1;&#x1FB3;&#x1FBE;&#x1FC3;&#x1FD0;&#x1FD1;&#x1FE0;&#x1FE1;&#x1FE5;&#x1FF3;&#x2170;&#x2171;&#x2172;&#x2173;&#x2174;&#x2175;&#x2176;&#x2177;&#x2178;&#x2179;&#x217A;&#x217B;&#x217C;&#x217D;&#x217E;&#x217F;&#x24D0;&#x24D1;&#x24D2;&#x24D3;&#x24D4;&#x24D5;&#x24D6;&#x24D7;&#x24D8;&#x24D9;&#x24DA;&#x24DB;&#x24DC;&#x24DD;&#x24DE;&#x24DF;&#x24E0;&#x24E1;&#x24E2;&#x24E3;&#x24E4;&#x24E5;&#x24E6;&#x24E7;&#x24E8;&#x24E9;&#xFF41;&#xFF42;&#xFF43;&#xFF44;&#xFF45;&#xFF46;&#xFF47;&#xFF48;&#xFF49;&#xFF4A;&#xFF4B;&#xFF4C;&#xFF4D;&#xFF4E;&#xFF4F;&#xFF50;&#xFF51;&#xFF52;&#xFF53;&#xFF54;&#xFF55;&#xFF56;&#xFF57;&#xFF58;&#xFF59;&#xFF5A;&#x10428;&#x10429;&#x1042A;&#x1042B;&#x1042C;&#x1042D;&#x1042E;&#x1042F;&#x10430;&#x10431;&#x10432;&#x10433;&#x10434;&#x10435;&#x10436;&#x10437;&#x10438;&#x10439;&#x1043A;&#x1043B;&#x1043C;&#x1043D;&#x1043E;&#x1043F;&#x10440;&#x10441;&#x10442;&#x10443;&#x10444;&#x10445;&#x10446;&#x10447;&#x10448;&#x10449;&#x1044A;&#x1044B;&#x1044C;&#x1044D;'"/>
- <xsl:variable name="xsltsl-str-upper" select="'&#x0041;&#x0042;&#x0043;&#x0044;&#x0045;&#x0046;&#x0047;&#x0048;&#x0049;&#x004A;&#x004B;&#x004C;&#x004D;&#x004E;&#x004F;&#x0050;&#x0051;&#x0052;&#x0053;&#x0054;&#x0055;&#x0056;&#x0057;&#x0058;&#x0059;&#x005A;&#x039C;&#x00C0;&#x00C1;&#x00C2;&#x00C3;&#x00C4;&#x00C5;&#x00C6;&#x00C7;&#x00C8;&#x00C9;&#x00CA;&#x00CB;&#x00CC;&#x00CD;&#x00CE;&#x00CF;&#x00D0;&#x00D1;&#x00D2;&#x00D3;&#x00D4;&#x00D5;&#x00D6;&#x00D8;&#x00D9;&#x00DA;&#x00DB;&#x00DC;&#x00DD;&#x00DE;&#x0178;&#x0100;&#x0102;&#x0104;&#x0106;&#x0108;&#x010A;&#x010C;&#x010E;&#x0110;&#x0112;&#x0114;&#x0116;&#x0118;&#x011A;&#x011C;&#x011E;&#x0120;&#x0122;&#x0124;&#x0126;&#x0128;&#x012A;&#x012C;&#x012E;&#x0049;&#x0132;&#x0134;&#x0136;&#x0139;&#x013B;&#x013D;&#x013F;&#x0141;&#x0143;&#x0145;&#x0147;&#x014A;&#x014C;&#x014E;&#x0150;&#x0152;&#x0154;&#x0156;&#x0158;&#x015A;&#x015C;&#x015E;&#x0160;&#x0162;&#x0164;&#x0166;&#x0168;&#x016A;&#x016C;&#x016E;&#x0170;&#x0172;&#x0174;&#x0176;&#x0179;&#x017B;&#x017D;&#x0053;&#x0182;&#x0184;&#x0187;&#x018B;&#x0191;&#x01F6;&#x0198;&#x01A0;&#x01A2;&#x01A4;&#x01A7;&#x01AC;&#x01AF;&#x01B3;&#x01B5;&#x01B8;&#x01BC;&#x01F7;&#x01C4;&#x01C4;&#x01C7;&#x01C7;&#x01CA;&#x01CA;&#x01CD;&#x01CF;&#x01D1;&#x01D3;&#x01D5;&#x01D7;&#x01D9;&#x01DB;&#x018E;&#x01DE;&#x01E0;&#x01E2;&#x01E4;&#x01E6;&#x01E8;&#x01EA;&#x01EC;&#x01EE;&#x01F1;&#x01F1;&#x01F4;&#x01F8;&#x01FA;&#x01FC;&#x01FE;&#x0200;&#x0202;&#x0204;&#x0206;&#x0208;&#x020A;&#x020C;&#x020E;&#x0210;&#x0212;&#x0214;&#x0216;&#x0218;&#x021A;&#x021C;&#x021E;&#x0222;&#x0224;&#x0226;&#x0228;&#x022A;&#x022C;&#x022E;&#x0230;&#x0232;&#x0181;&#x0186;&#x0189;&#x018A;&#x018F;&#x0190;&#x0193;&#x0194;&#x0197;&#x0196;&#x019C;&#x019D;&#x019F;&#x01A6;&#x01A9;&#x01AE;&#x01B1;&#x01B2;&#x01B7;&#x0399;&#x0386;&#x0388;&#x0389;&#x038A;&#x0391;&#x0392;&#x0393;&#x0394;&#x0395;&#x0396;&#x0397;&#x0398;&#x0399;&#x039A;&#x039B;&#x039C;&#x039D;&#x039E;&#x039F;&#x03A0;&#x03A1;&#x03A3;&#x03A3;&#x03A4;&#x03A5;&#x03A6;&#x03A7;&#x03A8;&#x03A9;&#x03AA;&#x03AB;&#x038C;&#x038E;&#x038F;&#x0392;&#x0398;&#x03A6;&#x03A0;&#x03DA;&#x03DC;&#x03DE;&#x03E0;&#x03E2;&#x03E4;&#x03E6;&#x03E8;&#x03EA;&#x03EC;&#x03EE;&#x039A;&#x03A1;&#x03A3;&#x0395;&#x0410;&#x0411;&#x0412;&#x0413;&#x0414;&#x0415;&#x0416;&#x0417;&#x0418;&#x0419;&#x041A;&#x041B;&#x041C;&#x041D;&#x041E;&#x041F;&#x0420;&#x0421;&#x0422;&#x0423;&#x0424;&#x0425;&#x0426;&#x0427;&#x0428;&#x0429;&#x042A;&#x042B;&#x042C;&#x042D;&#x042E;&#x042F;&#x0400;&#x0401;&#x0402;&#x0403;&#x0404;&#x0405;&#x0406;&#x0407;&#x0408;&#x0409;&#x040A;&#x040B;&#x040C;&#x040D;&#x040E;&#x040F;&#x0460;&#x0462;&#x0464;&#x0466;&#x0468;&#x046A;&#x046C;&#x046E;&#x0470;&#x0472;&#x0474;&#x0476;&#x0478;&#x047A;&#x047C;&#x047E;&#x0480;&#x048C;&#x048E;&#x0490;&#x0492;&#x0494;&#x0496;&#x0498;&#x049A;&#x049C;&#x049E;&#x04A0;&#x04A2;&#x04A4;&#x04A6;&#x04A8;&#x04AA;&#x04AC;&#x04AE;&#x04B0;&#x04B2;&#x04B4;&#x04B6;&#x04B8;&#x04BA;&#x04BC;&#x04BE;&#x04C1;&#x04C3;&#x04C7;&#x04CB;&#x04D0;&#x04D2;&#x04D4;&#x04D6;&#x04D8;&#x04DA;&#x04DC;&#x04DE;&#x04E0;&#x04E2;&#x04E4;&#x04E6;&#x04E8;&#x04EA;&#x04EC;&#x04EE;&#x04F0;&#x04F2;&#x04F4;&#x04F8;&#x0531;&#x0532;&#x0533;&#x0534;&#x0535;&#x0536;&#x0537;&#x0538;&#x0539;&#x053A;&#x053B;&#x053C;&#x053D;&#x053E;&#x053F;&#x0540;&#x0541;&#x0542;&#x0543;&#x0544;&#x0545;&#x0546;&#x0547;&#x0548;&#x0549;&#x054A;&#x054B;&#x054C;&#x054D;&#x054E;&#x054F;&#x0550;&#x0551;&#x0552;&#x0553;&#x0554;&#x0555;&#x0556;&#x1E00;&#x1E02;&#x1E04;&#x1E06;&#x1E08;&#x1E0A;&#x1E0C;&#x1E0E;&#x1E10;&#x1E12;&#x1E14;&#x1E16;&#x1E18;&#x1E1A;&#x1E1C;&#x1E1E;&#x1E20;&#x1E22;&#x1E24;&#x1E26;&#x1E28;&#x1E2A;&#x1E2C;&#x1E2E;&#x1E30;&#x1E32;&#x1E34;&#x1E36;&#x1E38;&#x1E3A;&#x1E3C;&#x1E3E;&#x1E40;&#x1E42;&#x1E44;&#x1E46;&#x1E48;&#x1E4A;&#x1E4C;&#x1E4E;&#x1E50;&#x1E52;&#x1E54;&#x1E56;&#x1E58;&#x1E5A;&#x1E5C;&#x1E5E;&#x1E60;&#x1E62;&#x1E64;&#x1E66;&#x1E68;&#x1E6A;&#x1E6C;&#x1E6E;&#x1E70;&#x1E72;&#x1E74;&#x1E76;&#x1E78;&#x1E7A;&#x1E7C;&#x1E7E;&#x1E80;&#x1E82;&#x1E84;&#x1E86;&#x1E88;&#x1E8A;&#x1E8C;&#x1E8E;&#x1E90;&#x1E92;&#x1E94;&#x1E60;&#x1EA0;&#x1EA2;&#x1EA4;&#x1EA6;&#x1EA8;&#x1EAA;&#x1EAC;&#x1EAE;&#x1EB0;&#x1EB2;&#x1EB4;&#x1EB6;&#x1EB8;&#x1EBA;&#x1EBC;&#x1EBE;&#x1EC0;&#x1EC2;&#x1EC4;&#x1EC6;&#x1EC8;&#x1ECA;&#x1ECC;&#x1ECE;&#x1ED0;&#x1ED2;&#x1ED4;&#x1ED6;&#x1ED8;&#x1EDA;&#x1EDC;&#x1EDE;&#x1EE0;&#x1EE2;&#x1EE4;&#x1EE6;&#x1EE8;&#x1EEA;&#x1EEC;&#x1EEE;&#x1EF0;&#x1EF2;&#x1EF4;&#x1EF6;&#x1EF8;&#x1F08;&#x1F09;&#x1F0A;&#x1F0B;&#x1F0C;&#x1F0D;&#x1F0E;&#x1F0F;&#x1F18;&#x1F19;&#x1F1A;&#x1F1B;&#x1F1C;&#x1F1D;&#x1F28;&#x1F29;&#x1F2A;&#x1F2B;&#x1F2C;&#x1F2D;&#x1F2E;&#x1F2F;&#x1F38;&#x1F39;&#x1F3A;&#x1F3B;&#x1F3C;&#x1F3D;&#x1F3E;&#x1F3F;&#x1F48;&#x1F49;&#x1F4A;&#x1F4B;&#x1F4C;&#x1F4D;&#x1F59;&#x1F5B;&#x1F5D;&#x1F5F;&#x1F68;&#x1F69;&#x1F6A;&#x1F6B;&#x1F6C;&#x1F6D;&#x1F6E;&#x1F6F;&#x1FBA;&#x1FBB;&#x1FC8;&#x1FC9;&#x1FCA;&#x1FCB;&#x1FDA;&#x1FDB;&#x1FF8;&#x1FF9;&#x1FEA;&#x1FEB;&#x1FFA;&#x1FFB;&#x1F88;&#x1F89;&#x1F8A;&#x1F8B;&#x1F8C;&#x1F8D;&#x1F8E;&#x1F8F;&#x1F98;&#x1F99;&#x1F9A;&#x1F9B;&#x1F9C;&#x1F9D;&#x1F9E;&#x1F9F;&#x1FA8;&#x1FA9;&#x1FAA;&#x1FAB;&#x1FAC;&#x1FAD;&#x1FAE;&#x1FAF;&#x1FB8;&#x1FB9;&#x1FBC;&#x0399;&#x1FCC;&#x1FD8;&#x1FD9;&#x1FE8;&#x1FE9;&#x1FEC;&#x1FFC;&#x2160;&#x2161;&#x2162;&#x2163;&#x2164;&#x2165;&#x2166;&#x2167;&#x2168;&#x2169;&#x216A;&#x216B;&#x216C;&#x216D;&#x216E;&#x216F;&#x24B6;&#x24B7;&#x24B8;&#x24B9;&#x24BA;&#x24BB;&#x24BC;&#x24BD;&#x24BE;&#x24BF;&#x24C0;&#x24C1;&#x24C2;&#x24C3;&#x24C4;&#x24C5;&#x24C6;&#x24C7;&#x24C8;&#x24C9;&#x24CA;&#x24CB;&#x24CC;&#x24CD;&#x24CE;&#x24CF;&#xFF21;&#xFF22;&#xFF23;&#xFF24;&#xFF25;&#xFF26;&#xFF27;&#xFF28;&#xFF29;&#xFF2A;&#xFF2B;&#xFF2C;&#xFF2D;&#xFF2E;&#xFF2F;&#xFF30;&#xFF31;&#xFF32;&#xFF33;&#xFF34;&#xFF35;&#xFF36;&#xFF37;&#xFF38;&#xFF39;&#xFF3A;&#x10400;&#x10401;&#x10402;&#x10403;&#x10404;&#x10405;&#x10406;&#x10407;&#x10408;&#x10409;&#x1040A;&#x1040B;&#x1040C;&#x1040D;&#x1040E;&#x1040F;&#x10410;&#x10411;&#x10412;&#x10413;&#x10414;&#x10415;&#x10416;&#x10417;&#x10418;&#x10419;&#x1041A;&#x1041B;&#x1041C;&#x1041D;&#x1041E;&#x1041F;&#x10420;&#x10421;&#x10422;&#x10423;&#x10424;&#x10425;'"/>
- <xsl:variable name="xsltsl-str-digits" select="'0123456789'"/>
- <!-- space (#x20) characters, carriage returns, line feeds, or tabs. -->
- <xsl:variable name="xsltsl-str-ws" select="'&#x20;&#x9;&#xD;&#xA;'"/>
-
- <doc:template name="str:to-upper" xmlns="">
- <refpurpose>Make string uppercase</refpurpose>
-
- <refdescription>
- <para>Converts all lowercase letters to uppercase.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string to be converted</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string with all uppercase letters.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:to-upper">
- <xsl:param name="text"/>
-
- <!-- Below exception is extracted from unicode's SpecialCasing.txt
- file. It's the german lowercase "eszett" (the thing looking
- like a greek beta) that's to become "SS" in uppercase (note:
- that are *two* characters, that's why it doesn't fit in the
- list of upper/lowercase characters). There are more
- characters in that file (103, excluding the locale-specific
- ones), but they seemed to be much less used to me and they
- add up to a hellish long stylesheet.... - Reinout -->
- <xsl:param name="modified-text">
- <xsl:call-template name="str:subst">
- <xsl:with-param name="text">
- <xsl:value-of select="$text"/>
- </xsl:with-param>
- <xsl:with-param name="replace">
- <xsl:text>&#x00DF;</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="with">
- <xsl:text>&#x0053;</xsl:text>
- <xsl:text>&#x0053;</xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:param>
-
- <xsl:value-of select="translate($modified-text, $xsltsl-str-lower, $xsltsl-str-upper)"/>
- </xsl:template>
-
- <doc:template name="str:to-lower" xmlns="">
- <refpurpose>Make string lowercase</refpurpose>
-
- <refdescription>
- <para>Converts all uppercase letters to lowercase.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string to be converted</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string with all lowercase letters.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:to-lower">
- <xsl:param name="text"/>
-
- <xsl:value-of select="translate($text, $xsltsl-str-upper, $xsltsl-str-lower)"/>
- </xsl:template>
-
- <doc:template name="str:capitalise" xmlns="">
- <refpurpose>Capitalise string</refpurpose>
-
- <refdescription>
- <para>Converts first character of string to an uppercase letter. All remaining characters are converted to lowercase.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string to be capitalised</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>all</term>
- <listitem>
- <para>Boolean controlling whether all words in the string are capitalised.</para>
- <para>Default is true.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string with first character uppcase and all remaining characters lowercase.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:capitalise">
- <xsl:param name="text"/>
- <xsl:param name="all" select="true()"/>
-
- <xsl:choose>
- <xsl:when test="$all and (contains($text, ' ') or contains($text, ' ') or contains($text, '&#10;'))">
- <xsl:variable name="firstword">
- <xsl:call-template name="str:substring-before-first">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="chars" select="$xsltsl-str-ws"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="str:capitalise">
- <xsl:with-param name="text">
- <xsl:value-of select="$firstword"/>
- </xsl:with-param>
- <xsl:with-param name="all" select="false()"/>
- </xsl:call-template>
- <xsl:value-of select="substring($text, string-length($firstword) + 1, 1)"/>
- <xsl:call-template name="str:capitalise">
- <xsl:with-param name="text">
- <xsl:value-of select="substring($text, string-length($firstword) + 2)"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:call-template name="str:to-upper">
- <xsl:with-param name="text" select="substring($text, 1, 1)"/>
- </xsl:call-template>
- <xsl:call-template name="str:to-lower">
- <xsl:with-param name="text" select="substring($text, 2)"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:to-camelcase" xmlns="">
- <refpurpose>Convert a string to one camelcase word</refpurpose>
-
- <refdescription>
- <para>Converts a string to one lowerCamelCase or UpperCamelCase
- word, depending on the setting of the "upper"
- parameter. UpperCamelCase is also called MixedCase while
- lowerCamelCase is also called just camelCase. The template
- removes any spaces, tabs and slashes, but doesn't deal with
- other punctuation. It's purpose is to convert strings like
- "hollow timber flush door" to a term suitable as identifier or
- XML tag like "HollowTimberFlushDoor".
- </para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string to be capitalised</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>upper</term>
- <listitem>
- <para>Boolean controlling whether the string becomes an
- UpperCamelCase word or a lowerCamelCase word.</para>
- <para>Default is true.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string with first character uppcase and all remaining characters lowercase.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:to-camelcase">
- <xsl:param name="text"/>
- <xsl:param name="upper" select="true()"/>
- <!-- First change all 'strange' characters to spaces -->
- <xsl:param name="string-with-only-spaces">
- <xsl:value-of select="translate($text,concat($xsltsl-str-ws,'/'),' ')"/>
- </xsl:param>
- <!-- Then process them -->
- <xsl:param name="before-space-removal">
- <xsl:variable name="firstword">
- <xsl:call-template name="str:substring-before-first">
- <xsl:with-param name="text" select="$string-with-only-spaces"/>
- <xsl:with-param name="chars" select="$xsltsl-str-ws"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$upper">
- <xsl:call-template name="str:to-upper">
- <xsl:with-param name="text" select="substring($firstword, 1, 1)"/>
- </xsl:call-template>
- <xsl:call-template name="str:to-lower">
- <xsl:with-param name="text" select="substring($firstword, 2)"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="str:to-lower">
- <xsl:with-param name="text" select="$firstword"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:call-template name="str:capitalise">
- <xsl:with-param name="text">
- <xsl:value-of select="substring($string-with-only-spaces, string-length($firstword) + 2)"/>
- </xsl:with-param>
- <xsl:with-param name="all" select="true()"/>
- </xsl:call-template>
- </xsl:param>
- <xsl:value-of select="translate($before-space-removal,' ','')"/>
- </xsl:template>
-
- <doc:template name="str:substring-before-first" xmlns="">
- <refpurpose>String extraction</refpurpose>
-
- <refdescription>
- <para>Extracts the portion of string 'text' which occurs before any of the characters in string 'chars'.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string from which to extract a substring.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>The string containing characters to find.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:substring-before-first">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
-
- <xsl:choose>
-
- <xsl:when test="string-length($text) = 0"/>
-
- <xsl:when test="string-length($chars) = 0">
- <xsl:value-of select="$text"/>
- </xsl:when>
-
- <xsl:when test="contains($text, substring($chars, 1, 1))">
- <xsl:variable name="this" select="substring-before($text, substring($chars, 1, 1))"/>
- <xsl:variable name="rest">
- <xsl:call-template name="str:substring-before-first">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="chars" select="substring($chars, 2)"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="string-length($this) &lt; string-length($rest)">
- <xsl:value-of select="$this"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$rest"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:call-template name="str:substring-before-first">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="chars" select="substring($chars, 2)"/>
- </xsl:call-template>
- </xsl:otherwise>
-
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:substring-after-last" xmlns="">
- <refpurpose>String extraction</refpurpose>
-
- <refdescription>
- <para>Extracts the portion of string 'text' which occurs after the last of the character in string 'chars'.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string from which to extract a substring.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>The string containing characters to find.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:substring-after-last">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
-
- <xsl:choose>
-
- <xsl:when test="contains($text, $chars)">
- <xsl:variable name="last" select="substring-after($text, $chars)"/>
-
- <xsl:choose>
- <xsl:when test="contains($last, $chars)">
- <xsl:call-template name="str:substring-after-last">
- <xsl:with-param name="text" select="$last"/>
- <xsl:with-param name="chars" select="$chars"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$last"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
-
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:substring-before-last" xmlns="">
- <refpurpose>String extraction</refpurpose>
-
- <refdescription>
- <para>Extracts the portion of string 'text' which occurs before the first character of the last occurance of string 'chars'.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string from which to extract a substring.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>The string containing characters to find.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:substring-before-last">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
-
- <xsl:choose>
-
- <xsl:when test="string-length($text) = 0"/>
-
- <xsl:when test="string-length($chars) = 0">
- <xsl:value-of select="$text"/>
- </xsl:when>
-
- <xsl:when test="contains($text, $chars)">
- <xsl:call-template name="str:substring-before-last-aux">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="chars" select="$chars"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
-
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="str:substring-before-last-aux">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
-
- <xsl:choose>
- <xsl:when test="string-length($text) = 0"/>
-
- <xsl:when test="contains($text, $chars)">
- <xsl:variable name="after">
- <xsl:call-template name="str:substring-before-last-aux">
- <xsl:with-param name="text" select="substring-after($text, $chars)"/>
- <xsl:with-param name="chars" select="$chars"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:value-of select="substring-before($text, $chars)"/>
- <xsl:if test="string-length($after) &gt; 0">
- <xsl:value-of select="$chars"/>
- <xsl:copy-of select="$after"/>
- </xsl:if>
- </xsl:when>
-
- <xsl:otherwise/>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:subst" xmlns="">
- <refpurpose>String substitution</refpurpose>
-
- <refdescription>
- <para>Substitute 'replace' for 'with' in string 'text'.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string upon which to perform substitution.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>replace</term>
- <listitem>
- <para>The string to substitute.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>with</term>
- <listitem>
- <para>The string to be substituted.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>disable-output-escaping</term>
- <listitem>
- <para>A value of <literal>yes</literal> indicates that the result should have output escaping disabled. Any other value allows normal escaping of text values. The default is to enable output escaping.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:subst">
- <xsl:param name="text"/>
- <xsl:param name="replace"/>
- <xsl:param name="with"/>
- <xsl:param name='disable-output-escaping'>no</xsl:param>
-
- <xsl:choose>
- <xsl:when test="string-length($replace) = 0 and $disable-output-escaping = 'yes'">
- <xsl:value-of select="$text" disable-output-escaping='yes'/>
- </xsl:when>
- <xsl:when test="string-length($replace) = 0">
- <xsl:value-of select="$text"/>
- </xsl:when>
- <xsl:when test="contains($text, $replace)">
-
- <xsl:variable name="before" select="substring-before($text, $replace)"/>
- <xsl:variable name="after" select="substring-after($text, $replace)"/>
-
- <xsl:choose>
- <xsl:when test='$disable-output-escaping = "yes"'>
- <xsl:value-of select="$before" disable-output-escaping="yes"/>
- <xsl:value-of select="$with" disable-output-escaping="yes"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$before"/>
- <xsl:value-of select="$with"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:call-template name="str:subst">
- <xsl:with-param name="text" select="$after"/>
- <xsl:with-param name="replace" select="$replace"/>
- <xsl:with-param name="with" select="$with"/>
- <xsl:with-param name="disable-output-escaping" select="$disable-output-escaping"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test='$disable-output-escaping = "yes"'>
- <xsl:value-of select="$text" disable-output-escaping="yes"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:count-substring" xmlns="">
- <refpurpose>Count Substrings</refpurpose>
-
- <refdescription>
- <para>Counts the number of times a substring occurs in a string. This can also counts the number of times a character occurs in a string, since a character is simply a string of length 1.</para>
- </refdescription>
-
- <example>
- <title>Counting Lines</title>
- <programlisting><![CDATA[
-<xsl:call-template name="str:count-substring">
- <xsl:with-param name="text" select="$mytext"/>
- <xsl:with-param name="chars" select="'&#x0a;'"/>
-</xsl:call-template>
-]]></programlisting>
- </example>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The source string.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>The substring to count.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns a non-negative integer value.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:count-substring">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
-
- <xsl:choose>
- <xsl:when test="string-length($text) = 0 or string-length($chars) = 0">
- <xsl:text>0</xsl:text>
- </xsl:when>
- <xsl:when test="contains($text, $chars)">
- <xsl:variable name="remaining">
- <xsl:call-template name="str:count-substring">
- <xsl:with-param name="text" select="substring-after($text, $chars)"/>
- <xsl:with-param name="chars" select="$chars"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="$remaining + 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>0</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:substring-after-at" xmlns="">
- <refpurpose>String extraction</refpurpose>
- <refdescription>
- <para>Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position'.</para>
- </refdescription>
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string from which to extract a substring.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>delimiters</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>position</term>
- <listitem>
- <para>position of the elements</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>all</term>
- <listitem>
- <para>If true all of the remaining string is returned, otherwise only the element at the given position is returned. Default: false().</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
-
- <xsl:template name="str:substring-after-at">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
- <xsl:param name="position"/>
- <xsl:param name="all" select='false()'/>
-
- <xsl:choose>
- <xsl:when test='number($position) = 0 and $all'>
- <xsl:value-of select='$text'/>
- </xsl:when>
- <xsl:when test='number($position) = 0 and not($chars)'>
- <xsl:value-of select='$text'/>
- </xsl:when>
- <xsl:when test='number($position) = 0 and not(contains($text, $chars))'>
- <xsl:value-of select='$text'/>
- </xsl:when>
- <xsl:when test='not(contains($text, $chars))'>
- </xsl:when>
- <xsl:when test="number($position) = 0">
- <xsl:value-of select="substring-before($text, $chars)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="str:substring-after-at">
- <xsl:with-param name="text" select="substring-after($text, $chars)"/>
- <xsl:with-param name="chars" select="$chars"/>
- <xsl:with-param name="all" select="$all"/>
- <xsl:with-param name="position" select="$position - 1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:substring-before-at" xmlns="">
- <refpurpose>String extraction</refpurpose>
- <refdescription>
- <para>Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position' </para>
- </refdescription>
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string from which to extract a substring.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>delimiters</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>position</term>
- <listitem>
- <para>position of the elements</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:substring-before-at">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
- <xsl:param name="position"/>
-
- <xsl:choose>
- <xsl:when test="$position &lt;= 0"/>
- <xsl:when test="not(contains($text, $chars))"/>
- <xsl:otherwise>
- <xsl:value-of select='substring-before($text, $chars)'/>
- <xsl:value-of select='$chars'/>
-
- <xsl:call-template name="str:substring-before-at">
- <xsl:with-param name="text" select="substring-after($text, $chars)"/>
- <xsl:with-param name="position" select="$position - 1"/>
- <xsl:with-param name="chars" select="$chars"/>
- </xsl:call-template>
-
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:insert-at" xmlns="">
- <refpurpose>String insertion</refpurpose>
- <refdescription>
- <para>Insert 'chars' into "text' at any given "position'</para>
- </refdescription>
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string upon which to perform insertion</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>position</term>
- <listitem>
- <para>the position where insertion will be performed</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>with</term>
- <listitem>
- <para>The string to be inserted</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:insert-at">
- <xsl:param name="text"/>
- <xsl:param name="position"/>
- <xsl:param name="chars"/>
-
- <xsl:variable name="firstpart" select="substring($text, 0, $position)"/>
- <xsl:variable name="secondpart" select="substring($text, $position, string-length($text))"/>
-
- <xsl:value-of select="concat($firstpart, $chars, $secondpart)"/>
- </xsl:template>
-
-
- <doc:template name="str:backward" xmlns="">
- <refpurpose>String reversal</refpurpose>
-
- <refdescription>
- <para>Reverse the content of a given string</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string to be reversed</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns string.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:backward">
- <xsl:param name="text"/>
- <xsl:variable name="mirror">
- <xsl:call-template name="str:build-mirror">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="position" select="string-length($text)"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="substring($mirror, string-length($text) + 1, string-length($text))"/>
- </xsl:template>
-
- <xsl:template name="str:build-mirror">
- <xsl:param name="text"/>
- <xsl:param name="position"/>
-
- <xsl:choose>
- <xsl:when test="$position &gt; 0">
- <xsl:call-template name="str:build-mirror">
- <xsl:with-param name="text" select="concat($text, substring($text, $position, 1))"/>
- <xsl:with-param name="position" select="$position - 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:justify" xmlns="">
- <refpurpose>Format a string</refpurpose>
-
- <refdescription>
- <para>Inserts newlines and spaces into a string to format it as a block of text.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>String to be formatted.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>max</term>
- <listitem>
- <para>Maximum line length.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>indent</term>
- <listitem>
- <para>Number of spaces to insert at the beginning of each line.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>justify</term>
- <listitem>
- <para>Justify left, right or both. Not currently implemented (fixed at "left").</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Formatted block of text.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='str:justify'>
- <xsl:param name='text'/>
- <xsl:param name='max' select='"80"'/>
- <xsl:param name='indent' select='"0"'/>
- <xsl:param name='justify' select='"left"'/>
-
- <xsl:choose>
- <xsl:when test='string-length($text) = 0 or $max &lt;= 0'/>
-
- <xsl:when test='string-length($text) > $max and contains($text, " ") and string-length(substring-before($text, " ")) > $max'>
- <xsl:call-template name='str:generate-string'>
- <xsl:with-param name='text' select='" "'/>
- <xsl:with-param name='count' select='$indent'/>
- </xsl:call-template>
- <xsl:value-of select='substring-before($text, " ")'/>
- <xsl:text>
-</xsl:text>
- <xsl:call-template name='str:justify'>
- <xsl:with-param name='text' select='substring-after($text, " ")'/>
- <xsl:with-param name='max' select='$max'/>
- <xsl:with-param name='indent' select='$indent'/>
- <xsl:with-param name='justify' select='$justify'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test='string-length($text) > $max and contains($text, " ")'>
- <xsl:variable name='first'>
- <xsl:call-template name='str:substring-before-last'>
- <xsl:with-param name='text' select='substring($text, 1, $max)'/>
- <xsl:with-param name='chars' select='" "'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name='str:generate-string'>
- <xsl:with-param name='text' select='" "'/>
- <xsl:with-param name='count' select='$indent'/>
- </xsl:call-template>
- <xsl:value-of select='$first'/>
- <xsl:text>
-</xsl:text>
- <xsl:call-template name='str:justify'>
- <xsl:with-param name='text' select='substring($text, string-length($first) + 2)'/>
- <xsl:with-param name='max' select='$max'/>
- <xsl:with-param name='indent' select='$indent'/>
- <xsl:with-param name='justify' select='$justify'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:call-template name='str:generate-string'>
- <xsl:with-param name='text' select='" "'/>
- <xsl:with-param name='count' select='$indent'/>
- </xsl:call-template>
- <xsl:value-of select='$text'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:character-first" xmlns="">
- <refpurpose>Find first occurring character in a string</refpurpose>
-
- <refdescription>
- <para>Finds which of the given characters occurs first in a string.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The source string.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>chars</term>
- <listitem>
- <para>The characters to search for.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
- </doc:template>
-
- <xsl:template name="str:character-first">
- <xsl:param name="text"/>
- <xsl:param name="chars"/>
-
- <xsl:choose>
- <xsl:when test="string-length($text) = 0 or string-length($chars) = 0"/>
-
- <xsl:when test="contains($text, substring($chars, 1, 1))">
- <xsl:variable name="next-character">
- <xsl:call-template name="str:character-first">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="chars" select="substring($chars, 2)"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="string-length($next-character)">
- <xsl:variable name="first-character-position" select="string-length(substring-before($text, substring($chars, 1, 1)))"/>
- <xsl:variable name="next-character-position" select="string-length(substring-before($text, $next-character))"/>
-
- <xsl:choose>
- <xsl:when test="$first-character-position &lt; $next-character-position">
- <xsl:value-of select="substring($chars, 1, 1)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$next-character"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring($chars, 1, 1)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="str:character-first">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="chars" select="substring($chars, 2)"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <doc:template name="str:string-match" xmlns="">
- <refpurpose>Match A String To A Pattern</refpurpose>
-
- <refdescription>
- <para>Performs globbing-style pattern matching on a string.</para>
- </refdescription>
-
- <example>
- <title>Match Pattern</title>
- <programlisting><![CDATA[
-<xsl:call-template name="str:string-match">
- <xsl:with-param name="text" select="$mytext"/>
- <xsl:with-param name="pattern" select="'abc*def?g'"/>
-</xsl:call-template>
-]]></programlisting>
- </example>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The source string.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>pattern</term>
- <listitem>
- <para>The pattern to match against. Certain characters have special meaning:</para>
- <variablelist>
- <varlistentry>
- <term>*</term>
- <listitem>
- <para>Matches zero or more characters.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>?</term>
- <listitem>
- <para>Matches a single character.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>\</term>
- <listitem>
- <para>Character escape. The next character is taken as a literal character.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns "1" if the string matches the pattern, "0" otherwise.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="str:string-match">
- <xsl:param name="text"/>
- <xsl:param name="pattern"/>
-
- <xsl:choose>
- <xsl:when test="$pattern = '*'">
- <!-- Special case: always matches -->
- <xsl:text>1</xsl:text>
- </xsl:when>
- <xsl:when test="string-length($text) = 0 and string-length($pattern) = 0">
- <xsl:text>1</xsl:text>
- </xsl:when>
- <xsl:when test="string-length($text) = 0 or string-length($pattern) = 0">
- <xsl:text>0</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name='before-special'>
- <xsl:call-template name='str:substring-before-first'>
- <xsl:with-param name='text' select='$pattern'/>
- <xsl:with-param name='chars' select='"*?\"'/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='special'>
- <xsl:call-template name='str:character-first'>
- <xsl:with-param name='text' select='$pattern'/>
- <xsl:with-param name='chars' select='"*?\"'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name='new-text' select='substring($text, string-length($before-special) + 1)'/>
- <xsl:variable name='new-pattern' select='substring($pattern, string-length($before-special) + 1)'/>
-
- <xsl:choose>
- <xsl:when test="not(starts-with($text, $before-special))">
- <!-- Verbatim characters don't match -->
- <xsl:text>0</xsl:text>
- </xsl:when>
-
- <xsl:when test="$special = '*' and string-length($new-pattern) = 1">
- <xsl:text>1</xsl:text>
- </xsl:when>
- <xsl:when test="$special = '*'">
- <xsl:call-template name='str:match-postfix'>
- <xsl:with-param name='text' select='$new-text'/>
- <xsl:with-param name='pattern' select='substring($new-pattern, 2)'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="$special = '?'">
- <xsl:call-template name="str:string-match">
- <xsl:with-param name='text' select='substring($new-text, 2)'/>
- <xsl:with-param name='pattern' select='substring($new-pattern, 2)'/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="$special = '\' and substring($new-text, 1, 1) = substring($new-pattern, 2, 1)">
- <xsl:call-template name="str:string-match">
- <xsl:with-param name='text' select='substring($new-text, 2)'/>
- <xsl:with-param name='pattern' select='substring($new-pattern, 3)'/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$special = '\' and substring($new-text, 1, 1) != substring($new-pattern, 2, 1)">
- <xsl:text>0</xsl:text>
- </xsl:when>
-
- <xsl:otherwise>
- <!-- There were no special characters in the pattern -->
- <xsl:choose>
- <xsl:when test='$text = $pattern'>
- <xsl:text>1</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>0</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="str:match-postfix">
- <xsl:param name="text"/>
- <xsl:param name="pattern"/>
-
- <xsl:variable name='result'>
- <xsl:call-template name='str:string-match'>
- <xsl:with-param name='text' select='$text'/>
- <xsl:with-param name='pattern' select='$pattern'/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test='$result = "1"'>
- <xsl:value-of select='$result'/>
- </xsl:when>
- <xsl:when test='string-length($text) = 0'>
- <xsl:text>0</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name='str:match-postfix'>
- <xsl:with-param name='text' select='substring($text, 2)'/>
- <xsl:with-param name='pattern' select='$pattern'/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="str:generate-string" xmlns="">
- <refpurpose>Create A Repeating Sequence of Characters</refpurpose>
-
- <refdescription>
- <para>Repeats a string a given number of times.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>text</term>
- <listitem>
- <para>The string to repeat.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>count</term>
- <listitem>
- <para>The number of times to repeat the string.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
- </doc:template>
-
- <xsl:template name="str:generate-string">
- <xsl:param name="text"/>
- <xsl:param name="count"/>
-
- <xsl:choose>
- <xsl:when test="string-length($text) = 0 or $count &lt;= 0"/>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- <xsl:call-template name="str:generate-string">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="count" select="$count - 1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/slides/keynote/xsltsl/svg.xsl b/slides/keynote/xsltsl/svg.xsl
deleted file mode 100644
index 1254ab9..0000000
--- a/slides/keynote/xsltsl/svg.xsl
+++ /dev/null
@@ -1,177 +0,0 @@
-<xsl:stylesheet version='1.0'
- xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
- xmlns:svg='http://xsltsl.org/svg'
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- exclude-result-prefixes="doc">
-
- <xsl:variable name='svg-public-id' select='"-//W3C//DTD SVG 20010904//EN"'/>
- <xsl:variable name='svg-system-id' select='"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"'/>
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: svg.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Ball</surname>
- <firstname>Steve</firstname>
- </author>
- <copyright>
- <year>2002</year>
- <holder>Steve Ball</holder>
- </copyright>
- </referenceinfo>
-
- <title>SVG Stylesheet</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
-
- <para>This module provides templates for creating SVG images.</para>
- </section>
- </partintro>
- </doc:reference>
-
- <doc:template name="svg:aqua-button-defs" xmlns="">
- <refpurpose>Aqua-style Button</refpurpose>
-
- <refdescription>
- <para>Part of the mechanism to create an Aqua-style button. Include a call to this template in your SVG document's <sgmltag>defs</sgmltag> element. This template only needs to be included once. Use this in conjunction with <sgmltag>svg:aqua-button</sgmltag>.</para>
-
- <para>The default values for color1, color2 and color3 result in a grey button.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>prefix</term>
- <listitem>
- <para>A prefix to append to the identifiers used, so that they don't clash with other identifiers. Default: "aqua-".</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>color1</term>
- <listitem>
- <para>The base colour of the button. Default: "#d9d9d9".</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>color2</term>
- <listitem>
- <para>A "background" colour for the button. Should be a darker colour than color1. Default: "#a9a9a9".</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>color3</term>
- <listitem>
- <para>A highlight colour for the button. Should be a lighter colour than color1. Default: "#f9f9f9".</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns SVG result-tree-fragment.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="svg:aqua-button-defs">
- <xsl:param name="prefix" select='"aqua-"'/>
- <xsl:param name="color1" select='"#d9d9d9"'/>
- <xsl:param name="color2" select='"#a9a9a9"'/>
- <xsl:param name="color3" select='"#f9f9f9"'/>
-
- <linearGradient id='{$prefix}gradient' x1='0%' y1='0%' x2='0%' y2='100%'>
- <stop offset='0%' stop-color='{$color2}'/>
- <stop offset='100%' stop-color='{$color1}'/>
- </linearGradient>
- <linearGradient id='{$prefix}highlight-gradient' x1='0%' y1='0%' x2='0%' y2='100%'>
- <stop offset='0%' stop-color='#ffffff'/>
- <stop offset='75%' stop-color='{$color3}' stop-opacity='0'/>
- <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
- </linearGradient>
- <linearGradient id='{$prefix}revhighlight-gradient' x1='0%' y1='100%' x2='0%' y2='0%'>
- <stop offset='0%' stop-color='#ffffff'/>
- <stop offset='50%' stop-color='{$color3}' stop-opacity='0'/>
- <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
- </linearGradient>
- <linearGradient id='{$prefix}corner-left-gradient' x1='0%' y1='0%' x2='100%' y2='100%'>
- <stop offset='0%' stop-color='#000000'/>
- <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
- </linearGradient>
- <linearGradient id='{$prefix}corner-right-gradient' x1='100%' y1='0%' x2='0%' y2='100%'>
- <stop offset='0%' stop-color='#000000'/>
- <stop offset='100%' stop-color='{$color3}' stop-opacity='0'/>
- </linearGradient>
-
- <filter id='{$prefix}filter-blur' filterUnits='userSpaceOnUse' x='0' y='0' width='200' height='100'>
- <feGaussianBlur in='SourceGraphic' stdDeviation='2'/>
- </filter>
- <filter id='{$prefix}drop-shadow' y='-5' height='100'>
- <feColorMatrix type='matrix' in='SourceAlpha' result='inglow'
- values='.5 .5 .5 1 0
- .5 .5 .5 1 0
- .5 .5 .5 1 0
- 0 0 0 1 0'/>
- <feBlend mode='multiply' in2='SourceGraphic' in='inglow' result='innerglow'/>
-
- <feGaussianBlur stdDeviation='4' in='SourceAlpha' result='shadow'/>
- <feColorMatrix type='matrix' in='shadow' result='lightshadow'
- values='.33 .33 .33 1 0
- .33 .33 .33 1 0
- .33 .33 .33 1 0
- 0 0 0 1 0'/>
- <feOffset in='lightshadow' dx='0' dy='3' result='dropshadow'/>
- <feMerge>
- <feMergeNode in='dropshadow'/>
- <feMergeNode in='innerglow'/>
- </feMerge>
- </filter>
-
- </xsl:template>
-
- <doc:template name="svg:aqua-button" xmlns="">
- <refpurpose>Aqua-style Button</refpurpose>
-
- <refdescription>
- <para>Part of the mechanism to create an Aqua-style button. Include a call to this template in your SVG document where you want a button to appear. This template can be used many times in a single SVG document. Use this in conjunction with <sgmltag>svg:aqua-button-defs</sgmltag>.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>prefix</term>
- <listitem>
- <para>A prefix to append to the identifiers used, so that they don't clash with other identifiers. Default: "aqua-".</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns SVG result-tree-fragment.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name='svg:aqua-button'>
- <xsl:param name="prefix" select='"aqua-"'/>
-
- <g filter='url(#{$prefix}drop-shadow)'>
- <clipPath id='{$prefix}main-shape'>
- <path clip-rule='evenodd'
- d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z" />
- </clipPath>
- <path fill="url(#{$prefix}gradient)" stroke="none"
- d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z" />
- <path clip-path='url(#{$prefix}main-shape)' fill='url(#{$prefix}corner-left-gradient)' stroke='none' filter='url(#{$prefix}filter-blur)'
- d="M50,57 L13,57 A35,35 -90 0,1 50,30 z" />
- <path clip-path='url(#{$prefix}main-shape)' fill='url(#{$prefix}corner-right-gradient)' stroke='none' filter='url(#{$prefix}filter-blur)'
- d="M150,30 A35,35 90 0,1 190,57 L150,57 z" />
- <path fill="url(#{$prefix}highlight-gradient)" stroke="none" stroke-width='1'
- d="M50,65 C20,65 20,35 50,35 L150,35 C180,35 180,65 150,65 z" />
- <path filter='url(#{$prefix}filter-blur)' fill="url(#{$prefix}revhighlight-gradient)" stroke="none"
- d="M50,85 C10,85 10,35 50,35 L150,35 C190,35 190,85 150,85 z" />
- </g>
- </xsl:template>
-</xsl:stylesheet>
diff --git a/slides/keynote/xsltsl/uri.xsl b/slides/keynote/xsltsl/uri.xsl
deleted file mode 100644
index df1f738..0000000
--- a/slides/keynote/xsltsl/uri.xsl
+++ /dev/null
@@ -1,580 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet
- version="1.0"
- extension-element-prefixes="doc"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:doc="http://xsltsl.org/xsl/documentation/1.0"
- xmlns:uri="http://xsltsl.org/uri"
->
-
- <doc:reference xmlns="">
- <referenceinfo>
- <releaseinfo role="meta">
- $Id: uri.xsl 3991 2004-11-10 06:51:55Z balls $
- </releaseinfo>
- <author>
- <surname>Diamond</surname>
- <firstname>Jason</firstname>
- </author>
- <copyright>
- <year>2001</year>
- <holder>Jason Diamond</holder>
- </copyright>
- </referenceinfo>
-
- <title>URI (Uniform Resource Identifier) Processing</title>
-
- <partintro>
- <section>
- <title>Introduction</title>
- <para>This module provides templates for processing URIs (Uniform Resource Identifers).</para>
- </section>
- </partintro>
-
- </doc:reference>
-
- <doc:template name="uri:is-absolute-uri" xmlns="">
- <refpurpose>Determines if a URI is absolute or relative.</refpurpose>
-
- <refdescription>
- <para>Absolute URIs start with a scheme (like "http:" or "mailto:").</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>uri</term>
- <listitem>
- <para>An absolute or relative URI.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns 'true' if the URI is absolute or '' if it's not.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:is-absolute-uri">
- <xsl:param name="uri"/>
-
- <xsl:if test="contains($uri, ':')">
- <xsl:value-of select="true()"/>
- </xsl:if>
-
- </xsl:template>
-
- <doc:template name="uri:get-uri-scheme" xmlns="">
- <refpurpose>Gets the scheme part of a URI.</refpurpose>
-
- <refdescription>
- <para>The ':' is not part of the scheme.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>uri</term>
- <listitem>
- <para>An absolute or relative URI.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the scheme (without the ':') or '' if the URI is relative.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:get-uri-scheme">
- <xsl:param name="uri"/>
- <xsl:if test="contains($uri, ':')">
- <xsl:value-of select="substring-before($uri, ':')"/>
- </xsl:if>
- </xsl:template>
-
- <doc:template name="uri:get-uri-authority" xmlns="">
- <refpurpose>Gets the authority part of a URI.</refpurpose>
-
- <refdescription>
- <para>The authority usually specifies the host machine for a resource. It always follows '//' in a typical URI.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>uri</term>
- <listitem>
- <para>An absolute or relative URI.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the authority (without the '//') or '' if the URI has no authority.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:get-uri-authority">
- <xsl:param name="uri"/>
-
- <xsl:variable name="a">
- <xsl:choose>
- <xsl:when test="contains($uri, ':')">
- <xsl:if test="substring(substring-after($uri, ':'), 1, 2) = '//'">
- <xsl:value-of select="substring(substring-after($uri, ':'), 3)"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="substring($uri, 1, 2) = '//'">
- <xsl:value-of select="substring($uri, 3)"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="contains($a, '/')">
- <xsl:value-of select="substring-before($a, '/')" />
- </xsl:when>
- <xsl:when test="contains($a, '?')">
- <xsl:value-of select="substring-before($a, '?')" />
- </xsl:when>
- <xsl:when test="contains($a, '#')">
- <xsl:value-of select="substring-before($a, '#')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$a" />
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="uri:get-uri-path" xmlns="">
- <refpurpose>Gets the path part of a URI.</refpurpose>
-
- <refdescription>
- <para>The path usually comes after the '/' in a URI.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>uri</term>
- <listitem>
- <para>An absolute or relative URI.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the path (with any leading '/') or '' if the URI has no path.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:get-uri-path">
- <xsl:param name="uri"/>
-
- <xsl:variable name="p">
- <xsl:choose>
- <xsl:when test="contains($uri, '//')">
- <xsl:if test="contains(substring-after($uri, '//'), '/')">
- <xsl:value-of select="concat('/', substring-after(substring-after($uri, '//'), '/'))"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="contains($uri, ':')">
- <xsl:value-of select="substring-after($uri, ':')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$uri"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="contains($p, '?')">
- <xsl:value-of select="substring-before($p, '?')" />
- </xsl:when>
- <xsl:when test="contains($p, '#')">
- <xsl:value-of select="substring-before($p, '#')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$p" />
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="uri:get-uri-query" xmlns="">
- <refpurpose>Gets the query part of a URI.</refpurpose>
-
- <refdescription>
- <para>The query comes after the '?' in a URI.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>uri</term>
- <listitem>
- <para>An absolute or relative URI.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the query (without the '?') or '' if the URI has no query.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:get-uri-query">
- <xsl:param name="uri"/>
-
- <xsl:variable name="q" select="substring-after($uri, '?')"/>
-
- <xsl:choose>
- <xsl:when test="contains($q, '#')">
- <xsl:value-of select="substring-before($q, '#')"/>
- </xsl:when>
- <xsl:otherwise><xsl:value-of select="$q"/></xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <doc:template name="uri:get-uri-fragment" xmlns="">
- <refpurpose>Gets the fragment part of a URI.</refpurpose>
-
- <refdescription>
- <para>The fragment comes after the '#' in a URI.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>uri</term>
- <listitem>
- <para>An absolute or relative URI.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>Returns the fragment (without the '#') or '' if the URI has no fragment.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:get-uri-fragment">
- <xsl:param name="uri"/>
-
- <xsl:value-of select="substring-after($uri, '#')"/>
-
- </xsl:template>
-
- <doc:template name="uri:resolve-uri" xmlns="">
- <refpurpose>Resolves a URI reference against a base URI.</refpurpose>
-
- <refdescription>
- <para>This template follows the guidelines specified by <ulink url="ftp://ftp.isi.edu/in-notes/rfc2396.txt">RFC 2396</ulink>.</para>
- </refdescription>
-
- <refparameter>
- <variablelist>
- <varlistentry>
- <term>reference</term>
- <listitem>
- <para>A (potentially relative) URI reference.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>base</term>
- <listitem>
- <para>The base URI.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>document</term>
- <listitem>
- <para>The URI of the current document. This defaults to the value of the base URI if not specified.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refparameter>
-
- <refreturn>
- <para>The "combined" URI.</para>
- </refreturn>
- </doc:template>
-
- <xsl:template name="uri:resolve-uri">
- <xsl:param name="reference"/>
- <xsl:param name="base"/>
- <xsl:param name="document" select="$base"/>
-
- <xsl:variable name="reference-scheme">
- <xsl:call-template name="uri:get-uri-scheme">
- <xsl:with-param name="uri" select="$reference"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="reference-authority">
- <xsl:call-template name="uri:get-uri-authority">
- <xsl:with-param name="uri" select="$reference"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="reference-path">
- <xsl:call-template name="uri:get-uri-path">
- <xsl:with-param name="uri" select="$reference"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="reference-query">
- <xsl:call-template name="uri:get-uri-query">
- <xsl:with-param name="uri" select="$reference"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="reference-fragment">
- <xsl:call-template name="uri:get-uri-fragment">
- <xsl:with-param name="uri" select="$reference"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
-
- <xsl:when test="
- not(string-length($reference-scheme)) and
- not(string-length($reference-authority)) and
- not(string-length($reference-path)) and
- not(string-length($reference-query))"
- >
-
- <xsl:choose>
- <xsl:when test="contains($document, '?')">
- <xsl:value-of select="substring-before($document, '?')"/>
- </xsl:when>
- <xsl:when test="contains($document, '#')">
- <xsl:value-of select="substring-before($document, '#')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$document"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="string-length($reference-fragment)">
- <xsl:value-of select="concat('#', $reference-fragment)"/>
- </xsl:if>
-
- </xsl:when>
-
- <xsl:when test="string-length($reference-scheme)">
-
- <xsl:value-of select="$reference"/>
-
- </xsl:when>
-
- <xsl:otherwise>
-
- <xsl:variable name="base-scheme">
- <xsl:call-template name="uri:get-uri-scheme">
- <xsl:with-param name="uri" select="$base"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="base-authority">
- <xsl:call-template name="uri:get-uri-authority">
- <xsl:with-param name="uri" select="$base"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="base-path">
- <xsl:call-template name="uri:get-uri-path">
- <xsl:with-param name="uri" select="$base"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="base-query">
- <xsl:call-template name="uri:get-uri-query">
- <xsl:with-param name="uri" select="$base"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="base-fragment">
- <xsl:call-template name="uri:get-uri-fragment">
- <xsl:with-param name="uri" select="$base"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="result-authority">
- <xsl:choose>
- <xsl:when test="string-length($reference-authority)">
- <xsl:value-of select="$reference-authority"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$base-authority"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="result-path">
- <xsl:choose>
- <!-- don't normalize absolute paths -->
- <xsl:when test="starts-with($reference-path, '/')">
- <xsl:value-of select="$reference-path" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="uri:normalize-path">
- <xsl:with-param name="path">
- <xsl:if test="string-length($reference-authority) = 0 and substring($reference-path, 1, 1) != '/'">
- <xsl:call-template name="uri:get-path-without-file">
- <xsl:with-param name="path-with-file" select="$base-path"/>
- </xsl:call-template>
- <xsl:value-of select="'/'"/>
- </xsl:if>
- <xsl:value-of select="$reference-path"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($base-scheme, '://', $result-authority, $result-path)"/>
-
- <xsl:if test="string-length($reference-query)">
- <xsl:value-of select="concat('?', $reference-query)"/>
- </xsl:if>
-
- <xsl:if test="string-length($reference-fragment)">
- <xsl:value-of select="concat('#', $reference-fragment)"/>
- </xsl:if>
-
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template name="uri:get-path-without-file">
- <xsl:param name="path-with-file" />
- <xsl:param name="path-without-file" />
-
- <xsl:choose>
- <xsl:when test="contains($path-with-file, '/')">
- <xsl:call-template name="uri:get-path-without-file">
- <xsl:with-param name="path-with-file" select="substring-after($path-with-file, '/')" />
- <xsl:with-param name="path-without-file">
- <xsl:choose>
- <xsl:when test="$path-without-file">
- <xsl:value-of select="concat($path-without-file, '/', substring-before($path-with-file, '/'))" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring-before($path-with-file, '/')" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$path-without-file" />
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template name="uri:normalize-path">
- <xsl:param name="path"/>
- <xsl:param name="result" select="''"/>
-
- <xsl:choose>
- <xsl:when test="string-length($path)">
- <xsl:choose>
- <xsl:when test="$path = '/'">
- <xsl:value-of select="concat($result, '/')"/>
- </xsl:when>
- <xsl:when test="$path = '.'">
- <xsl:value-of select="concat($result, '/')"/>
- </xsl:when>
- <xsl:when test="$path = '..'">
- <xsl:call-template name="uri:get-path-without-file">
- <xsl:with-param name="path-with-file" select="$result"/>
- </xsl:call-template>
- <xsl:value-of select="'/'"/>
- </xsl:when>
- <xsl:when test="contains($path, '/')">
- <!-- the current segment -->
- <xsl:variable name="s" select="substring-before($path, '/')"/>
- <!-- the remaining path -->
- <xsl:variable name="p">
- <xsl:choose>
- <xsl:when test="substring-after($path, '/') = ''">
- <xsl:value-of select="'/'"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring-after($path, '/')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$s = ''">
- <xsl:call-template name="uri:normalize-path">
- <xsl:with-param name="path" select="$p"/>
- <xsl:with-param name="result" select="$result"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$s = '.'">
- <xsl:call-template name="uri:normalize-path">
- <xsl:with-param name="path" select="$p"/>
- <xsl:with-param name="result" select="$result"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$s = '..'">
- <xsl:choose>
- <xsl:when test="string-length($result) and (substring($result, string-length($result) - 2) != '/..')">
- <xsl:call-template name="uri:normalize-path">
- <xsl:with-param name="path" select="$p"/>
- <xsl:with-param name="result">
- <xsl:call-template name="uri:get-path-without-file">
- <xsl:with-param name="path-with-file" select="$result"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="uri:normalize-path">
- <xsl:with-param name="path" select="$p"/>
- <xsl:with-param name="result" select="concat($result, '/..')"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="uri:normalize-path">
- <xsl:with-param name="path" select="$p"/>
- <xsl:with-param name="result" select="concat($result, '/', $s)"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($result, '/', $path)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$result"/>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/locatingrules.xml b/slides/locatingrules.xml
new file mode 100644
index 0000000..cbfc9d4
--- /dev/null
+++ b/slides/locatingrules.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!-- $Id: locatingrules.xml 9639 2012-10-22 18:41:00Z stefan $ -->
+
+
+<!-- This is a schema-locating file for use with a RELAX NG-aware editor -->
+<!-- such as Emacs/nXML mode. It tells your editor to automatically -->
+<!-- associate a document with an RNC schema file, based on the name of -->
+<!-- the root element of the document -->
+
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+ <namespace ns="http://docbook.org/ns/docbook-slides" uri="schema/relaxng/slides.rnc"/>
+ <documentElement localName="slides" uri="schema/relaxng/slides.rnc"/>
+
+ <namespace ns="http://docbook.org/ns/docbook" uri="schema/relaxng/docbook.rnc"/>
+</locatingRules>
+
+<!-- To use this file with Emacs/nXML mode, either: -->
+
+<!-- - do M-x customize-variable rng-schema-locating-files -->
+<!-- and then add the absolute path to this file there -->
+
+<!-- OR -->
+
+<!-- - put the following into your .emacs file: -->
+
+<!-- (setq rng-schema-locating-files -->
+<!-- (append -->
+<!-- '("~/docbook-slides/locatingrules.xml"))) -->
+
+<!-- Of course, replace the ~/docbook-slides/locatingrules.xml -->
+<!-- pathname with the appropriate location for your system. -->
diff --git a/slides/s5/index-osf.html b/slides/s5/index-osf.html
new file mode 100755
index 0000000..abe5e85
--- /dev/null
+++ b/slides/s5/index-osf.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>S5: An Introduction</title>
+<!-- metadata -->
+<meta name="generator" content="S5" />
+<meta name="version" content="S5 1.2a2" />
+<meta name="author" content="Eric A. Meyer" />
+<meta name="company" content="Complex Spiral Consulting" />
+<!-- configuration parameters -->
+<meta name="defaultView" content="slideshow" />
+<meta name="controlVis" content="hidden" />
+<!-- style sheet links -->
+<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
+<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
+<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" />
+<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
+<!-- embedded styles -->
+<style type="text/css" media="all">
+.imgcon {width: 525px; margin: 0 auto; padding: 0; text-align: center;}
+#anim {width: 270px; height: 320px; position: relative; margin-top: 0.5em;}
+#anim img {position: absolute; top: 42px; left: 24px;}
+img#me01 {top: 0; left: 0;}
+img#me02 {left: 23px;}
+img#me04 {top: 44px;}
+img#me05 {top: 43px;left: 36px;}
+</style>
+<!-- S5 JS -->
+<script src="ui/default/slides.js" type="text/javascript"></script>
+</head>
+<body>
+
+<div class="layout">
+<div id="controls"><!-- DO NOT EDIT --></div>
+<div id="currentSlide"><!-- DO NOT EDIT --></div>
+<div id="header"></div>
+<div id="footer">
+<h1>S5 Testbed</h1>
+<h2>Your computer &#8226; Today's date</h2>
+</div>
+</div>
+
+<div class="presentation">
+
+<div class="slide">
+<h1>S5 Testbed</h1>
+<h3>Eric A. Meyer</h3>
+<h4><a href="http://www.complexspiral.com/" rel="external">Complex Spiral Consulting</a></h4>
+<div class="handout"></div>
+</div>
+
+
+<div class="slide">
+<h1>What Is S5?</h1>
+<ul>
+<li>It's a <strong>S</strong>imple <strong>S</strong>tandards-based <strong>S</strong>lide <strong>S</strong>how <strong>S</strong>ystem</li>
+<li>One XHTML document provides all of the slide show's content</li>
+<li>CSS handles the layout and look of the slides</li>
+<li>JavaScript handles the dynamic aspects of the show</li>
+<li>That's all there is to it! (<a href="#slide10">skip to summary</a>; demonstrates links internal to the slide show)</li>
+</ul>
+
+<div class="notes">
+<ul>
+<li>I have notes here!</li>
+<li>Keen.</li>
+<li>Remember to tell people that notes are a new feature in 1.2</li>
+</ul>
+</div>
+
+</div>
+
+
+<div class="slide">
+<h1>Operatic Origins</h1>
+<ul>
+<li>Opera 4 introduced <a href="http://www.opera.com/support/tutorials/operashow/" rel="external">Opera Show</a>, a projection-mode style sheet technology (link demonstrates external link styling and window spawning)</li>
+<li>Allows a single XHTML document to be turned into a PowerPoint-like slide show</li>
+<li>Adding screen and print style sheets allows for multi-medium views of a single document</li>
+<li>Highly efficient, but highly browser centric...</li>
+</ul>
+
+<div class="notes">
+<ul>
+<li>S5 and OperaShow diverged greatly in S5 1.1</li>
+<li>S5 1.2 should (we hope) bring them into harmony once more</li>
+</ul>
+</div>
+
+</div>
+
+
+<div class="slide">
+<h1>Incremental Display</h1>
+<ul class="incremental show-first">
+<li>Keep hitting/clicking "next" as long as it isn't the control link (&raquo;)</li>
+<li>Bullet points are revealed one by one
+<ul class="incremental">
+<li>All based on class name of <code>inc</code></li>
+<li>Lists can be classed to make items appear individually</li>
+<li>Individual items can be classed as well to create "animations"; see <a href="http://boxofchocolates.ca/projects/s5-incremental-graphics/" rel="external">Derek Featherstone's example</a></li>
+</ul>
+</li>
+<li>Let's try it again, but without the first bullet point being pre-highlighted...</li>
+</ul>
+</div>
+
+
+<div class="slide">
+<h1>Incremental Display II</h1>
+<ul class="incremental">
+<li>Keep hitting/clicking "next" as long as it isn't the control link (&raquo;)</li>
+<li>Bullet points are revealed one by one
+<ul>
+<li>All based on class name of <code>incremental</code></li>
+<li>Lists can be classed to make items appear individually</li>
+<li>Individual items can be classed as well to create "animations"; see <a href="http://boxofchocolates.ca/projects/s5-incremental-graphics/" rel="external">Derek Featherstone's example</a></li>
+</ul>
+</li>
+<li>Notice how the sub-list was part of the parent bullet point; that was done on purpose</li>
+<li>Now to move on to other test slides!</li>
+</ul>
+</div>
+
+
+<div class="slide">
+<h1>PNG Alpha Tests</h1>
+<div style="width: 400px; height: 150px; text-align: center; background: url(ui/bg-shade.png)">
+<p>DIV with PNG background followed by foreground PNG</p>
+<img src="ui/bg-shade.png" alt="" title="A translucent image" />
+</div>
+<div style="width: 100%; height: 150px; text-align: center; background: url(ui/bg-shade.png)">
+<p>DIV with PNG background followed by foreground PNG</p>
+<img src="ui/bg-shade.png" alt="" title="A translucent image" />
+</div>
+</div>
+
+<div class="slide">
+<h1>S5 Default File Structure</h1>
+<p style="text-align: center;">
+<img src="pix/s5filemap.png" alt="" title="At a Glance" />
+</p>
+</div>
+
+
+<div class="slide">
+<h1>S5 Themes</h1>
+<p class="imgcon">
+<img src="pix/S501.jpg" alt="" title="Default" />
+<img src="pix/S502.jpg" alt="" title="I18N" />
+<img src="pix/S503.jpg" alt="" title="Blue" />
+<img src="pix/S504.jpg" alt="" title="Flower" />
+(one way of presenting multiple graphics)
+</p>
+</div>
+
+
+<div class="slide">
+<h1>Incremental S5 Themes</h1>
+<p class="imgcon">
+<img src="pix/S501.jpg" alt="" title="Default" class="incremental" />
+<img src="pix/S502.jpg" alt="" title="I18N" class="incremental" />
+<img src="pix/S503.jpg" alt="" title="Blue" class="incremental" />
+<img src="pix/S504.jpg" alt="" title="Flower" class="incremental" />
+(one by one!)
+</p>
+</div>
+
+
+<div class="slide">
+<h1>Incremental Animation</h1>
+<ul>
+<li>A demonstration of just one of the many ways to accomplish simple animation-like effects <small>(using a diagram from <a href="http://gmpg.org/xfn/and/" rel="external">"XFN and..."</a>)</small></li>
+</ul>
+<p class="imgcon" id="anim">
+<img src="pix/mememe01.png" id="me01" alt="" />
+<img src="pix/mememe02.png" alt="" id="me02" class="incremental" />
+<img src="pix/mememe03.png" alt="" id="me03" class="incremental" />
+<img src="pix/mememe04.png" alt="" id="me04" class="incremental" />
+<img src="pix/mememe05.png" alt="" id="me05" class="incremental" />
+</p>
+</div>
+
+
+<div class="slide">
+<h1>In Summary</h1>
+<ul>
+<li>With minimal scripting, we have recreated and improved upon a (currently) browser-specific technology, making it cross-browser in the process</li>
+<li>The S5 format is OSF 1.0 compatible</li>
+<li>S5 is a very flexible and lightweight slide show system available for anyone to use</li>
+</ul>
+</div>
+
+</div>
+
+</body>
+</html>
diff --git a/slides/s5/index-xoxo.html b/slides/s5/index-xoxo.html
new file mode 100755
index 0000000..4ca9fbc
--- /dev/null
+++ b/slides/s5/index-xoxo.html
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>S5: An Introduction</title>
+<!-- metadata -->
+<meta name="generator" content="S5" />
+<meta name="version" content="S5 1.2a2" />
+<meta name="author" content="Eric A. Meyer" />
+<meta name="company" content="Complex Spiral Consulting" />
+<!-- configuration parameters -->
+<meta name="defaultView" content="slideshow" />
+<meta name="controlVis" content="hidden" />
+<!-- style sheet links -->
+<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
+<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
+<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" />
+<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
+<!-- embedded styles -->
+<style type="text/css" media="all">
+.imgcon {width: 525px; margin: 0 auto; padding: 0; text-align: center;}
+#anim {width: 270px; height: 320px; position: relative; margin-top: 0.5em;}
+#anim img {position: absolute; top: 42px; left: 24px;}
+img#me01 {top: 0; left: 0;}
+img#me02 {left: 23px;}
+img#me04 {top: 44px;}
+img#me05 {top: 43px;left: 36px;}
+</style>
+<!-- S5 JS -->
+<script src="ui/default/slides.js" type="text/javascript"></script>
+</head>
+<body>
+
+<div class="layout">
+<div id="controls"><!-- DO NOT EDIT --></div>
+<div id="currentSlide"><!-- DO NOT EDIT --></div>
+<div id="header"></div>
+<div id="footer">
+<h1>S5 Testbed</h1>
+<h2>Your computer &#8226; Today's date</h2>
+</div>
+</div>
+
+<ol class="xoxo presentation">
+
+<li class="slide">
+<h1>S5 Testbed</h1>
+<h3>Eric A. Meyer</h3>
+<h4><a href="http://www.complexspiral.com/" rel="external">Complex Spiral Consulting</a></h4>
+<div class="handout"></div>
+</li>
+
+
+<li class="slide">
+<h1>What Is S5?</h1>
+<ul>
+<li>It's a <strong>S</strong>imple <strong>S</strong>tandards-based <strong>S</strong>lide <strong>S</strong>how <strong>S</strong>ystem</li>
+<li>One XHTML document provides all of the slide show's content</li>
+<li>CSS handles the layout and look of the slides</li>
+<li>JavaScript handles the dynamic aspects of the show</li>
+<li>That's all there is to it! (<a href="#slide10">skip to summary</a>; demonstrates links internal to the slide show)</li>
+</ul>
+
+<div class="notes">
+<ul>
+<li>I have notes here!</li>
+<li>Keen.</li>
+<li>Remember to tell people that notes are a new feature in 1.2</li>
+</ul>
+</div>
+
+</li>
+
+
+<li class="slide">
+<h1>Operatic Origins</h1>
+<ul>
+<li>Opera 4 introduced <a href="http://www.opera.com/support/tutorials/operashow/" rel="external">Opera Show</a>, a projection-mode style sheet technology (link demonstrates external link styling and window spawning)</li>
+<li>Allows a single XHTML document to be turned into a PowerPoint-like slide show</li>
+<li>Adding screen and print style sheets allows for multi-medium views of a single document</li>
+<li>Highly efficient, but highly browser centric...</li>
+</ul>
+
+<div class="notes">
+<ul>
+<li>S5 and OperaShow diverged greatly in S5 1.1</li>
+<li>S5 1.2 should (we hope) bring them into harmony once more</li>
+</ul>
+</div>
+
+</li>
+
+
+<li class="slide">
+<h1>Incremental Display</h1>
+<ul class="incremental show-first">
+<li>Keep hitting/clicking "next" as long as it isn't the control link (&raquo;)</li>
+<li>Bullet points are revealed one by one
+<ul class="incremental">
+<li>All based on class name of <code>inc</code></li>
+<li>Lists can be classed to make items appear individually</li>
+<li>Individual items can be classed as well to create "animations"; see <a href="http://boxofchocolates.ca/projects/s5-incremental-graphics/" rel="external">Derek Featherstone's example</a></li>
+</ul>
+</li>
+<li>Let's try it again, but without the first bullet point being pre-highlighted...</li>
+</ul>
+</li>
+
+
+<li class="slide">
+<h1>Incremental Display II</h1>
+<ul class="incremental">
+<li>Keep hitting/clicking "next" as long as it isn't the control link (&raquo;)</li>
+<li>Bullet points are revealed one by one
+<ul>
+<li>All based on class name of <code>incremental</code></li>
+<li>Lists can be classed to make items appear individually</li>
+<li>Individual items can be classed as well to create "animations"; see <a href="http://boxofchocolates.ca/projects/s5-incremental-graphics/" rel="external">Derek Featherstone's example</a></li>
+</ul>
+</li>
+<li>Notice how the sub-list was part of the parent bullet point; that was done on purpose</li>
+<li>Now to move on to other test slides!</li>
+</ul>
+</li>
+
+
+<li class="slide">
+<h1>PNG Alpha Tests</h1>
+<div style="width: 400px; height: 150px; text-align: center; background: url(ui/bg-shade.png)">
+<p>DIV with PNG background followed by foreground PNG</p>
+<img src="ui/bg-shade.png" alt="" title="A translucent image" />
+</div>
+<div style="width: 100%; height: 150px; text-align: center; background: url(ui/bg-shade.png)">
+<p>DIV with PNG background followed by foreground PNG</p>
+<img src="ui/bg-shade.png" alt="" title="A translucent image" />
+</div>
+</li>
+
+
+<li class="slide">
+<h1>S5 Default File Structure</h1>
+<p style="text-align: center;">
+<img src="pix/s5filemap.png" alt="" title="At a Glance" />
+</p>
+</li>
+
+
+<li class="slide">
+<h1>S5 Themes</h1>
+<p class="imgcon">
+<img src="pix/S501.jpg" alt="" title="Default" />
+<img src="pix/S502.jpg" alt="" title="I18N" />
+<img src="pix/S503.jpg" alt="" title="Blue" />
+<img src="pix/S504.jpg" alt="" title="Flower" />
+(one way of presenting multiple graphics)
+</p>
+</li>
+
+
+<li class="slide">
+<h1>Incremental S5 Themes</h1>
+<p class="imgcon">
+<img src="pix/S501.jpg" alt="" title="Default" class="incremental" />
+<img src="pix/S502.jpg" alt="" title="I18N" class="incremental" />
+<img src="pix/S503.jpg" alt="" title="Blue" class="incremental" />
+<img src="pix/S504.jpg" alt="" title="Flower" class="incremental" />
+(one by one!)
+</p>
+</li>
+
+
+<li class="slide">
+<h1>Incremental Animation</h1>
+<ul>
+<li>A demonstration of just one of the many ways to accomplish simple animation-like effects <small>(using a diagram from <a href="http://gmpg.org/xfn/and/" rel="external">"XFN and..."</a>)</small></li>
+</ul>
+<p class="imgcon" id="anim">
+<img src="pix/mememe01.png" id="me01" alt="" />
+<img src="pix/mememe02.png" alt="" id="me02" class="incremental" />
+<img src="pix/mememe03.png" alt="" id="me03" class="incremental" />
+<img src="pix/mememe04.png" alt="" id="me04" class="incremental" />
+<img src="pix/mememe05.png" alt="" id="me05" class="incremental" />
+</p>
+</li>
+
+
+<li class="slide">
+<h1>In Summary</h1>
+<ul>
+<li>With minimal scripting, we have recreated and improved upon a (currently) browser-specific technology, making it cross-browser in the process</li>
+<li>The S5 format is OSF 1.0 compatible</li>
+<li>S5 is a very flexible and lightweight slide show system available for anyone to use</li>
+</ul>
+</li>
+
+</ol>
+
+</body>
+</html>
diff --git a/slides/s5/pix/S501.jpg b/slides/s5/pix/S501.jpg
new file mode 100755
index 0000000..102f955
--- /dev/null
+++ b/slides/s5/pix/S501.jpg
Binary files differ
diff --git a/slides/s5/pix/S502.jpg b/slides/s5/pix/S502.jpg
new file mode 100755
index 0000000..1ae9f5d
--- /dev/null
+++ b/slides/s5/pix/S502.jpg
Binary files differ
diff --git a/slides/s5/pix/S503.jpg b/slides/s5/pix/S503.jpg
new file mode 100755
index 0000000..6daddb3
--- /dev/null
+++ b/slides/s5/pix/S503.jpg
Binary files differ
diff --git a/slides/s5/pix/S504.jpg b/slides/s5/pix/S504.jpg
new file mode 100755
index 0000000..782f620
--- /dev/null
+++ b/slides/s5/pix/S504.jpg
Binary files differ
diff --git a/slides/s5/pix/mememe01.png b/slides/s5/pix/mememe01.png
new file mode 100755
index 0000000..8c0730f
--- /dev/null
+++ b/slides/s5/pix/mememe01.png
Binary files differ
diff --git a/slides/s5/pix/mememe02.png b/slides/s5/pix/mememe02.png
new file mode 100755
index 0000000..90ff451
--- /dev/null
+++ b/slides/s5/pix/mememe02.png
Binary files differ
diff --git a/slides/s5/pix/mememe03.png b/slides/s5/pix/mememe03.png
new file mode 100755
index 0000000..2256b06
--- /dev/null
+++ b/slides/s5/pix/mememe03.png
Binary files differ
diff --git a/slides/s5/pix/mememe04.png b/slides/s5/pix/mememe04.png
new file mode 100755
index 0000000..5b079cc
--- /dev/null
+++ b/slides/s5/pix/mememe04.png
Binary files differ
diff --git a/slides/s5/pix/mememe05.png b/slides/s5/pix/mememe05.png
new file mode 100755
index 0000000..f32b699
--- /dev/null
+++ b/slides/s5/pix/mememe05.png
Binary files differ
diff --git a/slides/s5/pix/s5filemap.png b/slides/s5/pix/s5filemap.png
new file mode 100755
index 0000000..5d9201f
--- /dev/null
+++ b/slides/s5/pix/s5filemap.png
Binary files differ
diff --git a/slides/s5/ui/bg-shade.png b/slides/s5/ui/bg-shade.png
new file mode 100755
index 0000000..172c914
--- /dev/null
+++ b/slides/s5/ui/bg-shade.png
Binary files differ
diff --git a/slides/s5/ui/default/blank.gif b/slides/s5/ui/default/blank.gif
new file mode 100755
index 0000000..75b945d
--- /dev/null
+++ b/slides/s5/ui/default/blank.gif
Binary files differ
diff --git a/slides/s5/ui/default/bodybg.gif b/slides/s5/ui/default/bodybg.gif
new file mode 100755
index 0000000..5f448a1
--- /dev/null
+++ b/slides/s5/ui/default/bodybg.gif
Binary files differ
diff --git a/slides/s5/ui/default/framing.css b/slides/s5/ui/default/framing.css
new file mode 100755
index 0000000..2a27daf
--- /dev/null
+++ b/slides/s5/ui/default/framing.css
@@ -0,0 +1,22 @@
+/* The following styles size, place, and layer the slide components.
+ Edit these if you want to change the overall slide layout.
+ The commented lines can be uncommented (and modified, if necessary)
+ to help you with the rearrangement process. */
+
+/* target = 1024x768 */
+
+div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
+div#header {top: 0; height: 3em; z-index: 1;}
+div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
+.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;}
+div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
+div#controls form {text-align: right; width: 100%; margin: 0;}
+#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
+html>body #currentSlide {position: fixed;}
+
+/*
+div#header {background: #FCC;}
+div#footer {background: #CCF;}
+div#controls {background: #BBD;}
+div#currentSlide {background: #FFC;}
+*/
diff --git a/slides/s5/ui/default/iepngfix.htc b/slides/s5/ui/default/iepngfix.htc
new file mode 100755
index 0000000..bba2db7
--- /dev/null
+++ b/slides/s5/ui/default/iepngfix.htc
@@ -0,0 +1,42 @@
+<public:component>
+<public:attach event="onpropertychange" onevent="doFix()" />
+
+<script>
+
+// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
+// Free usage permitted as long as this notice remains intact.
+
+// This must be a path to a blank image. That's all the configuration you need here.
+var blankImg = 'ui/default/blank.gif';
+
+var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
+
+function filt(s, m) {
+ if (filters[f]) {
+ filters[f].enabled = s ? true : false;
+ if (s) with (filters[f]) { src = s; sizingMethod = m }
+ } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
+}
+
+function doFix() {
+ if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) ||
+ (event && !/(background|src)/.test(event.propertyName))) return;
+
+ if (tagName == 'IMG') {
+ if ((/\.png$/i).test(src)) {
+ filt(src, 'image'); // was 'scale'
+ src = blankImg;
+ } else if (src.indexOf(blankImg) < 0) filt();
+ } else if (style.backgroundImage) {
+ if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) {
+ var s = RegExp.$1;
+ style.backgroundImage = '';
+ filt(s, 'crop');
+ } else filt();
+ }
+}
+
+doFix();
+
+</script>
+</public:component> \ No newline at end of file
diff --git a/slides/s5/ui/default/notes.css b/slides/s5/ui/default/notes.css
new file mode 100755
index 0000000..5858cf2
--- /dev/null
+++ b/slides/s5/ui/default/notes.css
@@ -0,0 +1,122 @@
+/* Following are the note styles -- edit away! */
+
+body {
+ margin: 0;
+ padding: 1.0em;
+ background: #333;
+ color: #FFF;
+ font: 2em/1.4em 'Lucida Grande', Verdana, sans-serif;
+}
+
+div.timers {
+ background: #FFF;
+ color: #333;
+ border: 0.08em solid #222;
+ border-top-width: 1px;
+ border-left-width: 1px;
+ float: left;
+ padding: 0.2em;
+ margin: 0 0 0.5em;
+ position: relative;
+}
+
+div.timers h1 {
+ text-align: left;
+ font-size: 0.6em;
+ line-height: 1.4em;
+ background-color: #FF9;
+ padding: 0 0.75em;
+ margin: 0.25em 0 0;
+ border: 1px solid #EE8;
+}
+
+div.timers div.controls {
+ position: absolute;
+ right: 0.25em;
+ top: 0.1em;
+ line-height: 1em;
+}
+
+div.timers h1 a {
+ text-decoration: none;
+ color: #000;
+}
+
+div.timers div.controls a {
+ font-size: 0.5em;
+ padding: 0;
+ color: #330;
+}
+
+div.timers a.control {
+ position: absolute;
+ text-decoration: none;
+ padding: 0 0.25em;
+ color: #AAA;
+ outline: 0;
+}
+
+#minus {
+ left: 0.25em;
+}
+
+#plus {
+ right: 0.25em;
+}
+
+.overtime {
+ background: yellow;
+ color: red;
+ border: 3px solid;
+ padding: 0.1em 0.25em;
+ font-weight: bold;
+}
+
+div.timers h2 {
+ font-size: 0.6em;
+ line-height: 1.0em;
+ font-weight: normal;
+ margin: 0 0 -0.25em;
+ padding-top: 0.5em;
+ color: #666;
+}
+
+div.timers p {margin: 0; padding: 0 0.5em;}
+div.timers form {margin: 0;}
+
+div.timers span.clock {
+ font-family: monospace;
+}
+
+div.timers ul {margin: 0; padding: 0; list-style: none;}
+div.timers li {float: left; width: 5em; margin: 0; padding: 0 0.5em;
+ text-align: center;}
+
+div#elapsed {width: 12.1em;}
+div#remaining {clear: left; width: 12.1em;}
+div#remaining p {text-align: center;}
+
+#slide,
+#next,
+#notes,
+#nextnotes {
+ font-size: 0.75em;
+ line-height: 1.4em;
+ clear: left;
+/* max-width: 30.0em; */
+ text-shadow: 0.1em 0.1em 0.1em #111;
+}
+
+#next {margin-top: 2.5em;}
+#next, #nextnotes {
+ color: #999;
+ font-size: 0.66em;
+}
+
+em.disclaimer {
+ color: #666;
+}
+
+div.collapsed h1 {display: block; font-size: 0.33em;}
+div.collapsed h1 a {display: inline;}
+div.collapsed * {display: none;}
diff --git a/slides/s5/ui/default/opera.css b/slides/s5/ui/default/opera.css
new file mode 100755
index 0000000..9e9d2a3
--- /dev/null
+++ b/slides/s5/ui/default/opera.css
@@ -0,0 +1,7 @@
+/* DO NOT CHANGE THESE unless you really want to break Opera Show */
+.slide {
+ visibility: visible !important;
+ position: static !important;
+ page-break-before: always;
+}
+#slide0 {page-break-before: avoid;}
diff --git a/slides/s5/ui/default/outline.css b/slides/s5/ui/default/outline.css
new file mode 100755
index 0000000..62db519
--- /dev/null
+++ b/slides/s5/ui/default/outline.css
@@ -0,0 +1,15 @@
+/* don't change this unless you want the layout stuff to show up in the outline view! */
+
+.layout div, #footer *, #controlForm * {display: none;}
+#footer, #controls, #controlForm, #navLinks, #toggle {
+ display: block; visibility: visible; margin: 0; padding: 0;}
+#toggle {float: right; padding: 0.5em;}
+html>body #toggle {position: fixed; top: 0; right: 0;}
+
+/* making the outline look pretty-ish */
+
+#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
+#slide0 h1 {padding-top: 1.5em;}
+.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em;
+ border-top: 1px solid #888; border-bottom: 1px solid #AAA;}
+#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
diff --git a/slides/s5/ui/default/pretty.css b/slides/s5/ui/default/pretty.css
new file mode 100755
index 0000000..838a7cf
--- /dev/null
+++ b/slides/s5/ui/default/pretty.css
@@ -0,0 +1,82 @@
+/* Following are the presentation styles -- edit away! */
+
+body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2.25em;}
+:link, :visited {text-decoration: none; color: #00C;}
+#controls :active {color: #88A !important;}
+#controls :focus {outline: 1px dotted #227;}
+h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;}
+ul, pre {margin: 0; line-height: 1em;}
+html, body {margin: 0; padding: 0;}
+
+blockquote, q {font-style: italic;}
+blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
+blockquote p {margin: 0;}
+blockquote i {font-style: normal;}
+blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
+blockquote b i {font-style: italic;}
+
+kbd {font-weight: bold; font-size: 1em;}
+sup {font-size: smaller; line-height: 1px;}
+
+.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}
+.slide code.bad, code del {color: red;}
+.slide code.old {color: silver;}
+.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;}
+.slide pre code {display: block;}
+.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
+.slide li {margin-top: 0.75em; margin-right: 0;}
+.slide ul ul {line-height: 1;}
+.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
+.slide img.leader {display: block; margin: 0 auto;}
+
+div#header, div#footer {background: #005; color: #AAB;
+ font-family: Verdana, Helvetica, sans-serif;}
+div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat;
+ line-height: 1px;}
+div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
+#footer h1, #footer h2 {display: block; padding: 0 1em;}
+#footer h2 {font-style: italic;}
+
+div.long {font-size: 0.75em;}
+.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1;
+ margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap;
+ font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize;
+ color: #DDE; background: #005;}
+.slide h3 {font-size: 130%;}
+h1 abbr {font-variant: small-caps;}
+
+div#controls {position: absolute; left: 60%; bottom: 0;
+ width: 40%;
+ text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;}
+html>body div#controls {position: fixed; padding: 0; top: auto;}
+#controls #navLinks a {padding: 0; margin: 0 0.5em;
+ background: #005; border: none; color: #779;
+ cursor: pointer;}
+#controls #navList #jumplist {background: #DDD; color: #227;}
+
+#currentSlide {text-align: center; font-size: 0.5em; color: #449;}
+
+#slide0 {padding-top: 3.5em; font-size: 90%;}
+#slide0 h1 {position: static; margin: 1em 0 0; padding: 0;
+ font: bold 2em Helvetica, sans-serif; white-space: normal;
+ color: #000; background: transparent;}
+#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;}
+#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;}
+#slide0 h4 {margin-top: 0; font-size: 1em;}
+
+ul.urls {list-style: none; display: inline; margin: 0;}
+.urls li {display: inline; margin: 0;}
+.note {display: none;}
+.external {border-bottom: 1px dotted gray;}
+html>body .external {border-bottom: none;}
+.external:after {content: " \274F"; font-size: smaller; color: #77B;}
+
+.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;}
+img.incremental {visibility: hidden;}
+.slide .current {color: #B02;}
+
+
+/* diagnostics
+
+li:after {content: " [" attr(class) "]"; color: #F88;}
+ */ \ No newline at end of file
diff --git a/slides/s5/ui/default/print.css b/slides/s5/ui/default/print.css
new file mode 100755
index 0000000..4a3554d
--- /dev/null
+++ b/slides/s5/ui/default/print.css
@@ -0,0 +1,24 @@
+/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
+.slide, ul {page-break-inside: avoid; visibility: visible !important;}
+h1 {page-break-after: avoid;}
+
+body {font-size: 12pt; background: white;}
+* {color: black;}
+
+#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
+#slide0 h3 {margin: 0; padding: 0;}
+#slide0 h4 {margin: 0 0 0.5em; padding: 0;}
+#slide0 {margin-bottom: 3em;}
+
+h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
+.extra {background: transparent !important;}
+div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
+ul.extra a {font-weight: bold;}
+p.example {display: none;}
+
+#header {display: none;}
+#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;}
+#footer h2, #controls {display: none;}
+
+/* The following rule keeps the layout stuff out of print. Remove at your own risk! */
+.layout, .layout * {display: none !important;}
diff --git a/slides/s5/ui/default/s5-core.css b/slides/s5/ui/default/s5-core.css
new file mode 100755
index 0000000..ad1530b
--- /dev/null
+++ b/slides/s5/ui/default/s5-core.css
@@ -0,0 +1,9 @@
+/* Do not edit or override these styles! The system will likely break if you do. */
+
+div#header, div#footer, div#controls, .slide {position: absolute;}
+html>body div#header, html>body div#footer,
+ html>body div#controls, html>body .slide {position: fixed;}
+.handout, .notes {display: none;}
+.layout {display: block;}
+.slide, .hideme, .incremental {visibility: hidden;}
+#slide0 {visibility: visible;}
diff --git a/slides/s5/ui/default/slides.css b/slides/s5/ui/default/slides.css
new file mode 100755
index 0000000..0786d7d
--- /dev/null
+++ b/slides/s5/ui/default/slides.css
@@ -0,0 +1,3 @@
+@import url(s5-core.css); /* required to make the slide show run at all */
+@import url(framing.css); /* sets basic placement and size of slide components */
+@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file
diff --git a/slides/s5/ui/default/slides.js b/slides/s5/ui/default/slides.js
new file mode 100755
index 0000000..ab2a4b2
--- /dev/null
+++ b/slides/s5/ui/default/slides.js
@@ -0,0 +1,764 @@
+// S5 v1.2a1 slides.js -- released into the Public Domain
+//
+// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information
+// about all the wonderful and talented contributors to this code!
+
+var undef;
+var slideCSS = '';
+var snum = 0;
+var smax = 1;
+var incpos = 0;
+var number = undef;
+var s5mode = true;
+var defaultView = 'slideshow';
+var controlVis = 'visible';
+
+var s5NotesWindow;
+var s5NotesWindowLoaded = false;
+var previousSlide = 0;
+var presentationStart = new Date();
+var slideStart = new Date();
+
+var countdown = {
+ timer: 0,
+ state: 'pause',
+ start: new Date(),
+ end: 0,
+ remaining: 0
+};
+
+
+var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
+var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
+var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
+
+function hasClass(object, className) {
+ if (!object.className) return false;
+ return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
+}
+
+function hasValue(object, value) {
+ if (!object) return false;
+ return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
+}
+
+function removeClass(object,className) {
+ if (!object || !hasClass(object,className)) return;
+ object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
+}
+
+function addClass(object,className) {
+ if (!object || hasClass(object, className)) return;
+ if (object.className) {
+ object.className += ' '+className;
+ } else {
+ object.className = className;
+ }
+}
+
+function GetElementsWithClassName(elementName,className) {
+ var allElements = document.getElementsByTagName(elementName);
+ var elemColl = new Array();
+ for (var i = 0; i< allElements.length; i++) {
+ if (hasClass(allElements[i], className)) {
+ elemColl[elemColl.length] = allElements[i];
+ }
+ }
+ return elemColl;
+}
+
+function isParentOrSelf(element, id) {
+ if (element == null || element.nodeName=='BODY') return false;
+ else if (element.id == id) return true;
+ else return isParentOrSelf(element.parentNode, id);
+}
+
+function nodeValue(node) {
+ var result = "";
+ if (node.nodeType == 1) {
+ var children = node.childNodes;
+ for (var i = 0; i < children.length; ++i) {
+ result += nodeValue(children[i]);
+ }
+ }
+ else if (node.nodeType == 3) {
+ result = node.nodeValue;
+ }
+ return(result);
+}
+
+function slideLabel() {
+ var slideColl = GetElementsWithClassName('*','slide');
+ var list = document.getElementById('jumplist');
+ smax = slideColl.length;
+ for (var n = 0; n < smax; n++) {
+ var obj = slideColl[n];
+
+ var did = 'slide' + n.toString();
+ obj.setAttribute('id',did);
+
+// if (isOp) continue; // Opera fix (hallvord)
+
+ var otext = '';
+ var menu = obj.firstChild;
+ if (!menu) continue; // to cope with empty slides
+ while (menu && menu.nodeType == 3) {
+ menu = menu.nextSibling;
+ }
+ if (!menu) continue; // to cope with slides with only text nodes
+
+ var menunodes = menu.childNodes;
+ for (var o = 0; o < menunodes.length; o++) {
+ otext += nodeValue(menunodes[o]);
+ }
+ list.options[list.length] = new Option(n + ' : ' + otext, n);
+ }
+}
+
+function currentSlide() {
+ var cs;
+ if (document.getElementById) {
+ cs = document.getElementById('currentSlide');
+ } else {
+ cs = document.currentSlide;
+ }
+ cs.innerHTML = '<a id="plink" href="">' +
+ '<span id="csHere">' + snum + '<\/span> ' +
+ '<span id="csSep">\/<\/span> ' +
+ '<span id="csTotal">' + (smax-1) + '<\/span>' +
+ '<\/a>'
+ ;
+ if (snum == 0) {
+ cs.style.visibility = 'hidden';
+ } else {
+ cs.style.visibility = 'visible';
+ }
+}
+
+function go(step) {
+ if (document.getElementById('slideProj').disabled || step == 0) return;
+ var jl = document.getElementById('jumplist');
+ var cid = 'slide' + snum;
+ var ce = document.getElementById(cid);
+ if (incrementals[snum].length > 0) {
+ for (var i = 0; i < incrementals[snum].length; i++) {
+ removeClass(incrementals[snum][i], 'current');
+ removeClass(incrementals[snum][i], 'incremental');
+ }
+ }
+ if (step != 'j') {
+ snum += step;
+ lmax = smax - 1;
+ if (snum > lmax) snum = lmax;
+ if (snum < 0) snum = 0;
+ } else
+ snum = parseInt(jl.value);
+ var nid = 'slide' + snum;
+ var ne = document.getElementById(nid);
+ if (!ne) {
+ ne = document.getElementById('slide0');
+ snum = 0;
+ }
+ if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
+ if (incrementals[snum].length > 0 && incpos == 0) {
+ for (var i = 0; i < incrementals[snum].length; i++) {
+ if (hasClass(incrementals[snum][i], 'current'))
+ incpos = i + 1;
+ else
+ addClass(incrementals[snum][i], 'incremental');
+ }
+ }
+ if (incrementals[snum].length > 0 && incpos > 0)
+ addClass(incrementals[snum][incpos - 1], 'current');
+ if (isOp) { //hallvord
+ location.hash = nid;
+ } else {
+ ce.style.visibility = 'hidden';
+ ne.style.visibility = 'visible';
+ } // /hallvord
+ jl.selectedIndex = snum;
+ currentSlide();
+ loadNote();
+ permaLink();
+ number = undef;
+}
+
+function goTo(target) {
+ if (target >= smax || target == snum) return;
+ go(target - snum);
+}
+
+function subgo(step) {
+ if (step > 0) {
+ removeClass(incrementals[snum][incpos - 1],'current');
+ removeClass(incrementals[snum][incpos], 'incremental');
+ addClass(incrementals[snum][incpos],'current');
+ incpos++;
+ } else {
+ incpos--;
+ removeClass(incrementals[snum][incpos],'current');
+ addClass(incrementals[snum][incpos], 'incremental');
+ addClass(incrementals[snum][incpos - 1],'current');
+ }
+ loadNote();
+}
+
+function toggle() {
+ var slideColl = GetElementsWithClassName('*','slide');
+ var slides = document.getElementById('slideProj');
+ var outline = document.getElementById('outlineStyle');
+ if (!slides.disabled) {
+ slides.disabled = true;
+ outline.disabled = false;
+ s5mode = false;
+ fontSize('1em');
+ for (var n = 0; n < smax; n++) {
+ var slide = slideColl[n];
+ slide.style.visibility = 'visible';
+ }
+ } else {
+ slides.disabled = false;
+ outline.disabled = true;
+ s5mode = true;
+ fontScale();
+ for (var n = 0; n < smax; n++) {
+ var slide = slideColl[n];
+ slide.style.visibility = 'hidden';
+ }
+ slideColl[snum].style.visibility = 'visible';
+ }
+}
+
+function showHide(action) {
+ var obj = GetElementsWithClassName('*','hideme')[0];
+ switch (action) {
+ case 's': obj.style.visibility = 'visible'; break;
+ case 'h': obj.style.visibility = 'hidden'; break;
+ case 'k':
+ if (obj.style.visibility != 'visible') {
+ obj.style.visibility = 'visible';
+ } else {
+ obj.style.visibility = 'hidden';
+ }
+ break;
+ }
+}
+
+// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
+function keys(key) {
+ if (!key) {
+ key = event;
+ key.which = key.keyCode;
+ }
+ if (key.which == 84) {
+ toggle();
+ return;
+ }
+ if (s5mode) {
+ switch (key.which) {
+ case 10: // return
+ case 13: // enter
+ if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
+ if (key.target && isParentOrSelf(key.target, 'controls')) return;
+ if(number != undef) {
+ goTo(number);
+ break;
+ }
+ case 32: // spacebar
+ case 34: // page down
+ case 39: // rightkey
+ case 40: // downkey
+ if(number != undef) {
+ go(number);
+ } else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+ go(1);
+ } else {
+ subgo(1);
+ }
+ break;
+ case 33: // page up
+ case 37: // leftkey
+ case 38: // upkey
+ if(number != undef) {
+ go(-1 * number);
+ } else if (!incrementals[snum] || incpos <= 0) {
+ go(-1);
+ } else {
+ subgo(-1);
+ }
+ break;
+ case 36: // home
+ goTo(0);
+ break;
+ case 35: // end
+ goTo(smax-1);
+ break;
+ case 67: // c
+ showHide('k');
+ break;
+ case 78: // n
+ createNotesWindow();
+ break;
+ }
+ if (key.which < 48 || key.which > 57) {
+ number = undef;
+ } else {
+ if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
+ if (key.target && isParentOrSelf(key.target, 'controls')) return;
+ number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
+ }
+ }
+ return false;
+}
+
+function clicker(e) {
+ number = undef;
+ var target;
+ if (window.event) {
+ target = window.event.srcElement;
+ e = window.event;
+ } else target = e.target;
+ if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
+ if (!e.which || e.which == 1) {
+ if (!incrementals[snum] || incpos >= incrementals[snum].length) {
+ go(1);
+ } else {
+ subgo(1);
+ }
+ }
+}
+
+function findSlide(hash) {
+ var target = null;
+ var slides = GetElementsWithClassName('*','slide');
+ for (var i = 0; i < slides.length; i++) {
+ var targetSlide = slides[i];
+ if ( (targetSlide.name && targetSlide.name == hash)
+ || (targetSlide.id && targetSlide.id == hash) ) {
+ target = targetSlide;
+ break;
+ }
+ }
+ while(target != null && target.nodeName != 'BODY') {
+ if (hasClass(target, 'slide')) {
+ return parseInt(target.id.slice(5));
+ }
+ target = target.parentNode;
+ }
+ return null;
+}
+
+function slideJump() {
+ if (window.location.hash == null) return;
+ var sregex = /^#slide(\d+)$/;
+ var matches = sregex.exec(window.location.hash);
+ var dest = null;
+ if (matches != null) {
+ dest = parseInt(matches[1]);
+ } else {
+ dest = findSlide(window.location.hash.slice(1));
+ }
+ if (dest != null)
+ go(dest - snum);
+}
+
+function fixLinks() {
+ var thisUri = window.location.href;
+ thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
+ var aelements = document.getElementsByTagName('A');
+ for (var i = 0; i < aelements.length; i++) {
+ var a = aelements[i].href;
+ var slideID = a.match('\#slide[0-9]{1,2}');
+ if ((slideID) && (slideID[0].slice(0,1) == '#')) {
+ var dest = findSlide(slideID[0].slice(1));
+ if (dest != null) {
+ if (aelements[i].addEventListener) {
+ aelements[i].addEventListener("click", new Function("e",
+ "if (document.getElementById('slideProj').disabled) return;" +
+ "go("+dest+" - snum); " +
+ "if (e.preventDefault) e.preventDefault();"), true);
+ } else if (aelements[i].attachEvent) {
+ aelements[i].attachEvent("onclick", new Function("",
+ "if (document.getElementById('slideProj').disabled) return;" +
+ "go("+dest+" - snum); " +
+ "event.returnValue = false;"));
+ }
+ }
+ }
+ }
+}
+
+function externalLinks() {
+ if (!document.getElementsByTagName) return;
+ var anchors = document.getElementsByTagName('a');
+ for (var i=0; i<anchors.length; i++) {
+ var anchor = anchors[i];
+ if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
+ anchor.target = '_blank';
+ addClass(anchor,'external');
+ }
+ }
+}
+
+function permaLink() {
+ document.getElementById('plink').href = window.location.pathname + '#slide' + snum;
+}
+
+function createControls() {
+ var controlsDiv = document.getElementById("controls");
+ if (!controlsDiv) return;
+ var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
+ var hideDiv, hideList = '';
+ if (controlVis == 'hidden') {
+ hideDiv = hider;
+ } else {
+ hideList = hider;
+ }
+ controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
+ '<div id="navLinks">' +
+ '<a accesskey="n" id="show-notes" href="javascript:createNotesWindow();" title="Show Notes">&equiv;<\/a>' +
+ '<a accesskey="t" id="toggle" href="javascript:toggle();">&#216;<\/a>' +
+ '<a accesskey="z" id="prev" href="javascript:go(-1);">&laquo;<\/a>' +
+ '<a accesskey="x" id="next" href="javascript:go(1);">&raquo;<\/a>' +
+ '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
+ '<\/div><\/form>';
+ if (controlVis == 'hidden') {
+ var hidden = document.getElementById('navLinks');
+ } else {
+ var hidden = document.getElementById('jumplist');
+ }
+ addClass(hidden,'hideme');
+}
+
+function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
+ if (!s5mode) return false;
+ var vScale = 48; // both yield 16 (the usual browser default) at 1024x768
+ var hScale = 64; // perhaps should auto-calculate based on theme's declared value?
+ if (window.innerHeight) {
+ var vSize = window.innerHeight;
+ var hSize = window.innerWidth;
+ } else if (document.documentElement.clientHeight) {
+ var vSize = document.documentElement.clientHeight;
+ var hSize = document.documentElement.clientWidth;
+ } else if (document.body.clientHeight) {
+ var vSize = document.body.clientHeight;
+ var hSize = document.body.clientWidth;
+ } else {
+ var vSize = 700; // assuming 1024x768, minus chrome and such
+ var hSize = 1024; // these do not account for kiosk mode or Opera Show
+ }
+ var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
+ fontSize(newSize + 'px');
+ if (isGe) { // hack to counter incremental reflow bugs
+ var obj = document.getElementsByTagName('body')[0];
+ obj.style.display = 'none';
+ obj.style.display = 'block';
+ }
+}
+
+function fontSize(value) {
+ if (!(s5ss = document.getElementById('s5ss'))) {
+ if (!document.createStyleSheet) {
+ document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
+ s5ss.setAttribute('media','screen, projection');
+ s5ss.setAttribute('id','s5ss');
+ } else {
+ document.createStyleSheet();
+ document.s5ss = document.styleSheets[document.styleSheets.length - 1];
+ }
+ }
+ if (!(document.s5ss && document.s5ss.addRule)) {
+ while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
+ s5ss.appendChild(document.createTextNode('html {font-size: ' + value + ' !important;}'));
+ } else {
+ document.s5ss.addRule('html','font-size: ' + value + ' !important;');
+ }
+}
+
+function notOperaFix() {
+ slideCSS = document.getElementById('slideProj').href;
+ var slides = document.getElementById('slideProj');
+ var outline = document.getElementById('outlineStyle');
+ slides.setAttribute('media','screen');
+ outline.disabled = true;
+ if (isGe) {
+ slides.setAttribute('href','null'); // Gecko fix
+ slides.setAttribute('href',slideCSS); // Gecko fix
+ }
+ if (isIE && document.styleSheets && document.styleSheets[0]) {
+ document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
+ document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
+ document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
+ }
+}
+
+function getIncrementals(obj) {
+ var incrementals = new Array();
+ if (!obj)
+ return incrementals;
+ var children = obj.childNodes;
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ if (hasClass(child, 'incremental')) {
+ if (child.nodeName == 'OL' || child.nodeName == 'UL') {
+ removeClass(child, 'incremental');
+ for (var j = 0; j < child.childNodes.length; j++) {
+ if (child.childNodes[j].nodeType == 1) {
+ addClass(child.childNodes[j], 'incremental');
+ }
+ }
+ } else {
+ incrementals[incrementals.length] = child;
+ removeClass(child,'incremental');
+ }
+ }
+ if (hasClass(child, 'show-first')) {
+ if (child.nodeName == 'OL' || child.nodeName == 'UL') {
+ removeClass(child, 'show-first');
+ if (child.childNodes[isGe].nodeType == 1) {
+ removeClass(child.childNodes[isGe], 'incremental');
+ }
+ } else {
+ incrementals[incrementals.length] = child;
+ }
+ }
+ incrementals = incrementals.concat(getIncrementals(child));
+ }
+ return incrementals;
+}
+
+function createIncrementals() {
+ var incrementals = new Array();
+ for (var i = 0; i < smax; i++) {
+ incrementals[i] = getIncrementals(document.getElementById('slide'+i));
+ }
+ return incrementals;
+}
+
+function defaultCheck() {
+ var allMetas = document.getElementsByTagName('meta');
+ for (var i = 0; i< allMetas.length; i++) {
+ if (allMetas[i].name == 'defaultView') {
+ defaultView = allMetas[i].content;
+ }
+ if (allMetas[i].name == 'controlVis') {
+ controlVis = allMetas[i].content;
+ }
+ }
+}
+
+// Key trap fix, new function body for trap()
+function trap(e) {
+ if (!e) {
+ e = event;
+ e.which = e.keyCode;
+ }
+ try {
+ modifierKey = e.ctrlKey || e.altKey || e.metaKey;
+ }
+ catch(e) {
+ modifierKey = false;
+ }
+ return modifierKey || e.which == 0;
+}
+
+function noteLabel() { // Gives notes id's to match parent slides
+ var notes = GetElementsWithClassName('div','notes');
+ for (var i = 0; i < notes.length; i++) {
+ var note = notes[i];
+ var id = 'note' + note.parentNode.id.substring(5);
+ note.setAttribute('id',id);
+ }
+ resetElapsedSlide();
+ resetRemainingTime();
+ window.setInterval('updateElaspedTime()', 1000);
+}
+
+function createNotesWindow() { // creates a window for our notes
+ if (!s5NotesWindow || s5NotesWindow.closed) { // Create the window if it doesn't exist
+ s5NotesWindowLoaded = false;
+ // Note: Safari has a tendency to ignore window options preferring to default to the settings of the parent window, grr.
+ s5NotesWindow = window.open('ui/s5-notes.html', 's5NotesWindow', 'top=0,left=0');
+ }
+ if (s5NotesWindowLoaded) { // Load the current note if the Note HTML has loaded
+ loadNote();
+ } else { // Keep trying...
+ window.setTimeout('createNotesWindow()', 50);
+ }
+}
+
+function loadNote() {
+// Loads a note into the note window
+ var notes = nextNotes = '<em class="disclaimer">There are no notes for this slide.</em>';
+ if (document.getElementById('note' + snum)) {
+ notes = document.getElementById('note' + snum).innerHTML;
+ }
+ if (document.getElementById('note' + (snum + 1))) {
+ nextNotes = document.getElementById('note' + (snum + 1)).innerHTML;
+ }
+
+ var jl = document.getElementById('jumplist');
+ var slideTitle = jl.options[jl.selectedIndex].text.replace(/^\d+\s+:\s+/, '') + ((jl.selectedIndex) ? ' (' + jl.selectedIndex + '/' + (smax - 1) + ')' : '');
+ if (incrementals[snum].length > 0) {
+// alert('howdy');
+ slideTitle += ' <small>[' + incpos + '/' + incrementals[snum].length + ']</small>';
+ }
+ if (jl.selectedIndex < smax - 1) {
+ var nextTitle = jl.options[jl.selectedIndex + 1].text.replace(/^\d+\s+:\s+/, '') + ((jl.selectedIndex + 1) ? ' (' + (jl.selectedIndex + 1) + '/' + (smax - 1) + ')' : '');
+ } else {
+ var nextTitle = '[end of slide show]';
+ }
+
+ if (s5NotesWindow && !s5NotesWindow.closed && s5NotesWindow.document) {
+ s5NotesWindow.document.getElementById('slide').innerHTML = slideTitle;
+ s5NotesWindow.document.getElementById('notes').innerHTML = notes;
+ s5NotesWindow.document.getElementById('next').innerHTML = nextTitle;
+ s5NotesWindow.document.getElementById('nextnotes').innerHTML = nextNotes;
+ }
+ resetElapsedSlide();
+}
+
+function minimizeTimer(id) {
+ var obj = s5NotesWindow.document.getElementById(id);
+ if (hasClass(obj,'collapsed')) {
+ removeClass(obj,'collapsed');
+ } else {
+ addClass(obj,'collapsed');
+ }
+}
+
+function resetElapsedTime() {
+ presentationStart = new Date();
+ slideStart = new Date();
+ updateElaspedTime();
+}
+
+function resetElapsedSlide() {
+ if (snum != previousSlide) {
+ slideStart = new Date();
+ previousSlide = snum;
+ updateElaspedTime();
+ }
+}
+
+function updateElaspedTime() {
+ if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+ var now = new Date();
+ var ep = s5NotesWindow.document.getElementById('elapsed-presentation');
+ var es = s5NotesWindow.document.getElementById('elapsed-slide');
+ ep.innerHTML = formatTime(now.valueOf() - presentationStart.valueOf());
+ es.innerHTML = formatTime(now.valueOf() - slideStart.valueOf());
+}
+
+function resetRemainingTime() {
+ if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+ var startField = s5NotesWindow.document.getElementById('startFrom');
+ startFrom = readTime(startField.value);
+ countdown.remaining = startFrom * 60000; // convert to msecs
+ countdown.start = new Date().valueOf();
+ countdown.end = countdown.start + countdown.remaining;
+ var tl = s5NotesWindow.document.getElementById('timeLeft');
+ var timeLeft = formatTime(countdown.remaining);
+ tl.innerHTML = timeLeft;
+}
+
+function updateRemainingTime() {
+ if (!s5NotesWindowLoaded || !s5NotesWindow || s5NotesWindow.closed) return;
+ var tl = s5NotesWindow.document.getElementById('timeLeft');
+ var now = new Date();
+ if (countdown.state == 'run') {
+ countdown.remaining = countdown.end - now;
+ }
+ tl.style.color = '';
+ tl.style.backgroundColor = '';
+ if (countdown.remaining >= 0) {
+ var timeLeft = formatTime(countdown.remaining);
+ removeClass(tl,'overtime');
+ if (countdown.remaining < 300000) {
+ tl.style.color = 'rgb(' + (255-Math.round(countdown.remaining/2000)) + ',0,0)';
+ tl.style.backgroundColor = 'rgb(255,255,' + (Math.round(countdown.remaining/2000)) + ')';
+ }
+ } else {
+ var timeLeft = '-' + formatTime(-countdown.remaining);
+ addClass(tl,'overtime');
+ }
+ tl.innerHTML = timeLeft;
+}
+
+function toggleRemainingTime() {
+ if (countdown.state == 'pause') countdown.state = 'run'; else countdown.state = 'pause';
+ if (countdown.state == 'pause') {
+ window.clearInterval(countdown.timer);
+ }
+ if (countdown.state == 'run') {
+ countdown.start = new Date().valueOf();
+ countdown.end = countdown.start + countdown.remaining;
+ countdown.timer = window.setInterval('updateRemainingTime()', 1000);
+ }
+}
+
+function alterRemainingTime(amt) {
+ var change = amt * 60000; // convert to msecs
+ countdown.end += change;
+ countdown.remaining += change;
+ updateRemainingTime();
+}
+
+function formatTime(msecs) {
+ var time = new Date(msecs);
+
+ var hrs = time.getUTCHours() + ((time.getUTCDate() -1) * 24); // I doubt anyone will spend more than 24 hours on a presentation or single slide but just in case...
+ hrs = (hrs < 10) ? '0'+hrs : hrs;
+ if (hrs == 'NaN' || isNaN(hrs)) hrs = '--';
+
+ var min = time.getUTCMinutes();
+ min = (min < 10) ? '0'+min : min;
+ if (min == 'NaN' || isNaN(min)) min = '--';
+
+ var sec = time.getUTCSeconds();
+ sec = (sec < 10) ? '0'+sec : sec;
+ if (sec == 'NaN' || isNaN(sec)) sec = '--';
+
+ return hrs + ':' + min + ':' + sec;
+}
+
+function readTime(val) {
+ var sregex = /:/;
+ var matches = sregex.exec(val);
+ if (matches == null) {
+ return val;
+ } else {
+ var times = val.split(':');
+ var hours = parseInt(times[0]);
+ var mins = parseInt(times[1]);
+ var total = (hours * 60) + mins;
+ return total;
+ }
+}
+
+function windowChange() {
+ fontScale();
+}
+
+function startup() {
+ defaultCheck();
+ createControls(); // hallvord
+ slideLabel();
+ incrementals = createIncrementals();
+ noteLabel(); // [SI:060104] must follow slideLabel()
+ loadNote();
+ fixLinks();
+ externalLinks();
+ fontScale();
+ if (!isOp) notOperaFix();
+ slideJump();
+ if (defaultView == 'outline') {
+ toggle();
+ }
+ document.onkeyup = keys;
+ document.onkeypress = trap;
+ document.onclick = clicker;
+}
+
+window.onload = startup;
+window.onresize = function(){setTimeout('windowChange()',5);} \ No newline at end of file
diff --git a/slides/s5/ui/s5-notes.html b/slides/s5/ui/s5-notes.html
new file mode 100755
index 0000000..875f95a
--- /dev/null
+++ b/slides/s5/ui/s5-notes.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!-- Do not edit this document! The system will likely break if you do. -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Notes</title>
+<link rel="stylesheet" href="default/notes.css" type="text/css" />
+<script type="text/javascript">
+// <![CDATA[
+ document.onkeyup = opener.keys;
+ document.onkeypress = opener.trap;
+ document.onclick = opener.clicker;
+// ]]>
+</script>
+</head>
+
+<body onload="opener.s5NotesWindowLoaded=true;" onunload="opener.s5NotesWindowLoaded=false;">
+
+
+<div class="timers" id="elapsed">
+<h1>
+<a href="#" onclick="opener.minimizeTimer('elapsed'); return false;">Elapsed Time</a>
+</h1>
+<ul>
+<li>
+<h2>Presentation</h2>
+<span class="clock" id="elapsed-presentation">00:00:00</span>
+</li>
+<li>
+<h2>Current Slide</h2>
+<span class="clock" id="elapsed-slide">00:00:00</span>
+</li>
+</ul>
+<div class="controls">
+<a href="#reset-elapsed" onclick="opener.resetElapsedTime(); return false;" title="Reset Elapsed Time">|&larr;</a>
+</div>
+</div>
+
+<div class="timers" id="remaining">
+<h1>
+<a href="#" onclick="opener.minimizeTimer('remaining'); return false;">Remaining Time</a>
+</h1>
+<p>
+<a href="#subtract-remaining" class="control" id="minus" onclick="opener.alterRemainingTime('-5'); return false;" title="Subtract 5 Minutes">-</a>
+<span class="clock" id="timeLeft">00:00:00</span>
+<a href="#add-remaining" class="control" id="plus" onclick="opener.alterRemainingTime('5'); return false;" title="Add 5 Minutes">+</a>
+</p>
+<div class="controls">
+<form action="#" onsubmit="opener.resetRemainingTime(); return false;">
+<input type="text" class="text" id="startFrom" value="0" size="4" maxlength="4" />
+<a href="#toggle-remaining" onclick="opener.toggleRemainingTime(); return false;" title="Pause/Run Remaining Time">||</a>
+<a href="#reset-remaining" onclick="opener.resetRemainingTime(); return false;" title="Reset Remaining Time">|&larr;</a>
+</form>
+</div>
+</div>
+
+<h2 id="slide">...</h2>
+<div id="notes"></div>
+
+<h2 id="next">...</h2>
+<div id="nextnotes"></div>
+
+</body>
+</html>
diff --git a/slides/schema/relaxng/admonitions.rng b/slides/schema/relaxng/admonitions.rng
new file mode 100644
index 0000000..8666065
--- /dev/null
+++ b/slides/schema/relaxng/admonitions.rng
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <ref name="db.admonition.blocks"/>
+ </start>
+ <define name="db.nopara.blocks" combine="choice">
+ <ref name="db.admonition.blocks"/>
+ </define>
+ <!-- ====================================================================== -->
+ <ctrl:exclude from="db.formal.blocks" exclude="db.admonition.blocks"/>
+ <ctrl:exclude from="db.admonition.blocks" exclude="db.admonition.blocks"/>
+ <ctrl:exclude from="db.footnote" exclude="db.admonition.blocks"/>
+ <ctrl:exclude from="db.caption" exclude="db.admonition.blocks"/>
+ <define name="db.admonition.blocks">
+ <choice>
+ <ref name="db.caution"/>
+ <ref name="db.important"/>
+ <ref name="db.note"/>
+ <ref name="db.tip"/>
+ <ref name="db.warning"/>
+ </choice>
+ </define>
+ <define name="db.admonition.contentmodel">
+ <ref name="db._info.title.only"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>caution</db:refname>
+ <db:refpurpose>A note of caution</db:refpurpose>
+ <define name="db.caution.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.caution.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.caution.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.caution">
+ <element name="caution">
+ <ref name="db.caution.attlist"/>
+ <ref name="db.admonition.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>important</db:refname>
+ <db:refpurpose>An admonition set off from the text</db:refpurpose>
+ <define name="db.important.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.important.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.important.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.important">
+ <element name="important">
+ <ref name="db.important.attlist"/>
+ <ref name="db.admonition.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>note</db:refname>
+ <db:refpurpose>A message set off from the text</db:refpurpose>
+ <define name="db.note.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.note.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.note.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.note">
+ <element name="note">
+ <ref name="db.note.attlist"/>
+ <ref name="db.admonition.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tip</db:refname>
+ <db:refpurpose>A suggestion to the user, set off from the text</db:refpurpose>
+ <define name="db.tip.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tip.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tip.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.tip">
+ <element name="tip">
+ <ref name="db.tip.attlist"/>
+ <ref name="db.admonition.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>warning</db:refname>
+ <db:refpurpose>An admonition set off from the text</db:refpurpose>
+ <define name="db.warning.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.warning.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.warning.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.warning">
+ <element name="warning">
+ <ref name="db.warning.attlist"/>
+ <ref name="db.admonition.contentmodel"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/annotations.rng b/slides/schema/relaxng/annotations.rng
new file mode 100644
index 0000000..13479be
--- /dev/null
+++ b/slides/schema/relaxng/annotations.rng
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: annotations.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <ref name="db.annotation"/>
+ </start>
+ <define name="db.ubiq.inlines" combine="choice">
+ <ref name="db.annotation"/>
+ </define>
+ <define name="db.all.blocks" combine="choice">
+ <ref name="db.annotation"/>
+ </define>
+ <define name="db.info.elements" combine="choice">
+ <ref name="db.annotation"/>
+ </define>
+ <define name="db.annotations.attribute">
+ <attribute name="annotations">
+ <db:refpurpose>Identifies one or more annotations that apply to this element</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.common.attributes" combine="interleave">
+ <optional>
+ <ref name="db.annotations.attribute"/>
+ </optional>
+ </define>
+ <define name="db.common.idreq.attributes" combine="interleave">
+ <optional>
+ <ref name="db.annotations.attribute"/>
+ </optional>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>annotation</db:refname>
+ <db:refpurpose>An annotation</db:refpurpose>
+ <ctrl:exclude from="db.annotation" exclude="db.annotation"/>
+ <define name="db.annotation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.annotation.annotates.attribute">
+ <attribute name="annotates">
+ <db:refpurpose>Identifies one ore more elements to which this annotation applies</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.annotation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.annotation.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.annotation.annotates.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.annotation.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.annotation">
+ <element name="annotation">
+ <ref name="db.annotation.attlist"/>
+ <ref name="db.annotation.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/bibliography.rng b/slides/schema/relaxng/bibliography.rng
new file mode 100644
index 0000000..29e4f28
--- /dev/null
+++ b/slides/schema/relaxng/bibliography.rng
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: bibliography.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start combine="choice">
+ <choice>
+ <ref name="db.bibliodiv"/>
+ <ref name="db.bibliolist"/>
+ </choice>
+ </start>
+ <define name="db.navigation.components" combine="choice">
+ <ref name="db.bibliography"/>
+ </define>
+ <define name="db.list.blocks" combine="choice">
+ <ref name="db.bibliolist"/>
+ </define>
+ <define name="db.info.elements" combine="choice">
+ <choice>
+ <ref name="db.bibliomisc"/>
+ <ref name="db.bibliomset"/>
+ <ref name="db.bibliorelation"/>
+ <ref name="db.biblioset"/>
+ </choice>
+ </define>
+ <define name="db.link.inlines" combine="choice">
+ <ref name="db.biblioref"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.relation.attribute">
+ <attribute name="relation">
+ <db:refpurpose>Identifies the relationship between the bibliographic elemnts</db:refpurpose>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>biblioentry</db:refname>
+ <db:refpurpose>A raw entry in a bibliography</db:refpurpose>
+ <define name="db.biblioentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.biblioentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.biblioentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.biblioentry">
+ <element name="biblioentry">
+ <ref name="db.biblioentry.attlist"/>
+ <oneOrMore>
+ <ref name="db.bibliographic.elements"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliomixed</db:refname>
+ <db:refpurpose>A cooked entry in a bibliography</db:refpurpose>
+ <define name="db.bibliomixed.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliomixed.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliomixed.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.bibliomixed">
+ <element name="bibliomixed">
+ <ref name="db.bibliomixed.attlist"/>
+ <choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.honorific"/>
+ <ref name="db.firstname"/>
+ <ref name="db.surname"/>
+ <ref name="db.lineage"/>
+ <ref name="db.othername"/>
+ <ref name="db.bibliographic.elements"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.honorific"/>
+ <ref name="db.givenname"/>
+ <ref name="db.surname"/>
+ <ref name="db.lineage"/>
+ <ref name="db.othername"/>
+ <ref name="db.bibliographic.elements"/>
+ </choice>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>biblioset</db:refname>
+ <db:refpurpose>A raw container for related bibliographic information</db:refpurpose>
+ <define name="db.biblioset.relation.attribute">
+ <ref name="db.relation.attribute"/>
+ </define>
+ <define name="db.biblioset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.biblioset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.biblioset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.biblioset.relation.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.biblioset">
+ <element name="biblioset">
+ <ref name="db.biblioset.attlist"/>
+ <oneOrMore>
+ <ref name="db.bibliographic.elements"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliomset</db:refname>
+ <db:refpurpose>A cooked container for related bibliographic information</db:refpurpose>
+ <define name="db.bibliomset.relation.attribute">
+ <ref name="db.relation.attribute"/>
+ </define>
+ <define name="db.bibliomset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliomset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliomset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.bibliomset.relation.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.bibliomset">
+ <element name="bibliomset">
+ <ref name="db.bibliomset.attlist"/>
+ <choice>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.honorific"/>
+ <ref name="db.firstname"/>
+ <ref name="db.surname"/>
+ <ref name="db.lineage"/>
+ <ref name="db.othername"/>
+ <ref name="db.bibliographic.elements"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.honorific"/>
+ <ref name="db.givenname"/>
+ <ref name="db.surname"/>
+ <ref name="db.lineage"/>
+ <ref name="db.othername"/>
+ <ref name="db.bibliographic.elements"/>
+ </choice>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliomisc</db:refname>
+ <db:refpurpose>Untyped bibliographic information</db:refpurpose>
+ <define name="db.bibliomisc.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliomisc.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliomisc.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.bibliomisc">
+ <element name="bibliomisc">
+ <ref name="db.bibliomisc.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliography</db:refname>
+ <db:refpurpose>A bibliography</db:refpurpose>
+ <define name="db.bibliography.status.attrib">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.bibliography.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliography.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliography.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.bibliography.status.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.bibliography.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.bibliography">
+ <element name="bibliography">
+ <ref name="db.bibliography.attlist"/>
+ <ref name="db.bibliography.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="db.bibliodiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="db.biblioentry"/>
+ <ref name="db.bibliomixed"/>
+ </choice>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliodiv</db:refname>
+ <db:refpurpose>A section of a bibliography</db:refpurpose>
+ <define name="db.bibliodiv.status.attrib">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.bibliodiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliodiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliodiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.bibliodiv.status.attrib"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.bibliodiv.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.bibliodiv">
+ <element name="bibliodiv">
+ <ref name="db.bibliodiv.attlist"/>
+ <ref name="db.bibliodiv.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="db.biblioentry"/>
+ <ref name="db.bibliomixed"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliolist</db:refname>
+ <db:refpurpose>A wrapper for a list of bibliography entries</db:refpurpose>
+ <define name="db.bibliolist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliolist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliolist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.bibliolist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.bibliolist">
+ <element name="bibliolist">
+ <ref name="db.bibliolist.attlist"/>
+ <optional>
+ <ref name="db.bibliolist.info"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="db.biblioentry"/>
+ <ref name="db.bibliomixed"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>biblioref</db:refname>
+ <db:refpurpose>A cross-reference to a bibliographic entry</db:refpurpose>
+ <define name="db.biblioref.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.biblioref.xrefstyle.attribute">
+ <ref name="db.xrefstyle.attribute"/>
+ </define>
+ <define name="db.biblioref.endterm.attribute">
+ <ref name="db.endterm.attribute"/>
+ </define>
+ <define name="db.biblioref.units.attribute">
+ <attribute name="units">
+ <db:refpurpose>The units (for example, pages) used to identify the beginning and ending of a reference.</db:refpurpose>
+ <data type="token"/>
+ </attribute>
+ </define>
+ <define name="db.biblioref.begin.attribute">
+ <attribute name="begin">
+ <db:refpurpose>Identifies the beginning of a reference; the location within the work that is being referenced.</db:refpurpose>
+ <data type="token"/>
+ </attribute>
+ </define>
+ <define name="db.biblioref.end.attribute">
+ <attribute name="end">
+ <db:refpurpose>Identifies the end of a reference.</db:refpurpose>
+ <data type="token"/>
+ </attribute>
+ </define>
+ <define name="db.biblioref.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.biblioref.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.req.linking.attributes"/>
+ <optional>
+ <ref name="db.biblioref.xrefstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.biblioref.endterm.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.biblioref.units.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.biblioref.begin.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.biblioref.end.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.biblioref">
+ <element name="biblioref">
+ <ref name="db.biblioref.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/callouts.rng b/slides/schema/relaxng/callouts.rng
new file mode 100644
index 0000000..12c231c
--- /dev/null
+++ b/slides/schema/relaxng/callouts.rng
@@ -0,0 +1,503 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: callouts.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start combine="choice">
+ <choice>
+ <ref name="db.calloutlist"/>
+ <ref name="db.programlistingco"/>
+ <ref name="db.screenco"/>
+ <ref name="db.imageobjectco"/>
+ </choice>
+ </start>
+ <define name="db.publishing.inlines" combine="choice">
+ <ref name="db.coref"/>
+ </define>
+ <define name="db.list.blocks" combine="choice">
+ <ref name="db.calloutlist"/>
+ </define>
+ <define name="db.verbatim.blocks" combine="choice">
+ <choice>
+ <ref name="db.programlistingco"/>
+ <ref name="db.screenco"/>
+ </choice>
+ </define>
+ <define name="db.computeroutput.inlines" combine="choice">
+ <ref name="db.co"/>
+ </define>
+ <define name="db.verbatim.inlines" combine="choice">
+ <ref name="db.co"/>
+ </define>
+ <define name="db.prompt.inlines" combine="choice">
+ <ref name="db.co"/>
+ </define>
+ <define name="db.systemitem.inlines" combine="choice">
+ <ref name="db.co"/>
+ </define>
+ <define name="db.userinput.inlines" combine="choice">
+ <ref name="db.co"/>
+ </define>
+ <define name="db.replaceable.inlines" combine="choice">
+ <ref name="db.co"/>
+ </define>
+ <define name="db.ubiq.inlines" combine="choice">
+ <ref name="db.coref"/>
+ </define>
+ <define name="db.mediaobject.content" combine="choice">
+ <ref name="db.imageobjectco"/>
+ </define>
+ <!-- ====================================================================== -->
+ <ctrl:other-attribute name="area.units.attrib" enum-name="area.units-enum.attribute" other-name="area.units-other.attributes"/>
+ <define name="db.area.units.enumeration">
+ <choice>
+ <value>calspair</value>
+ <a:documentation>Coordinates expressed as a pair of CALS graphic coordinates.</a:documentation>
+ <value>linecolumn</value>
+ <a:documentation>Coordinates expressed as a line and column.</a:documentation>
+ <value>linecolumnpair</value>
+ <a:documentation>Coordinates expressed as a pair of lines and columns.</a:documentation>
+ <value>linerange</value>
+ <a:documentation>Coordinates expressed as a line range.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.area.units-enum.attribute">
+ <optional>
+ <attribute name="units">
+ <db:refpurpose>Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: <db:tag class="attvalue">calspair</db:tag>
+ for graphics and <db:tag class="attvalue">linecolumn</db:tag>
+ for line-oriented elements.</db:refpurpose>
+ <ref name="db.area.units.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.area.units-other.attributes">
+ <optional>
+ <attribute name="units">
+ <db:refpurpose>Indicates that non-standard units are used for this <db:tag>area</db:tag>
+. In this case <db:tag class="attribute">otherunits</db:tag>
+ must be specified.</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Coordinates expressed in some non-standard units.</a:documentation>
+ </attribute>
+ </optional>
+ <attribute name="otherunits">
+ <db:refpurpose>Identifies the units used in the <db:tag class="attribute">coords</db:tag>
+ attribute when the <db:tag class="attribute">units</db:tag>
+ attribute is <db:quote>other</db:quote>
+. This attribute is forbidden otherwise.</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.area.units.attribute">
+ <choice>
+ <ref name="db.area.units-enum.attribute"/>
+ <ref name="db.area.units-other.attributes"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>calloutlist</db:refname>
+ <db:refpurpose>A list of <db:tag>callout</db:tag>
+s</db:refpurpose>
+ <define name="db.calloutlist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.calloutlist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.calloutlist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.calloutlist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.calloutlist">
+ <element name="calloutlist">
+ <ref name="db.calloutlist.attlist"/>
+ <ref name="db.calloutlist.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.callout"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>callout</db:refname>
+ <db:refpurpose>A <db:quote>called out</db:quote>
+ description of a marked area</db:refpurpose>
+ <define name="db.callout.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.callout.arearefs.attribute">
+ <attribute name="arearefs">
+ <db:refpurpose>Identifies the areas described by this callout.</db:refpurpose>
+ <data type="IDREFS"/>
+ </attribute>
+ </define>
+ <define name="db.callout.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.callout.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.callout.arearefs.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.callout">
+ <element name="callout">
+ <ref name="db.callout.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>programlistingco</db:refname>
+ <db:refpurpose>A program listing with associated areas used in callouts</db:refpurpose>
+ <define name="db.programlistingco.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.programlistingco.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.programlistingco.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.programlistingco.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.programlistingco">
+ <element name="programlistingco">
+ <ref name="db.programlistingco.attlist"/>
+ <ref name="db.programlistingco.info"/>
+ <ref name="db.areaspec"/>
+ <ref name="db.programlisting"/>
+ <zeroOrMore>
+ <ref name="db.calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>areaspec</db:refname>
+ <db:refpurpose>A collection of regions in a graphic or code example</db:refpurpose>
+ <define name="db.areaspec.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.areaspec.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.areaspec.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.area.units.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.areaspec">
+ <element name="areaspec">
+ <ref name="db.areaspec.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.area"/>
+ <ref name="db.areaset"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>area</db:refname>
+ <db:refpurpose>A region defined for a callout in a graphic or code example</db:refpurpose>
+ <define name="db.area.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.area.linkends.attribute">
+ <attribute name="linkends">
+ <db:refpurpose>Point to the <db:tag>callout</db:tag>
+s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.)</db:refpurpose>
+ <data type="IDREFS"/>
+ </attribute>
+ </define>
+ <define name="db.area.label.attribute">
+ <attribute name="label">
+ <db:refpurpose>Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.area.coords.attribute">
+ <attribute name="coords">
+ <db:refpurpose>Provides the coordinates of the area. The coordinates must be interpreted using the <db:tag class="attribute">units</db:tag>
+ specified.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.area.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.area.role.attribute"/>
+ </optional>
+ <ref name="db.common.idreq.attributes"/>
+ <ref name="db.area.units.attribute"/>
+ <optional>
+ <choice>
+ <ref name="db.area.linkends.attribute"/>
+ <ref name="db.href.attributes"/>
+ </choice>
+ </optional>
+ <optional>
+ <ref name="db.area.label.attribute"/>
+ </optional>
+ <ref name="db.area.coords.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.area">
+ <element name="area">
+ <ref name="db.area.attlist"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>area</db:refname>
+ <db:refpurpose>A region defined for a callout in a graphic or code example</db:refpurpose>
+ <!-- The only difference is that xml:id is optional -->
+ <define name="db.area.inareaset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.area.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.area.units.attribute"/>
+ <optional>
+ <choice>
+ <ref name="db.area.linkends.attribute"/>
+ <ref name="db.href.attributes"/>
+ </choice>
+ </optional>
+ <optional>
+ <ref name="db.area.label.attribute"/>
+ </optional>
+ <ref name="db.area.coords.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.area.inareaset">
+ <element name="area">
+ <ref name="db.area.inareaset.attlist"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>areaset</db:refname>
+ <db:refpurpose>A set of related areas in a graphic or code example</db:refpurpose>
+ <define name="db.areaset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.areaset.linkends.attribute">
+ <ref name="db.linkends.attribute"/>
+ </define>
+ <define name="db.areaset.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.areaset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.areaset.role.attribute"/>
+ </optional>
+ <ref name="db.common.idreq.attributes"/>
+ <ref name="db.area.units.attribute"/>
+ <optional>
+ <choice>
+ <ref name="db.areaset.linkends.attribute"/>
+ <ref name="db.href.attributes"/>
+ </choice>
+ </optional>
+ <optional>
+ <ref name="db.areaset.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.areaset">
+ <element name="areaset">
+ <ref name="db.areaset.attlist"/>
+ <oneOrMore>
+ <ref name="db.area.inareaset"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>screenco</db:refname>
+ <db:refpurpose>A screen with associated areas used in callouts</db:refpurpose>
+ <define name="db.screenco.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.screenco.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.screenco.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.screenco.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.screenco">
+ <element name="screenco">
+ <ref name="db.screenco.attlist"/>
+ <ref name="db.screenco.info"/>
+ <ref name="db.areaspec"/>
+ <ref name="db.screen"/>
+ <zeroOrMore>
+ <ref name="db.calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>imageobjectco</db:refname>
+ <db:refpurpose>A wrapper for an image object with callouts</db:refpurpose>
+ <define name="db.imageobjectco.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.imageobjectco.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.imageobjectco.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.imageobjectco.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.imageobjectco">
+ <element name="imageobjectco">
+ <ref name="db.imageobjectco.attlist"/>
+ <ref name="db.imageobjectco.info"/>
+ <ref name="db.areaspec"/>
+ <oneOrMore>
+ <ref name="db.imageobject"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.calloutlist"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>co</db:refname>
+ <db:refpurpose>The location of a callout embedded in text</db:refpurpose>
+ <define name="db.co.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.co.linkends.attribute">
+ <ref name="db.linkends.attribute"/>
+ </define>
+ <define name="db.co.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.co.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.co.role.attribute"/>
+ </optional>
+ <ref name="db.common.idreq.attributes"/>
+ <optional>
+ <ref name="db.co.linkends.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.co.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.co">
+ <element name="co">
+ <ref name="db.co.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>coref</db:refname>
+ <db:refpurpose>A cross reference to a co</db:refpurpose>
+ <define name="db.coref.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.coref.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.coref.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.coref.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.linkend.attribute"/>
+ <optional>
+ <ref name="db.coref.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.coref">
+ <element name="coref">
+ <ref name="db.coref.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/calstbl.rng b/slides/schema/relaxng/calstbl.rng
new file mode 100644
index 0000000..08259c5
--- /dev/null
+++ b/slides/schema/relaxng/calstbl.rng
@@ -0,0 +1,918 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: calstbl.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns:dbx="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="db.table.choice" combine="choice">
+ <ref name="db.cals.table"/>
+ </define>
+ <define name="db.informaltable.choice" combine="choice">
+ <ref name="db.cals.informaltable"/>
+ </define>
+ <define name="db.char.attribute">
+ <attribute name="char">
+ <db:refpurpose>Specifies the alignment character when <db:tag class="attribute">align</db:tag>
+ is set to <db:quote>char</db:quote>
+.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.charoff.attribute">
+ <attribute name="charoff">
+ <db:refpurpose>Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in <db:tag class="attribute">char</db:tag>
+ when <db:tag class="attribute">align</db:tag>
+ is set to <db:quote>char</db:quote>
+.</db:refpurpose>
+ <data type="decimal">
+ <param name="minExclusive">0</param>
+ <param name="maxExclusive">100</param>
+ </data>
+ </attribute>
+ </define>
+ <define name="db.frame.attribute">
+ <attribute name="frame">
+ <db:refpurpose>Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table.</db:refpurpose>
+ <choice>
+ <value>all</value>
+ <a:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</a:documentation>
+ <value>bottom</value>
+ <a:documentation>Frame only the bottom of the table.</a:documentation>
+ <value>none</value>
+ <a:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</a:documentation>
+ <value>sides</value>
+ <a:documentation>Frame the left and right sides of the table.</a:documentation>
+ <value>top</value>
+ <a:documentation>Frame the top of the table.</a:documentation>
+ <value>topbot</value>
+ <a:documentation>Frame the top and bottom of the table.</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.colsep.attribute">
+ <attribute name="colsep">
+ <db:refpurpose>Specifies the presence or absence of the column separator</db:refpurpose>
+ <dbx:description>
+ <db:para>A rule will be drawn to the right of all cells for which<db:tag class="attribute">colsep</db:tag>
+ has the value 1 (true). Note, however, that the rule to the right of the last column in the table is controlled by the <db:tag class="attribute">frame</db:tag>
+ attribute, not <db:tag class="attribute">colsep</db:tag>
+.</db:para>
+ </dbx:description>
+ <choice>
+ <value>0</value>
+ <a:documentation>No column separator rule.</a:documentation>
+ <value>1</value>
+ <a:documentation>Provide a column separator rule on the right</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.rowsep.attribute">
+ <attribute name="rowsep">
+ <db:refpurpose>Specifies the presence or absence of the row separator</db:refpurpose>
+ <dbx:description>
+ <db:para>A rule will be drawn below all cells for which<db:tag class="attribute">rowsep</db:tag>
+ has the value 1 (true). Note, however, that the rule below the last row in the table is controlled by the <db:tag class="attribute">frame</db:tag>
+ attribute, not <db:tag class="attribute">rowsep</db:tag>
+.</db:para>
+ </dbx:description>
+ <choice>
+ <value>0</value>
+ <a:documentation>No row separator rule.</a:documentation>
+ <value>1</value>
+ <a:documentation>Provide a row separator rule below</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.orient.attribute">
+ <attribute name="orient">
+ <db:refpurpose>Specifies the orientation of the table</db:refpurpose>
+ <choice>
+ <value>land</value>
+ <a:documentation>90 degrees counter-clockwise from the rest of the text flow.</a:documentation>
+ <value>port</value>
+ <a:documentation>The same orientation as the rest of the text flow.</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.tabstyle.attribute">
+ <attribute name="tabstyle">
+ <db:refpurpose>Specifies the table style</db:refpurpose>
+ <dbx:description>
+ <db:para>The <db:tag class="attribute">tabstyle</db:tag>
+ attribute holds the name of a table style defined in a stylesheet that will be used to process this document.</db:para>
+ </dbx:description>
+ </attribute>
+ </define>
+ <define name="db.rowheader.attribute">
+ <attribute name="rowheader">
+ <db:refpurpose>Indicates whether or not the entries in the first column should be considered row headers</db:refpurpose>
+ <choice>
+ <value>firstcol</value>
+ <a:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</a:documentation>
+ <value>norowheader</value>
+ <a:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.align.attribute">
+ <attribute name="align">
+ <db:refpurpose>Specifies the horizontal alignment of text in an entry.</db:refpurpose>
+ <choice>
+ <value>center</value>
+ <a:documentation>Centered.</a:documentation>
+ <value>char</value>
+ <a:documentation>Aligned on a particular character.</a:documentation>
+ <value>justify</value>
+ <a:documentation>Left and right justified.</a:documentation>
+ <value>left</value>
+ <a:documentation>Left justified.</a:documentation>
+ <value>right</value>
+ <a:documentation>Right justified.</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.valign.attribute">
+ <attribute name="valign">
+ <db:refpurpose>Specifies the vertical alignment of text in an entry.</db:refpurpose>
+ <choice>
+ <value>bottom</value>
+ <a:documentation>Aligned on the bottom of the entry.</a:documentation>
+ <value>middle</value>
+ <a:documentation>Aligned in the middle.</a:documentation>
+ <value>top</value>
+ <a:documentation>Aligned at the top of the entry.</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.specify-col-by-colname.attributes">
+ <attribute name="colname">
+ <db:refpurpose>Specifies a column specification by name.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.specify-col-by-namest.attributes">
+ <attribute name="namest">
+ <db:refpurpose>Specifies a starting column by name.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.specify-span-by-spanspec.attributes">
+ <attribute name="spanname">
+ <db:refpurpose>Specifies a span by name.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.specify-span-directly.attributes">
+ <interleave>
+ <attribute name="namest">
+ <db:refpurpose>Specifies a starting column by name.</db:refpurpose>
+ </attribute>
+ <attribute name="nameend">
+ <db:refpurpose>Specifies an ending column by name.</db:refpurpose>
+ </attribute>
+ </interleave>
+ </define>
+ <define name="db.column-spec.attributes">
+ <choice>
+ <ref name="db.specify-col-by-colname.attributes"/>
+ <ref name="db.specify-col-by-namest.attributes"/>
+ <ref name="db.specify-span-by-spanspec.attributes"/>
+ <ref name="db.specify-span-directly.attributes"/>
+ </choice>
+ </define>
+ <define name="db.colname.attribute">
+ <attribute name="colname">
+ <db:refpurpose>Provides a name for a column specification.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.spanname.attribute">
+ <attribute name="spanname">
+ <db:refpurpose>Provides a name for a span specification.</db:refpurpose>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tgroup</db:refname>
+ <db:refpurpose>A wrapper for the main content of a table, or part of a table</db:refpurpose>
+ <define name="db.tgroup.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tgroup.tgroupstyle.attribute">
+ <attribute name="tgroupstyle">
+ <db:refpurpose>Additional style information for downstream processing; typically the name of a style.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.tgroup.cols.attribute">
+ <attribute name="cols">
+ <db:refpurpose>The number of columns in the table. Must be an integer greater than zero.</db:refpurpose>
+ <data type="positiveInteger"/>
+ </attribute>
+ </define>
+ <define name="db.tgroup.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tgroup.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.char.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.charoff.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.tgroup.tgroupstyle.attribute"/>
+ </optional>
+ <ref name="db.tgroup.cols.attribute"/>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.align.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.tgroup">
+ <element name="tgroup">
+ <ref name="db.tgroup.attlist"/>
+ <zeroOrMore>
+ <ref name="db.colspec"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.spanspec"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.cals.thead"/>
+ </optional>
+ <optional>
+ <ref name="db.cals.tfoot"/>
+ </optional>
+ <ref name="db.cals.tbody"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>colspec</db:refname>
+ <db:refpurpose>Specifications for a column in a table</db:refpurpose>
+ <define name="db.colspec.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.colspec.colnum.attribute">
+ <attribute name="colnum">
+ <db:refpurpose>The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one.</db:refpurpose>
+ <data type="positiveInteger"/>
+ </attribute>
+ </define>
+ <define name="db.colspec.colwidth.attribute">
+ <attribute name="colwidth">
+ <db:refpurpose>Specifies the width of the column.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.colspec.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.colspec.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.colspec.colnum.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.char.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colspec.colwidth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.charoff.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colname.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.align.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.colspec">
+ <element name="colspec">
+ <ref name="db.colspec.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>spanspec</db:refname>
+ <db:refpurpose>Formatting information for a spanned column in a table</db:refpurpose>
+ <define name="db.spanspec.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.spanspec.namest.attribute">
+ <attribute name="namest">
+ <db:refpurpose>Specifies a starting column by name.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.spanspec.nameend.attribute">
+ <attribute name="nameend">
+ <db:refpurpose>Specifies an ending column by name.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.spanspec.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.spanspec.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.spanname.attribute"/>
+ <ref name="db.spanspec.namest.attribute"/>
+ <ref name="db.spanspec.nameend.attribute"/>
+ <optional>
+ <ref name="db.char.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.charoff.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.align.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.spanspec">
+ <element name="spanspec">
+ <ref name="db.spanspec.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>thead</db:refname>
+ <db:refpurpose>A table header consisting of one or more rows</db:refpurpose>
+ <define name="db.cals.thead.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.thead.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.thead.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.thead">
+ <element name="thead">
+ <ref name="db.cals.thead.attlist"/>
+ <zeroOrMore>
+ <ref name="db.colspec"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tfoot</db:refname>
+ <db:refpurpose>A table footer consisting of one or more rows</db:refpurpose>
+ <define name="db.cals.tfoot.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.tfoot.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.tfoot.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.tfoot">
+ <element name="tfoot">
+ <ref name="db.cals.tfoot.attlist"/>
+ <zeroOrMore>
+ <ref name="db.colspec"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tbody</db:refname>
+ <db:refpurpose>A wrapper for the rows of a table or informal table</db:refpurpose>
+ <define name="db.cals.tbody.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.tbody.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.tbody.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.tbody">
+ <element name="tbody">
+ <ref name="db.cals.tbody.attlist"/>
+ <oneOrMore>
+ <ref name="db.row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>row</db:refname>
+ <db:refpurpose>A row in a table</db:refpurpose>
+ <define name="db.row.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.row.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.row.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.row">
+ <element name="row">
+ <ref name="db.row.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.entry"/>
+ <ref name="db.entrytbl"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>entry</db:refname>
+ <db:refpurpose>A cell in a table</db:refpurpose>
+ <ctrl:exclude from="db.entry" exclude="db.cals.table"/>
+ <ctrl:exclude from="db.entry" exclude="db.cals.informaltable"/>
+ <define name="db.entry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.entry.morerows.attribute">
+ <attribute name="morerows">
+ <db:refpurpose>Specifies the number of additional rows which this entry occupies. Defaults to zero.</db:refpurpose>
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="db.entry.rotate.attribute">
+ <attribute name="rotate">
+ <db:refpurpose>Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.</db:refpurpose>
+ <choice>
+ <value>0</value>
+ <a:documentation>Do not rotate the cell.</a:documentation>
+ <value>1</value>
+ <a:documentation>Rotate the cell 90 degrees counter-clockwise.</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="db.entry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.entry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.char.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.charoff.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.entry.morerows.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.column-spec.attributes"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.entry.rotate.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.align.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.entry">
+ <element name="entry">
+ <ref name="db.entry.attlist"/>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>entrytbl</db:refname>
+ <db:refpurpose>A subtable appearing in place of an entry in a table</db:refpurpose>
+ <define name="db.entrytbl.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.entrytbl.tgroupstyle.attribute">
+ <attribute name="tgroupstyle">
+ <db:refpurpose>Additional style information for downstream processing; typically the name of a style.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.entrytbl.cols.attribute">
+ <attribute name="cols">
+ <db:refpurpose>The number of columns in the entry table. Must be an integer greater than zero.</db:refpurpose>
+ <data type="positiveInteger"/>
+ </attribute>
+ </define>
+ <define name="db.entrytbl.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.entrytbl.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.char.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.charoff.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.column-spec.attributes"/>
+ </optional>
+ <optional>
+ <ref name="db.entrytbl.tgroupstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.entrytbl.cols.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.align.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.entrytbl">
+ <element name="entrytbl">
+ <ref name="db.entrytbl.attlist"/>
+ <zeroOrMore>
+ <ref name="db.colspec"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.spanspec"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.cals.entrytbl.thead"/>
+ </optional>
+ <ref name="db.cals.entrytbl.tbody"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>thead</db:refname>
+ <db:refpurpose>A table header consisting of one or more rows</db:refpurpose>
+ <define name="db.cals.entrytbl.thead.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.entrytbl.thead.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.entrytbl.thead.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.entrytbl.thead">
+ <element name="thead">
+ <ref name="db.cals.entrytbl.thead.attlist"/>
+ <zeroOrMore>
+ <ref name="db.colspec"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.entrytbl.row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tbody</db:refname>
+ <db:refpurpose>A wrapper for the rows of a table or informal table</db:refpurpose>
+ <define name="db.cals.entrytbl.tbody.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.entrytbl.tbody.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.entrytbl.tbody.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.entrytbl.tbody">
+ <element name="tbody">
+ <ref name="db.cals.entrytbl.tbody.attlist"/>
+ <oneOrMore>
+ <ref name="db.entrytbl.row"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>row</db:refname>
+ <db:refpurpose>A row in a table</db:refpurpose>
+ <define name="db.entrytbl.row.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.entrytbl.row.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.entrytbl.row.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.valign.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.entrytbl.row">
+ <element name="row">
+ <ref name="db.entrytbl.row.attlist"/>
+ <oneOrMore>
+ <ref name="db.entry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>table</db:refname>
+ <db:refpurpose>A formal table in a document</db:refpurpose>
+ <define name="db.cals.table.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.table.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.cals.table.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.table.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.cals.table.label.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.tabstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.floatstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.orient.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.frame.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.pgwide.attribute"/>
+ </optional>
+ <optional>
+ <attribute name="shortentry">
+ <db:refpurpose>Indicates if the short or long title should be used in a List of Tables</db:refpurpose>
+ <choice>
+ <value>0</value>
+ <a:documentation>Indicates that the full title should be used.</a:documentation>
+ <value>1</value>
+ <a:documentation>Indicates that the short short title (titleabbrev) should be used.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="tocentry">
+ <db:refpurpose>Indicates if the table should appear in a List of Tables</db:refpurpose>
+ <choice>
+ <value>0</value>
+ <a:documentation>Indicates that the table should not occur in the List of Tables.</a:documentation>
+ <value>1</value>
+ <a:documentation>Indicates that the table should appear in the List of Tables.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="db.rowheader.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.table.info">
+ <ref name="db._info.title.onlyreq"/>
+ </define>
+ <define name="db.cals.table">
+ <element name="table">
+ <ref name="db.cals.table.attlist"/>
+ <ref name="db.cals.table.info"/>
+ <interleave>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.indexing.inlines"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.textobject"/>
+ </zeroOrMore>
+ </interleave>
+ <choice>
+ <oneOrMore>
+ <ref name="db.mediaobject"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.tgroup"/>
+ </oneOrMore>
+ </choice>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>informaltable</db:refname>
+ <db:refpurpose>A table without a title</db:refpurpose>
+ <define name="db.cals.informaltable.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cals.informaltable.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cals.informaltable.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.tabstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.floatstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.orient.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowsep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.frame.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.pgwide.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.rowheader.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cals.informaltable.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.cals.informaltable">
+ <element name="informaltable">
+ <ref name="db.cals.informaltable.attlist"/>
+ <ref name="db.cals.informaltable.info"/>
+ <interleave>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.indexing.inlines"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.textobject"/>
+ </zeroOrMore>
+ </interleave>
+ <choice>
+ <oneOrMore>
+ <ref name="db.mediaobject"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.tgroup"/>
+ </oneOrMore>
+ </choice>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/core.rng b/slides/schema/relaxng/core.rng
new file mode 100644
index 0000000..8ecf45d
--- /dev/null
+++ b/slides/schema/relaxng/core.rng
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: docbook.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <choice>
+ <ref name="db.set"/>
+ <ref name="db.book"/>
+ <ref name="db.divisions"/>
+ <ref name="db.components"/>
+ <ref name="db.navigation.components"/>
+ <ref name="db.section"/>
+ <ref name="db.para"/>
+ </choice>
+ </start>
+ <include href="pool.rng"/>
+ <include href="hier.rng"/>
+</grammar>
diff --git a/slides/schema/relaxng/docbook.rng b/slides/schema/relaxng/docbook.rng
new file mode 100644
index 0000000..4e156f2
--- /dev/null
+++ b/slides/schema/relaxng/docbook.rng
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: docbook.rnc 7661 2008-02-06 13:52:59Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+ -->
+ <include href="docbook1.rng"/>
+</grammar>
diff --git a/slides/schema/relaxng/docbook1.rng b/slides/schema/relaxng/docbook1.rng
new file mode 100644
index 0000000..b5a8976
--- /dev/null
+++ b/slides/schema/relaxng/docbook1.rng
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: docbook.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="core.rng"/>
+ <include href="annotations.rng"/>
+ <include href="xlink.rng"/>
+ <include href="sect1.rng"/>
+ <include href="refentry.rng"/>
+ <include href="refsect1.rng"/>
+ <include href="glossary.rng"/>
+ <include href="bibliography.rng"/>
+ <include href="index.rng"/>
+ <include href="toc.rng"/>
+ <include href="tasks.rng"/>
+ <include href="callouts.rng"/>
+ <include href="ebnf.rng"/>
+ <include href="calstbl.rng"/>
+ <include href="htmltbl.rng"/>
+ <include href="msgset.rng"/>
+ <include href="qandaset.rng"/>
+ <include href="math.rng"/>
+ <include href="mathml.rng"/>
+ <include href="svg.rng"/>
+ <include href="markup.rng"/>
+ <include href="product.rng"/>
+ <include href="gui.rng"/>
+ <include href="keyboard.rng"/>
+ <include href="os.rng"/>
+ <include href="programming.rng"/>
+ <include href="admonitions.rng"/>
+ <include href="error.rng"/>
+ <include href="technical.rng"/>
+ <include href="topic.rng"/>
+</grammar>
diff --git a/slides/schema/relaxng/ebnf.rng b/slides/schema/relaxng/ebnf.rng
new file mode 100644
index 0000000..97a21aa
--- /dev/null
+++ b/slides/schema/relaxng/ebnf.rng
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: ebnf.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start combine="choice">
+ <choice>
+ <ref name="db.productionset"/>
+ <ref name="db.constraintdef"/>
+ </choice>
+ </start>
+ <define name="db.technical.inlines" combine="choice">
+ <ref name="db.nonterminal"/>
+ </define>
+ <define name="db.technical.blocks" combine="choice">
+ <choice>
+ <ref name="db.productionset"/>
+ <ref name="db.constraintdef"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>productionset</db:refname>
+ <db:refpurpose>A set of EBNF productions</db:refpurpose>
+ <define name="db.productionset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.productionset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.productionset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.productionset.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.productionset">
+ <element name="productionset">
+ <ref name="db.productionset.attlist"/>
+ <ref name="db.productionset.info"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.production"/>
+ <ref name="db.productionrecap"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>production</db:refname>
+ <db:refpurpose>A production in a set of EBNF productions</db:refpurpose>
+ <define name="db.production.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.production.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.production.role.attribute"/>
+ </optional>
+ <ref name="db.common.idreq.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.production">
+ <element name="production">
+ <ref name="db.production.attlist"/>
+ <ref name="db.lhs"/>
+ <ref name="db.rhs"/>
+ <zeroOrMore>
+ <ref name="db.constraint"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>lhs</db:refname>
+ <db:refpurpose>The left-hand side of an EBNF production</db:refpurpose>
+ <define name="db.lhs.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.lhs.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.lhs.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.lhs">
+ <element name="lhs">
+ <ref name="db.lhs.attlist"/>
+ <text/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>rhs</db:refname>
+ <db:refpurpose>The right-hand side of an EBNF production</db:refpurpose>
+ <define name="db.rhs.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.rhs.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.rhs.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.rhs">
+ <element name="rhs">
+ <ref name="db.rhs.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="db.nonterminal"/>
+ <ref name="db.lineannotation"/>
+ <ref name="db.sbr"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>nonterminal</db:refname>
+ <db:refpurpose>A non-terminal in an EBNF production</db:refpurpose>
+ <define name="db.nonterminal.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.nonterminal.def.attribute">
+ <attribute name="def">
+ <db:refpurpose>Specifies a URI that points to a <db:tag>production</db:tag>
+where the <db:tag>nonterminal</db:tag>
+ is defined</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.nonterminal.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.nonterminal.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.nonterminal.def.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.nonterminal">
+ <element name="nonterminal">
+ <ref name="db.nonterminal.attlist"/>
+ <text/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>constraint</db:refname>
+ <db:refpurpose>A constraint in an EBNF production</db:refpurpose>
+ <define name="db.constraint.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.constraint.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.constraint.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.req.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.constraint">
+ <element name="constraint">
+ <ref name="db.constraint.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>productionrecap</db:refname>
+ <db:refpurpose>A cross-reference to an EBNF production</db:refpurpose>
+ <define name="db.productionrecap.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.productionrecap.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.productionrecap.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.req.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.productionrecap">
+ <element name="productionrecap">
+ <ref name="db.productionrecap.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>constraintdef</db:refname>
+ <db:refpurpose>The definition of a constraint in an EBNF production</db:refpurpose>
+ <define name="db.constraintdef.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.constraintdef.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.constraintdef.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.constraintdef.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.constraintdef">
+ <element name="constraintdef">
+ <ref name="db.constraintdef.attlist"/>
+ <ref name="db.constraintdef.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/error.rng b/slides/schema/relaxng/error.rng
new file mode 100644
index 0000000..7a15790
--- /dev/null
+++ b/slides/schema/relaxng/error.rng
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.error.inlines"/>
+ </define>
+ <define name="db.error.inlines">
+ <choice>
+ <ref name="db.errorcode"/>
+ <ref name="db.errortext"/>
+ <ref name="db.errorname"/>
+ <ref name="db.errortype"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>errorcode</db:refname>
+ <db:refpurpose>An error code</db:refpurpose>
+ <define name="db.errorcode.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.errorcode.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.errorcode.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.errorcode">
+ <element name="errorcode">
+ <ref name="db.errorcode.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>errorname</db:refname>
+ <db:refpurpose>An error name</db:refpurpose>
+ <define name="db.errorname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.errorname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.errorname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.errorname">
+ <element name="errorname">
+ <ref name="db.errorname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>errortext</db:refname>
+ <db:refpurpose>An error message.</db:refpurpose>
+ <define name="db.errortext.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.errortext.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.errortext.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.errortext">
+ <element name="errortext">
+ <ref name="db.errortext.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>errortype</db:refname>
+ <db:refpurpose>The classification of an error message</db:refpurpose>
+ <define name="db.errortype.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.errortype.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.errortype.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.errortype">
+ <element name="errortype">
+ <ref name="db.errortype.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/glossary.rng b/slides/schema/relaxng/glossary.rng
new file mode 100644
index 0000000..524176b
--- /dev/null
+++ b/slides/schema/relaxng/glossary.rng
@@ -0,0 +1,513 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: glossary.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start combine="choice">
+ <choice>
+ <ref name="db.glossary"/>
+ <ref name="db.glossdiv"/>
+ <ref name="db.glosslist"/>
+ </choice>
+ </start>
+ <define name="db.publishing.inlines" combine="choice">
+ <ref name="db.glossary.inlines"/>
+ </define>
+ <define name="db.list.blocks" combine="choice">
+ <ref name="db.glosslist"/>
+ </define>
+ <define name="db.navigation.components" combine="choice">
+ <ref name="db.glossary"/>
+ </define>
+ <define name="db.glossary.inlines">
+ <choice>
+ <ref name="db.firstterm"/>
+ <ref name="db.glossterm"/>
+ <ref name="db._firstterm"/>
+ <ref name="db._glossterm"/>
+ </choice>
+ </define>
+ <define name="db.ubiq.inlines" combine="choice">
+ <choice>
+ <ref name="db._firstterm"/>
+ <ref name="db._glossterm"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.baseform.attribute">
+ <optional>
+ <attribute name="baseform">
+ <db:refpurpose>Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form.</db:refpurpose>
+ </attribute>
+ </optional>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glosslist</db:refname>
+ <db:refpurpose>A wrapper for a list of glossary entries</db:refpurpose>
+ <define name="db.glosslist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glosslist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glosslist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.glosslist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.glosslist">
+ <element name="glosslist">
+ <ref name="db.glosslist.attlist"/>
+ <optional>
+ <ref name="db.glosslist.info"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.glossentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossentry</db:refname>
+ <db:refpurpose>An entry in a glossary or glosslist</db:refpurpose>
+ <define name="db.glossentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glossentry.sortas.attribute">
+ <attribute name="sortas">
+ <db:refpurpose>Specifies the string by which the element's content is to be sorted; if unspecified, the content is used</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.glossentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glossentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.glossentry.sortas.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.glossentry">
+ <element name="glossentry">
+ <ref name="db.glossentry.attlist"/>
+ <ref name="db.glossterm"/>
+ <optional>
+ <ref name="db.acronym"/>
+ </optional>
+ <optional>
+ <ref name="db.abbrev"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.indexterm"/>
+ </zeroOrMore>
+ <choice>
+ <ref name="db.glosssee"/>
+ <oneOrMore>
+ <ref name="db.glossdef"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossdef</db:refname>
+ <db:refpurpose>A definition in a glossentry</db:refpurpose>
+ <define name="db.glossdef.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glossdef.subject.attribute">
+ <attribute name="subject">
+ <db:refpurpose>Specifies a list of keywords for the definition</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.glossdef.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glossdef.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.glossdef.subject.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.glossdef">
+ <element name="glossdef">
+ <ref name="db.glossdef.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.glossseealso"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glosssee</db:refname>
+ <db:refpurpose>A cross-reference from one <db:tag>glossentry</db:tag>
+ to another</db:refpurpose>
+ <define name="db.glosssee.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glosssee.otherterm.attribute">
+ <attribute name="otherterm">
+ <db:refpurpose>Identifies the other term</db:refpurpose>
+ <data type="IDREF"/>
+ </attribute>
+ </define>
+ <define name="db.glosssee.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glosssee.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.glosssee.otherterm.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.glosssee">
+ <element name="glosssee">
+ <s:pattern name="Glosssary 'see' type constraint">
+ <s:rule context="db:glosssee[@otherterm]">
+ <s:assert test="local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'">@otherterm on glosssee must point to a glossentry.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.glosssee.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossseealso</db:refname>
+ <db:refpurpose>A cross-reference from one glossentry to another</db:refpurpose>
+ <define name="db.glossseealso.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glossseealso.otherterm.attribute">
+ <attribute name="otherterm">
+ <db:refpurpose>Identifies the other term</db:refpurpose>
+ <data type="IDREF"/>
+ </attribute>
+ </define>
+ <define name="db.glossseealso.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glossseealso.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.glossseealso.otherterm.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.glossseealso">
+ <element name="glossseealso">
+ <s:pattern name="Glossary 'seealso' type constraint">
+ <s:rule context="db:glossseealso[@otherterm]">
+ <s:assert test="local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'">@otherterm on glossseealso must point to a glossentry.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.glossseealso.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>firstterm</db:refname>
+ <db:refpurpose>The first occurrence of a term</db:refpurpose>
+ <define name="db.firstterm.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.firstterm.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.firstterm.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.baseform.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.firstterm">
+ <element name="firstterm">
+ <s:pattern name="Glossary 'firstterm' type constraint">
+ <s:rule context="db:firstterm[@linkend]">
+ <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on firstterm must point to a glossentry.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.firstterm.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>firstterm</db:refname>
+ <db:refpurpose>The first occurrence of a term, with limited content</db:refpurpose>
+ <define name="db._firstterm.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db._firstterm.attlist">
+ <interleave>
+ <optional>
+ <ref name="db._firstterm.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.baseform.attribute"/>
+ </interleave>
+ </define>
+ <define name="db._firstterm">
+ <element name="firstterm">
+ <s:pattern name="Glossary 'firstterm' type constraint">
+ <s:rule context="db:firstterm[@linkend]">
+ <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on firstterm must point to a glossentry.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db._firstterm.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossterm</db:refname>
+ <db:refpurpose>A glossary term</db:refpurpose>
+ <define name="db.glossterm.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glossterm.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glossterm.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.baseform.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.glossterm">
+ <element name="glossterm">
+ <s:pattern name="Glossary 'glossterm' type constraint">
+ <s:rule context="db:glossterm[@linkend]">
+ <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on glossterm must point to a glossentry.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.glossterm.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossterm</db:refname>
+ <db:refpurpose>A glossary term</db:refpurpose>
+ <define name="db._glossterm.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db._glossterm.attlist">
+ <interleave>
+ <optional>
+ <ref name="db._glossterm.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.baseform.attribute"/>
+ </interleave>
+ </define>
+ <define name="db._glossterm">
+ <element name="glossterm">
+ <s:pattern name="Glossary 'glossterm' type constraint">
+ <s:rule context="db:glossterm[@linkend]">
+ <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on glossterm must point to a glossentry.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db._glossterm.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossary</db:refname>
+ <db:refpurpose>A glossary</db:refpurpose>
+ <define name="db.glossary.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.glossary.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glossary.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glossary.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.glossary.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.glossary.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.glossary">
+ <element name="glossary">
+ <ref name="db.glossary.attlist"/>
+ <ref name="db.glossary.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.glossdiv"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.glossentry"/>
+ </zeroOrMore>
+ </choice>
+ <optional>
+ <ref name="db.bibliography"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>glossdiv</db:refname>
+ <db:refpurpose>A division in a glossary</db:refpurpose>
+ <define name="db.glossdiv.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.glossdiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.glossdiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.glossdiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.glossdiv.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.glossdiv.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.glossdiv">
+ <element name="glossdiv">
+ <ref name="db.glossdiv.attlist"/>
+ <ref name="db.glossdiv.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.glossentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.technical.inlines" combine="choice">
+ <ref name="db.termdef"/>
+ </define>
+ <div>
+ <db:refname>termdef</db:refname>
+ <db:refpurpose>An inline definition of a term</db:refpurpose>
+ <define name="db.termdef.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.termdef.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.termdef.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.glossentry.sortas.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.baseform.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.termdef">
+ <element name="termdef">
+ <s:pattern name="Glossary term definition constraint">
+ <s:rule context="db:termdef">
+ <s:assert test="count(db:firstterm) = 1">A termdef must contain exactly one firstterm</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.termdef.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/gui.rng b/slides/schema/relaxng/gui.rng
new file mode 100644
index 0000000..e1ce3d6
--- /dev/null
+++ b/slides/schema/relaxng/gui.rng
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.gui.inlines"/>
+ </define>
+ <define name="db.userinput.inlines" combine="choice">
+ <ref name="db.gui.inlines"/>
+ </define>
+ <define name="db.keycombination.contentmodel" combine="choice">
+ <ref name="db.mousebutton"/>
+ </define>
+ <define name="db.gui.inlines">
+ <choice>
+ <ref name="db.guiicon"/>
+ <ref name="db.guibutton"/>
+ <ref name="db.guimenuitem"/>
+ <ref name="db.guimenu"/>
+ <ref name="db.guisubmenu"/>
+ <ref name="db.guilabel"/>
+ <ref name="db.menuchoice"/>
+ <ref name="db.mousebutton"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>guibutton</db:refname>
+ <db:refpurpose>The text on a button in a GUI</db:refpurpose>
+ <define name="db.guibutton.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.guibutton.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.guibutton.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.guibutton">
+ <element name="guibutton">
+ <ref name="db.guibutton.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.accel"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>guiicon</db:refname>
+ <db:refpurpose>Graphic and/or text appearing as a icon in a GUI</db:refpurpose>
+ <define name="db.guiicon.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.guiicon.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.guiicon.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.guiicon">
+ <element name="guiicon">
+ <ref name="db.guiicon.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.accel"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>guilabel</db:refname>
+ <db:refpurpose>The text of a label in a GUI</db:refpurpose>
+ <define name="db.guilabel.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.guilabel.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.guilabel.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.guilabel">
+ <element name="guilabel">
+ <ref name="db.guilabel.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.accel"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>guimenu</db:refname>
+ <db:refpurpose>The name of a menu in a GUI</db:refpurpose>
+ <define name="db.guimenu.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.guimenu.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.guimenu.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.guimenu">
+ <element name="guimenu">
+ <ref name="db.guimenu.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.accel"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>guimenuitem</db:refname>
+ <db:refpurpose>The name of a terminal menu item in a GUI</db:refpurpose>
+ <define name="db.guimenuitem.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.guimenuitem.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.guimenuitem.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.guimenuitem">
+ <element name="guimenuitem">
+ <ref name="db.guimenuitem.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.accel"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>guisubmenu</db:refname>
+ <db:refpurpose>The name of a submenu in a GUI</db:refpurpose>
+ <define name="db.guisubmenu.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.guisubmenu.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.guisubmenu.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.guisubmenu">
+ <element name="guisubmenu">
+ <ref name="db.guisubmenu.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.accel"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>menuchoice</db:refname>
+ <db:refpurpose>A selection or series of selections from a menu</db:refpurpose>
+ <define name="db.menuchoice.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.menuchoice.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.menuchoice.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.menuchoice">
+ <element name="menuchoice">
+ <ref name="db.menuchoice.attlist"/>
+ <optional>
+ <ref name="db.shortcut"/>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <ref name="db.guibutton"/>
+ <ref name="db.guiicon"/>
+ <ref name="db.guilabel"/>
+ <ref name="db.guimenu"/>
+ <ref name="db.guimenuitem"/>
+ <ref name="db.guisubmenu"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>mousebutton</db:refname>
+ <db:refpurpose>The conventional name of a mouse button</db:refpurpose>
+ <define name="db.mousebutton.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.mousebutton.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.mousebutton.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.mousebutton">
+ <element name="mousebutton">
+ <ref name="db.mousebutton.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/hier.rng b/slides/schema/relaxng/hier.rng
new file mode 100644
index 0000000..9ac1149
--- /dev/null
+++ b/slides/schema/relaxng/hier.rng
@@ -0,0 +1,730 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: hier.rnc 8994 2011-04-19 20:07:33Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:dbx="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.partintro"/>
+ <ref name="db.simplesect"/>
+ </choice>
+ </start>
+ <define name="db.status.attribute">
+ <attribute name="status">
+ <db:refpurpose>Identifies the editorial or publication status of the element on which it occurs</db:refpurpose>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.toplevel.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.section"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="db.toplevel.blocks.or.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.toplevel.sections"/>
+ </optional>
+ </group>
+ <ref name="db.toplevel.sections"/>
+ </choice>
+ </define>
+ <define name="db.recursive.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.section"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="db.recursive.blocks.or.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.recursive.sections"/>
+ </optional>
+ </group>
+ <ref name="db.recursive.sections"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.divisions">
+ <ref name="db.part"/>
+ </define>
+ <define name="db.components">
+ <choice>
+ <ref name="db.dedication"/>
+ <ref name="db.acknowledgements"/>
+ <ref name="db.preface"/>
+ <ref name="db.chapter"/>
+ <ref name="db.appendix"/>
+ <ref name="db.article"/>
+ <ref name="db.colophon"/>
+ </choice>
+ </define>
+ <define name="db.navigation.components">
+ <notAllowed/>
+ </define>
+ <define name="db.component.contentmodel">
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ <ref name="db.toplevel.blocks.or.sections"/>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.setindex.components">
+ <notAllowed/>
+ </define>
+ <define name="db.toc.components">
+ <notAllowed/>
+ </define>
+ <define name="db.set.components">
+ <choice>
+ <ref name="db.set"/>
+ <ref name="db.book"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>set</db:refname>
+ <db:refpurpose>A collection of books</db:refpurpose>
+ <define name="db.set.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.set.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.set.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.set.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.set.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.set.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.set">
+ <element name="set">
+ <ref name="db.set.attlist"/>
+ <ref name="db.set.info"/>
+ <optional>
+ <ref name="db.toc.components"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.set.components"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.setindex.components"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.book.components">
+ <zeroOrMore>
+ <choice>
+ <ref name="db.navigation.components"/>
+ <ref name="db.components"/>
+ <ref name="db.divisions"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>book</db:refname>
+ <db:refpurpose>A book</db:refpurpose>
+ <define name="db.book.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.book.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.book.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.book.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.book.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.book.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.book">
+ <element name="book">
+ <ref name="db.book.attlist"/>
+ <ref name="db.book.info"/>
+ <ref name="db.book.components"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>dedication</db:refname>
+ <db:refpurpose>The dedication of a book or other component</db:refpurpose>
+ <define name="db.dedication.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.dedication.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.dedication.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.dedication.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.dedication.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.dedication.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.dedication">
+ <element name="dedication">
+ <ref name="db.dedication.attlist"/>
+ <ref name="db.dedication.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>acknowledgements</db:refname>
+ <db:refpurpose>Acknowledgements of a book or other component</db:refpurpose>
+ <define name="db.acknowledgements.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.acknowledgements.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.acknowledgements.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.acknowledgements.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.acknowledgements.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.acknowledgements.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.acknowledgements">
+ <element name="acknowledgements">
+ <ref name="db.acknowledgements.attlist"/>
+ <ref name="db.acknowledgements.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>colophon</db:refname>
+ <db:refpurpose>Text at the back of a book describing facts about its production</db:refpurpose>
+ <define name="db.colophon.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.colophon.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.colophon.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.colophon.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.colophon.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.colophon.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.colophon">
+ <element name="colophon">
+ <ref name="db.colophon.attlist"/>
+ <ref name="db.colophon.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <group>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </group>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.appendix.contentmodel">
+ <ref name="db.component.contentmodel"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>appendix</db:refname>
+ <db:refpurpose>An appendix in a book or article</db:refpurpose>
+ <define name="db.appendix.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.appendix.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.appendix.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.appendix.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.appendix.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.appendix.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.appendix">
+ <element name="appendix">
+ <ref name="db.appendix.attlist"/>
+ <ref name="db.appendix.info"/>
+ <ref name="db.appendix.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.chapter.contentmodel">
+ <ref name="db.component.contentmodel"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>chapter</db:refname>
+ <db:refpurpose>A chapter, as of a book</db:refpurpose>
+ <define name="db.chapter.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.chapter.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.chapter.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.chapter.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.chapter.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.chapter.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.chapter">
+ <element name="chapter">
+ <ref name="db.chapter.attlist"/>
+ <ref name="db.chapter.info"/>
+ <ref name="db.chapter.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.part.components">
+ <choice>
+ <ref name="db.navigation.components"/>
+ <ref name="db.components"/>
+ </choice>
+ </define>
+ <define name="db.part.contentmodel">
+ <oneOrMore>
+ <ref name="db.part.components"/>
+ </oneOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>part</db:refname>
+ <db:refpurpose>A division in a book</db:refpurpose>
+ <define name="db.part.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.part.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.part.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.part.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.part.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.part.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.part">
+ <element name="part">
+ <ref name="db.part.attlist"/>
+ <ref name="db.part.info"/>
+ <optional>
+ <ref name="db.partintro"/>
+ </optional>
+ <ref name="db.part.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>preface</db:refname>
+ <db:refpurpose>Introductory matter preceding the first chapter of a book</db:refpurpose>
+ <define name="db.preface.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.preface.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.preface.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.preface.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.preface.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.preface.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.preface">
+ <element name="preface">
+ <ref name="db.preface.attlist"/>
+ <ref name="db.preface.info"/>
+ <ref name="db.component.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>partintro</db:refname>
+ <db:refpurpose>An introduction to the contents of a part</db:refpurpose>
+ <define name="db.partintro.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.partintro.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.partintro.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.partintro.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.partintro.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.partintro.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.partintro">
+ <element name="partintro">
+ <ref name="db.partintro.attlist"/>
+ <ref name="db.partintro.info"/>
+ <ref name="db.toplevel.blocks.or.sections"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>section</db:refname>
+ <db:refpurpose>A recursive section</db:refpurpose>
+ <define name="db.section.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.section.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.section.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.section.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.section.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.section.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.section">
+ <element name="section">
+ <ref name="db.section.attlist"/>
+ <ref name="db.section.info"/>
+ <ref name="db.recursive.blocks.or.sections"/>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>simplesect</db:refname>
+ <db:refpurpose>A section of a document with no subdivisions</db:refpurpose>
+ <define name="db.simplesect.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.simplesect.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.simplesect.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.simplesect.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.simplesect.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.simplesect.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.simplesect">
+ <element name="simplesect">
+ <ref name="db.simplesect.attlist"/>
+ <ref name="db.simplesect.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.article.components">
+ <ref name="db.toplevel.sections"/>
+ </define>
+ <define name="db.article.navcomponents">
+ <choice>
+ <ref name="db.navigation.components"/>
+ <ref name="db.acknowledgements"/>
+ <ref name="db.dedication"/>
+ <ref name="db.appendix"/>
+ <ref name="db.colophon"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>article</db:refname>
+ <db:refpurpose>An article</db:refpurpose>
+ <define name="db.article.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.article.class.enumeration">
+ <choice>
+ <value>faq</value>
+ <a:documentation>A collection of frequently asked questions.</a:documentation>
+ <value>journalarticle</value>
+ <a:documentation>An article in a journal or other periodical.</a:documentation>
+ <value>productsheet</value>
+ <a:documentation>A description of a product.</a:documentation>
+ <value>specification</value>
+ <a:documentation>A specification.</a:documentation>
+ <value>techreport</value>
+ <a:documentation>A technical report.</a:documentation>
+ <value>whitepaper</value>
+ <a:documentation>A white paper.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.article.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the nature of the article</db:refpurpose>
+ <ref name="db.article.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.article.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.article.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.article.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.article.status.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.article.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.article.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.article">
+ <element name="article">
+ <ref name="db.article.attlist"/>
+ <ref name="db.article.info"/>
+ <zeroOrMore>
+ <ref name="db.article.navcomponents"/>
+ </zeroOrMore>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.article.components"/>
+ </optional>
+ </group>
+ <ref name="db.article.components"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.article.navcomponents"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/htmltbl.rng b/slides/schema/relaxng/htmltbl.rng
new file mode 100644
index 0000000..c2fc3b1
--- /dev/null
+++ b/slides/schema/relaxng/htmltbl.rng
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: htmltbl.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="db.table.choice" combine="choice">
+ <ref name="db.html.table"/>
+ </define>
+ <define name="db.informaltable.choice" combine="choice">
+ <ref name="db.html.informaltable"/>
+ </define>
+ <define name="db.html.coreattrs">
+ <interleave>
+ <optional>
+ <attribute name="class">
+ <db:refpurpose>This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="style">
+ <db:refpurpose>This attribute specifies style information for the current element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="title">
+ <db:refpurpose>This attribute offers advisory information about the element for which it is set.</db:refpurpose>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <!-- dir isn't listed here because it's already a common attribute -->
+ <define name="db.html.i18n">
+ <optional>
+ <attribute name="lang">
+ <db:refpurpose>This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.</db:refpurpose>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.html.events">
+ <interleave>
+ <optional>
+ <attribute name="onclick">
+ <db:refpurpose>Occurs when the pointing device button is clicked over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="ondblclick">
+ <db:refpurpose>Occurs when the pointing device button is double clicked over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onmousedown">
+ <db:refpurpose>Occurs when the pointing device button is pressed over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onmouseup">
+ <db:refpurpose>Occurs when the pointing device button is released over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onmouseover">
+ <db:refpurpose>Occurs when the pointing device is moved onto an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onmousemove">
+ <db:refpurpose>Occurs when the pointing device is moved while it is over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onmouseout">
+ <db:refpurpose>Occurs when the pointing device is moved away from an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onkeypress">
+ <db:refpurpose>Occurs when a key is pressed and released over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onkeydown">
+ <db:refpurpose>Occurs when a key is pressed down over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="onkeyup">
+ <db:refpurpose>Occurs when a key is released over an element.</db:refpurpose>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.html.attrs">
+ <interleave>
+ <ref name="db.common.attributes"/>
+ <ref name="db.html.coreattrs"/>
+ <ref name="db.html.i18n"/>
+ <ref name="db.html.events"/>
+ </interleave>
+ </define>
+ <define name="db.html.cellhalign">
+ <interleave>
+ <optional>
+ <attribute name="align">
+ <db:refpurpose>Specifies the alignment of data and the justification of text in a cell.</db:refpurpose>
+ <choice>
+ <value>left</value>
+ <a:documentation>Left-flush data/Left-justify text. This is the default value for table data.</a:documentation>
+ <value>center</value>
+ <a:documentation>Center data/Center-justify text. This is the default value for table headers.</a:documentation>
+ <value>right</value>
+ <a:documentation>Right-flush data/Right-justify text.</a:documentation>
+ <value>justify</value>
+ <a:documentation>Double-justify text.</a:documentation>
+ <value>char</value>
+ <a:documentation>Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="char">
+ <db:refpurpose>This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="charoff">
+ <db:refpurpose>When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute.</db:refpurpose>
+ <choice>
+ <data type="integer"/>
+ <a:documentation>An explicit offset.</a:documentation>
+ <data type="string">
+ <param name="pattern">[0-9]+%</param>
+ </data>
+ <a:documentation>A percentage offset.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.html.cellvalign">
+ <optional>
+ <attribute name="valign">
+ <db:refpurpose>Specifies the vertical position of data within a cell.</db:refpurpose>
+ <choice>
+ <value>top</value>
+ <a:documentation>Cell data is flush with the top of the cell.</a:documentation>
+ <value>middle</value>
+ <a:documentation>Cell data is centered vertically within the cell. This is the default value.</a:documentation>
+ <value>bottom</value>
+ <a:documentation>Cell data is flush with the bottom of the cell.</a:documentation>
+ <value>baseline</value>
+ <a:documentation>All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.html.table.attributes">
+ <interleave>
+ <optional>
+ <attribute name="summary">
+ <db:refpurpose>Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <db:refpurpose>Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent.</db:refpurpose>
+ <choice>
+ <data type="integer"/>
+ <a:documentation>An explicit width.</a:documentation>
+ <data type="string">
+ <param name="pattern">[0-9]+%</param>
+ </data>
+ <a:documentation>A percentage width.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="border">
+ <db:refpurpose>Specifies the width (in pixels only) of the frame around a table.</db:refpurpose>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="frame">
+ <db:refpurpose>Specifies which sides of the frame surrounding a table will be visible.</db:refpurpose>
+ <choice>
+ <value>void</value>
+ <a:documentation>No sides. This is the default value.</a:documentation>
+ <value>above</value>
+ <a:documentation>The top side only.</a:documentation>
+ <value>below</value>
+ <a:documentation>The bottom side only.</a:documentation>
+ <value>hsides</value>
+ <a:documentation>The top and bottom sides only.</a:documentation>
+ <value>lhs</value>
+ <a:documentation>The left-hand side only.</a:documentation>
+ <value>rhs</value>
+ <a:documentation>The right-hand side only.</a:documentation>
+ <value>vsides</value>
+ <a:documentation>The right and left sides only.</a:documentation>
+ <value>box</value>
+ <a:documentation>All four sides.</a:documentation>
+ <value>border</value>
+ <a:documentation>All four sides.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rules">
+ <db:refpurpose>Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.</db:refpurpose>
+ <choice>
+ <value>none</value>
+ <a:documentation>No rules. This is the default value.</a:documentation>
+ <value>groups</value>
+ <a:documentation>Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.</a:documentation>
+ <value>rows</value>
+ <a:documentation>Rules will appear between rows only.</a:documentation>
+ <value>cols</value>
+ <a:documentation>Rules will appear between columns only.</a:documentation>
+ <value>all</value>
+ <a:documentation>Rules will appear between all rows and columns.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cellspacing">
+ <db:refpurpose>Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells.</db:refpurpose>
+ <choice>
+ <data type="integer"/>
+ <a:documentation>An explicit spacing.</a:documentation>
+ <data type="string">
+ <param name="pattern">[0-9]+%</param>
+ </data>
+ <a:documentation>A percentage spacing.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cellpadding">
+ <db:refpurpose>Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space.</db:refpurpose>
+ <choice>
+ <data type="integer"/>
+ <a:documentation>An explicit padding.</a:documentation>
+ <data type="string">
+ <param name="pattern">[0-9]+%</param>
+ </data>
+ <a:documentation>A percentage padding.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.html.tablecell.attributes">
+ <interleave>
+ <optional>
+ <attribute name="abbr">
+ <db:refpurpose>Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="axis">
+ <db:refpurpose>This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="headers">
+ <db:refpurpose>Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets.</db:refpurpose>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scope">
+ <db:refpurpose>Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables.</db:refpurpose>
+ <choice>
+ <value>row</value>
+ <a:documentation>The current cell provides header information for the rest of the row that contains it</a:documentation>
+ <value>col</value>
+ <a:documentation>The current cell provides header information for the rest of the column that contains it.</a:documentation>
+ <value>rowgroup</value>
+ <a:documentation>The header cell provides header information for the rest of the row group that contains it.</a:documentation>
+ <value>colgroup</value>
+ <a:documentation>The header cell provides header information for the rest of the column group that contains it.</a:documentation>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rowspan">
+ <db:refpurpose>Specifies the number of rows spanned by the current cell. The default value of this attribute is one (<db:quote>1</db:quote>
+). The value zero (<db:quote>0</db:quote>
+) means that the cell spans all rows from the current row to the last row of the table section (<db:tag>thead</db:tag>
+, <db:tag>tbody</db:tag>
+, or <db:tag>tfoot</db:tag>
+) in which the cell is defined.</db:refpurpose>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="colspan">
+ <db:refpurpose>Specifies the number of columns spanned by the current cell. The default value of this attribute is one (<db:quote>1</db:quote>
+). The value zero (<db:quote>0</db:quote>
+) means that the cell spans all columns from the current column to the last column of the column group (<db:tag>colgroup</db:tag>
+) in which the cell is defined.</db:refpurpose>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.html.table.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.html.table.model">
+ <optional>
+ <ref name="db.html.table.info"/>
+ </optional>
+ <ref name="db.html.caption"/>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.html.col"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.html.colgroup"/>
+ </zeroOrMore>
+ </choice>
+ <optional>
+ <ref name="db.html.thead"/>
+ </optional>
+ <optional>
+ <ref name="db.html.tfoot"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="db.html.tbody"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.html.tr"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="db.html.informaltable.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.html.informaltable.model">
+ <optional>
+ <ref name="db.html.informaltable.info"/>
+ </optional>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.html.col"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.html.colgroup"/>
+ </zeroOrMore>
+ </choice>
+ <optional>
+ <ref name="db.html.thead"/>
+ </optional>
+ <optional>
+ <ref name="db.html.tfoot"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <ref name="db.html.tbody"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.html.tr"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>table</db:refname>
+ <db:refpurpose>A formal (captioned) HTML table in a document</db:refpurpose>
+ <define name="db.html.table.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.html.table.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.html.table.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.table.attributes"/>
+ <optional>
+ <ref name="db.html.table.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.html.table.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.orient.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.pgwide.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.tabstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.floatstyle.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.html.table">
+ <element name="table">
+ <ref name="db.html.table.attlist"/>
+ <ref name="db.html.table.model"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>informaltable</db:refname>
+ <db:refpurpose>An HTML table without a title</db:refpurpose>
+ <define name="db.html.informaltable.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.table.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.html.informaltable">
+ <element name="informaltable">
+ <ref name="db.html.informaltable.attlist"/>
+ <ref name="db.html.informaltable.model"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>caption</db:refname>
+ <db:refpurpose>An HTML table caption</db:refpurpose>
+ <define name="db.html.caption.attlist">
+ <ref name="db.html.attrs"/>
+ </define>
+ <define name="db.html.caption">
+ <element name="caption">
+ <ref name="db.html.caption.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>col</db:refname>
+ <db:refpurpose>Specifications for a column in an HTML table</db:refpurpose>
+ <define name="db.html.col.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <optional>
+ <attribute name="span">
+ <db:refpurpose>This attribute, whose value must be an integer &gt; 0, specifies the number of columns <db:quote>spanned</db:quote>
+ by the <db:tag>col</db:tag>
+ element; the <db:tag>col</db:tag>
+ element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N &gt; 1, the current <db:tag>col</db:tag>
+ element shares its attributes with the next N-1 columns.</db:refpurpose>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <db:refpurpose>Specifies a default width for each column spanned by the current <db:tag>col</db:tag>
+ element. It has the same meaning as the <db:tag class="attribute">width</db:tag>
+ attribute for the <db:tag>colgroup</db:tag>
+ element and overrides it.</db:refpurpose>
+ </attribute>
+ </optional>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.col">
+ <element name="col">
+ <ref name="db.html.col.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>colgroup</db:refname>
+ <db:refpurpose>A group of columns in an HTML table</db:refpurpose>
+ <define name="db.html.colgroup.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <optional>
+ <attribute name="span">
+ <db:refpurpose>This attribute, which must be an integer &gt; 0, specifies the number of columns in a column group. In the absence of a span attribute, each <db:tag>colgroup</db:tag>
+ defines a column group containing one column. If the span attribute is set to N &gt; 0, the current <db:tag>colgroup</db:tag>
+ element defines a column group containing N columns. User agents must ignore this attribute if the <db:tag>colgroup</db:tag>
+ element contains one or more <db:tag>col</db:tag>
+ elements.</db:refpurpose>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <db:refpurpose>This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form <db:quote>0*</db:quote>
+ (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying <db:quote>0*</db:quote>
+ will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a <db:tag>col</db:tag>
+ element.</db:refpurpose>
+ </attribute>
+ </optional>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.colgroup">
+ <element name="colgroup">
+ <ref name="db.html.colgroup.attlist"/>
+ <zeroOrMore>
+ <ref name="db.html.col"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>thead</db:refname>
+ <db:refpurpose>A table header consisting of one or more rows in an HTML table</db:refpurpose>
+ <define name="db.html.thead.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.thead">
+ <element name="thead">
+ <ref name="db.html.thead.attlist"/>
+ <oneOrMore>
+ <ref name="db.html.tr"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tfoot</db:refname>
+ <db:refpurpose>A table footer consisting of one or more rows in an HTML table</db:refpurpose>
+ <define name="db.html.tfoot.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.tfoot">
+ <element name="tfoot">
+ <ref name="db.html.tfoot.attlist"/>
+ <oneOrMore>
+ <ref name="db.html.tr"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tbody</db:refname>
+ <db:refpurpose>A wrapper for the rows of an HTML table or informal HTML table</db:refpurpose>
+ <define name="db.html.tbody.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.tbody">
+ <element name="tbody">
+ <ref name="db.html.tbody.attlist"/>
+ <oneOrMore>
+ <ref name="db.html.tr"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tr</db:refname>
+ <db:refpurpose>A row in an HTML table</db:refpurpose>
+ <define name="db.html.tr.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.tr">
+ <element name="tr">
+ <ref name="db.html.tr.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.html.th"/>
+ <ref name="db.html.td"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>th</db:refname>
+ <db:refpurpose>A table header entry in an HTML table</db:refpurpose>
+ <define name="db.html.th.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.tablecell.attributes"/>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.th">
+ <element name="th">
+ <ref name="db.html.th.attlist"/>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>td</db:refname>
+ <db:refpurpose>A table entry in an HTML table</db:refpurpose>
+ <define name="db.html.td.attlist">
+ <interleave>
+ <ref name="db.html.attrs"/>
+ <ref name="db.html.tablecell.attributes"/>
+ <ref name="db.html.cellhalign"/>
+ <ref name="db.html.cellvalign"/>
+ </interleave>
+ </define>
+ <define name="db.html.td">
+ <element name="td">
+ <ref name="db.html.td.attlist"/>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/index.rng b/slides/schema/relaxng/index.rng
new file mode 100644
index 0000000..3241fc9
--- /dev/null
+++ b/slides/schema/relaxng/index.rng
@@ -0,0 +1,773 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: index.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start combine="choice">
+ <choice>
+ <ref name="db.setindex"/>
+ <ref name="db.index"/>
+ <ref name="db.indexdiv"/>
+ </choice>
+ </start>
+ <define name="db.ubiq.inlines" combine="choice">
+ <ref name="db.indexterm"/>
+ </define>
+ <define name="db.indexing.inlines" combine="choice">
+ <ref name="db.indexterm"/>
+ </define>
+ <define name="db.nopara.blocks" combine="choice">
+ <ref name="db.indexterm"/>
+ </define>
+ <define name="db.navigation.components" combine="choice">
+ <ref name="db.index"/>
+ </define>
+ <define name="db.setindex.components" combine="choice">
+ <ref name="db.setindex"/>
+ </define>
+ <define name="db.info.elements" combine="choice">
+ <ref name="db.itermset"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.significance.enumeration">
+ <choice>
+ <value>normal</value>
+ <a:documentation>Normal</a:documentation>
+ <value>preferred</value>
+ <a:documentation>Preferred</a:documentation>
+ </choice>
+ </define>
+ <define name="db.significance.attribute">
+ <attribute name="significance">
+ <db:refpurpose>Specifies the significance of the term</db:refpurpose>
+ <ref name="db.significance.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.zone.attribute">
+ <attribute name="zone">
+ <db:refpurpose>Specifies the IDs of the elements to which this term applies</db:refpurpose>
+ <data type="IDREFS"/>
+ </attribute>
+ </define>
+ <define name="db.indexterm.pagenum.attribute">
+ <attribute name="pagenum">
+ <db:refpurpose>Indicates the page on which this index term occurs in some version of the printed document</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.scope.enumeration">
+ <choice>
+ <value>all</value>
+ <a:documentation>All indexes</a:documentation>
+ <value>global</value>
+ <a:documentation>The global index (as for a combined index of a set of books)</a:documentation>
+ <value>local</value>
+ <a:documentation>The local index (the index for this document only)</a:documentation>
+ </choice>
+ </define>
+ <define name="db.scope.attribute">
+ <attribute name="scope">
+ <db:refpurpose>Specifies the scope of the index term</db:refpurpose>
+ <ref name="db.scope.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.sortas.attribute">
+ <attribute name="sortas">
+ <db:refpurpose>Specifies the string by which the term is to be sorted; if unspecified, the term content is used</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.index.type.attribute">
+ <attribute name="type">
+ <db:refpurpose>Specifies the target index for this term</db:refpurpose>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>itermset</db:refname>
+ <db:refpurpose>A set of index terms in the meta-information of a document</db:refpurpose>
+ <define name="db.itermset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.itermset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.itermset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.itermset">
+ <element name="itermset">
+ <ref name="db.itermset.attlist"/>
+ <oneOrMore>
+ <ref name="db.indexterm.singular"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.indexterm.contentmodel">
+ <optional>
+ <ref name="db.primary"/>
+ </optional>
+ <optional>
+ <choice>
+ <group>
+ <ref name="db.secondary"/>
+ <optional>
+ <choice>
+ <group>
+ <ref name="db.tertiary"/>
+ <optional>
+ <choice>
+ <ref name="db.see"/>
+ <oneOrMore>
+ <ref name="db.seealso"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </group>
+ <ref name="db.see"/>
+ <oneOrMore>
+ <ref name="db.seealso"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </group>
+ <ref name="db.see"/>
+ <oneOrMore>
+ <ref name="db.seealso"/>
+ </oneOrMore>
+ </choice>
+ </optional>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>indexterm</db:refname>
+ <db:refpurpose>A wrapper for an indexed term</db:refpurpose>
+ <define name="db.indexterm.singular.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.indexterm.singular.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of index term</db:refpurpose>
+ <value>singular</value>
+ <a:documentation>A singular index term</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.indexterm.singular.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.indexterm.singular.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.significance.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.zone.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.indexterm.pagenum.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.scope.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.index.type.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.indexterm.singular.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.indexterm.singular">
+ <element name="indexterm">
+ <ref name="db.indexterm.singular.attlist"/>
+ <ref name="db.indexterm.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>indexterm</db:refname>
+ <db:refpurpose>A wrapper for an indexed term that covers a range</db:refpurpose>
+ <define name="db.indexterm.startofrange.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.indexterm.startofrange.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of index term</db:refpurpose>
+ <value>startofrange</value>
+ <a:documentation>The start of a range</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.indexterm.startofrange.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.indexterm.startofrange.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.significance.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.zone.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.indexterm.pagenum.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.scope.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.index.type.attribute"/>
+ </optional>
+ <ref name="db.indexterm.startofrange.class.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.indexterm.startofrange">
+ <element name="indexterm">
+ <ref name="db.indexterm.startofrange.attlist"/>
+ <ref name="db.indexterm.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>indexterm</db:refname>
+ <db:refpurpose>Identifies the end of a range associated with an indexed term</db:refpurpose>
+ <define name="db.indexterm.endofrange.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.indexterm.endofrange.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of index term</db:refpurpose>
+ <value>endofrange</value>
+ <a:documentation>The end of a range</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.indexterm.endofrange.startref.attribute">
+ <attribute name="startref">
+ <db:refpurpose>Points to the start of the range</db:refpurpose>
+ <data type="IDREF"/>
+ </attribute>
+ </define>
+ <define name="db.indexterm.endofrange.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.indexterm.endofrange.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.indexterm.endofrange.class.attribute"/>
+ <ref name="db.indexterm.endofrange.startref.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.indexterm.endofrange">
+ <element name="indexterm">
+ <ref name="db.indexterm.endofrange.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>indexterm</db:refname>
+ <db:refpurpose>A wrapper for terms to be indexed</db:refpurpose>
+ <define name="db.indexterm">
+ <choice>
+ <ref name="db.indexterm.singular"/>
+ <ref name="db.indexterm.startofrange"/>
+ <ref name="db.indexterm.endofrange"/>
+ </choice>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>primary</db:refname>
+ <db:refpurpose>The primary word or phrase under which an index term should be sorted</db:refpurpose>
+ <define name="db.primary.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.primary.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.primary.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.sortas.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.primary">
+ <element name="primary">
+ <ref name="db.primary.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>secondary</db:refname>
+ <db:refpurpose>A secondary word or phrase in an index term</db:refpurpose>
+ <define name="db.secondary.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.secondary.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.secondary.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.sortas.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.secondary">
+ <element name="secondary">
+ <ref name="db.secondary.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tertiary</db:refname>
+ <db:refpurpose>A tertiary word or phrase in an index term</db:refpurpose>
+ <define name="db.tertiary.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tertiary.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tertiary.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.sortas.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.tertiary">
+ <element name="tertiary">
+ <ref name="db.tertiary.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>see</db:refname>
+ <db:refpurpose>Part of an index term directing the reader instead to another entry in the index</db:refpurpose>
+ <define name="db.see.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.see.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.see.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.see">
+ <element name="see">
+ <ref name="db.see.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>seealso</db:refname>
+ <db:refpurpose>Part of an index term directing the reader also to another entry in the index</db:refpurpose>
+ <define name="db.seealso.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.seealso.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.seealso.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.seealso">
+ <element name="seealso">
+ <ref name="db.seealso.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>index</db:refname>
+ <db:refpurpose>An index to a book or part of a book</db:refpurpose>
+ <define name="db.index.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.index.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.index.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.index.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.index.status.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.index.type.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.index.info">
+ <ref name="db._info"/>
+ </define>
+ <!--
+ Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
+ Authors can use an empty index to indicate where a generated index should
+ appear.
+ -->
+ <define name="db.index">
+ <element name="index">
+ <ref name="db.index.attlist"/>
+ <ref name="db.index.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.indexdiv"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.indexentry"/>
+ </zeroOrMore>
+ <ref name="db.segmentedlist"/>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>setindex</db:refname>
+ <db:refpurpose>An index to a set of books</db:refpurpose>
+ <define name="db.setindex.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.setindex.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.setindex.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.setindex.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.setindex.status.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.index.type.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.setindex.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.setindex">
+ <element name="setindex">
+ <ref name="db.setindex.attlist"/>
+ <ref name="db.setindex.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <zeroOrMore>
+ <ref name="db.indexdiv"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.indexentry"/>
+ </zeroOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>indexdiv</db:refname>
+ <db:refpurpose>A division in an index</db:refpurpose>
+ <define name="db.indexdiv.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.indexdiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.indexdiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.indexdiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.indexdiv.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.indexdiv.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.indexdiv">
+ <element name="indexdiv">
+ <ref name="db.indexdiv.attlist"/>
+ <ref name="db.indexdiv.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="db.indexentry"/>
+ </oneOrMore>
+ <ref name="db.segmentedlist"/>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>indexentry</db:refname>
+ <db:refpurpose>An entry in an index</db:refpurpose>
+ <define name="db.indexentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.indexentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.indexentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.indexentry">
+ <element name="indexentry">
+ <ref name="db.indexentry.attlist"/>
+ <ref name="db.primaryie"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.seeie"/>
+ <ref name="db.seealsoie"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.secondaryie"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.seeie"/>
+ <ref name="db.seealsoie"/>
+ <ref name="db.tertiaryie"/>
+ </choice>
+ </zeroOrMore>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>primaryie</db:refname>
+ <db:refpurpose>A primary term in an index entry, not in the text</db:refpurpose>
+ <define name="db.primaryie.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.primaryie.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.primaryie.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.linkends.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.primaryie">
+ <element name="primaryie">
+ <ref name="db.primaryie.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>secondaryie</db:refname>
+ <db:refpurpose>A secondary term in an index entry, rather than in the text</db:refpurpose>
+ <define name="db.secondaryie.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.secondaryie.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.secondaryie.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.linkends.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.secondaryie">
+ <element name="secondaryie">
+ <ref name="db.secondaryie.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tertiaryie</db:refname>
+ <db:refpurpose>A tertiary term in an index entry, rather than in the text</db:refpurpose>
+ <define name="db.tertiaryie.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tertiaryie.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tertiaryie.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.linkends.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.tertiaryie">
+ <element name="tertiaryie">
+ <ref name="db.tertiaryie.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>seeie</db:refname>
+ <db:refpurpose>A <db:quote>See</db:quote>
+entry in an index, rather than in the text</db:refpurpose>
+ <define name="db.seeie.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.seeie.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.seeie.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.linkend.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.seeie">
+ <element name="seeie">
+ <ref name="db.seeie.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>seealsoie</db:refname>
+ <db:refpurpose>A <db:quote>See also</db:quote>
+ entry in an index, rather than in the text</db:refpurpose>
+ <define name="db.seealsoie.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.seealsoie.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.seealsoie.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.linkends.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.seealsoie">
+ <element name="seealsoie">
+ <ref name="db.seealsoie.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/keyboard.rng b/slides/schema/relaxng/keyboard.rng
new file mode 100644
index 0000000..06c264e
--- /dev/null
+++ b/slides/schema/relaxng/keyboard.rng
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.keyboard.inlines"/>
+ </define>
+ <define name="db.userinput.inlines" combine="choice">
+ <ref name="db.keyboard.inlines"/>
+ </define>
+ <define name="db.keyboard.inlines">
+ <choice>
+ <ref name="db.keycombo"/>
+ <ref name="db.keycap"/>
+ <ref name="db.keycode"/>
+ <ref name="db.keysym"/>
+ <ref name="db.shortcut"/>
+ <ref name="db.accel"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>keycap</db:refname>
+ <db:refpurpose>The text printed on a key on a keyboard</db:refpurpose>
+ <ctrl:other-attribute name="db.keycap.function.attrib" enum-name="db.keycap.function-enum.attribute" other-name="db.keycap.function-other.attributes"/>
+ <define name="db.keycap.function.enumeration">
+ <choice>
+ <value>alt</value>
+ <a:documentation>The "Alt" key</a:documentation>
+ <value>backspace</value>
+ <a:documentation>The "Backspace" key</a:documentation>
+ <value>command</value>
+ <a:documentation>The "Command" key</a:documentation>
+ <value>control</value>
+ <a:documentation>The "Control" key</a:documentation>
+ <value>delete</value>
+ <a:documentation>The "Delete" key</a:documentation>
+ <value>down</value>
+ <a:documentation>The down arrow</a:documentation>
+ <value>end</value>
+ <a:documentation>The "End" key</a:documentation>
+ <value>enter</value>
+ <a:documentation>The "Enter" or "Return" key</a:documentation>
+ <value>escape</value>
+ <a:documentation>The "Escape" key</a:documentation>
+ <value>home</value>
+ <a:documentation>The "Home" key</a:documentation>
+ <value>insert</value>
+ <a:documentation>The "Insert" key</a:documentation>
+ <value>left</value>
+ <a:documentation>The left arrow</a:documentation>
+ <value>meta</value>
+ <a:documentation>The "Meta" key</a:documentation>
+ <value>option</value>
+ <a:documentation>The "Option" key</a:documentation>
+ <value>pagedown</value>
+ <a:documentation>The page down key</a:documentation>
+ <value>pageup</value>
+ <a:documentation>The page up key</a:documentation>
+ <value>right</value>
+ <a:documentation>The right arrow</a:documentation>
+ <value>shift</value>
+ <a:documentation>The "Shift" key</a:documentation>
+ <value>space</value>
+ <a:documentation>The spacebar</a:documentation>
+ <value>tab</value>
+ <a:documentation>The "Tab" key</a:documentation>
+ <value>up</value>
+ <a:documentation>The up arrow</a:documentation>
+ </choice>
+ </define>
+ <define name="db.keycap.function-enum.attribute">
+ <optional>
+ <attribute name="function">
+ <db:refpurpose>Identifies the function key</db:refpurpose>
+ <ref name="db.keycap.function.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.keycap.function-other.attributes">
+ <optional>
+ <attribute name="function">
+ <db:refpurpose>Identifies the function key</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Indicates a non-standard function key</a:documentation>
+ </attribute>
+ </optional>
+ <attribute name="otherfunction">
+ <db:refpurpose>Specifies a keyword that identifies the non-standard key</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.keycap.function.attrib">
+ <choice>
+ <ref name="db.keycap.function-enum.attribute"/>
+ <ref name="db.keycap.function-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.keycap.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.keycap.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.keycap.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.keycap.function.attrib"/>
+ </interleave>
+ </define>
+ <define name="db.keycap">
+ <element name="keycap">
+ <ref name="db.keycap.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>keycode</db:refname>
+ <db:refpurpose>The internal, frequently numeric, identifier for a key on a keyboard</db:refpurpose>
+ <define name="db.keycode.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.keycode.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.keycode.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.keycode">
+ <element name="keycode">
+ <ref name="db.keycode.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.keycombination.contentmodel">
+ <choice>
+ <ref name="db.keycap"/>
+ <ref name="db.keycombo"/>
+ <ref name="db.keysym"/>
+ </choice>
+ </define>
+ <div>
+ <db:refname>keycombo</db:refname>
+ <db:refpurpose>A combination of input actions</db:refpurpose>
+ <ctrl:other-attribute name="db.keycombo.action.attrib" enum-name="db.keycombo.action-enum.attribute" other-name="db.keycombo.action-other.attributes"/>
+ <define name="db.keycombo.action.enumeration">
+ <choice>
+ <value>click</value>
+ <a:documentation>A (single) mouse click.</a:documentation>
+ <value>double-click</value>
+ <a:documentation>A double mouse click.</a:documentation>
+ <value>press</value>
+ <a:documentation>A mouse or key press.</a:documentation>
+ <value>seq</value>
+ <a:documentation>Sequential clicks or presses.</a:documentation>
+ <value>simul</value>
+ <a:documentation>Simultaneous clicks or presses.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.keycombo.action-enum.attribute">
+ <optional>
+ <attribute name="action">
+ <db:refpurpose>Identifies the nature of the action taken. If <db:tag>keycombo</db:tag>
+ contains more than one element, <db:tag class="attvalue">simul</db:tag>
+ is the default, otherwise there is no default.</db:refpurpose>
+ <ref name="db.keycombo.action.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.keycombo.action-other.attributes">
+ <optional>
+ <attribute name="action">
+ <db:refpurpose>Identifies the nature of the action taken</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Indicates a non-standard action</a:documentation>
+ </attribute>
+ </optional>
+ <attribute name="otheraction">
+ <db:refpurpose>Identifies the non-standard action in some unspecified way.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.keycombo.action.attrib">
+ <choice>
+ <ref name="db.keycombo.action-enum.attribute"/>
+ <ref name="db.keycombo.action-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.keycombo.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.keycombo.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.keycombo.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.keycombo.action.attrib"/>
+ </interleave>
+ </define>
+ <define name="db.keycombo">
+ <element name="keycombo">
+ <ref name="db.keycombo.attlist"/>
+ <oneOrMore>
+ <ref name="db.keycombination.contentmodel"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>keysym</db:refname>
+ <db:refpurpose>The symbolic name of a key on a keyboard</db:refpurpose>
+ <define name="db.keysym.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.keysym.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.keysym.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.keysym">
+ <element name="keysym">
+ <ref name="db.keysym.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>accel</db:refname>
+ <db:refpurpose>A graphical user interface (GUI) keyboard shortcut</db:refpurpose>
+ <define name="db.accel.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.accel.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.accel.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.accel">
+ <element name="accel">
+ <ref name="db.accel.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>shortcut</db:refname>
+ <db:refpurpose>A key combination for an action that is also accessible through a menu</db:refpurpose>
+ <define name="db.shortcut.action.attrib">
+ <ref name="db.keycombo.action.attrib"/>
+ </define>
+ <define name="db.shortcut.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.shortcut.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.shortcut.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.shortcut.action.attrib"/>
+ </interleave>
+ </define>
+ <define name="db.shortcut">
+ <element name="shortcut">
+ <ref name="db.shortcut.attlist"/>
+ <oneOrMore>
+ <ref name="db.keycombination.contentmodel"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/markup.rng b/slides/schema/relaxng/markup.rng
new file mode 100644
index 0000000..7fd9761
--- /dev/null
+++ b/slides/schema/relaxng/markup.rng
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.markup.inlines"/>
+ </define>
+ <define name="db.userinput.inlines" combine="choice">
+ <ref name="db.markup.inlines"/>
+ </define>
+ <define name="db.computeroutput.inlines" combine="choice">
+ <ref name="db.markup.inlines"/>
+ </define>
+ <define name="db.markup.inlines">
+ <choice>
+ <ref name="db.tag"/>
+ <ref name="db.markup"/>
+ <ref name="db.token"/>
+ <ref name="db.symbol"/>
+ <ref name="db.literal"/>
+ <ref name="db.code"/>
+ <ref name="db.constant"/>
+ <ref name="db.email"/>
+ <ref name="db.uri"/>
+ </choice>
+ </define>
+ <define name="db.initializer.inlines" combine="choice">
+ <ref name="db.markup.inlines"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>markup</db:refname>
+ <db:refpurpose>A string of formatting markup in text that is to be represented literally</db:refpurpose>
+ <define name="db.markup.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.markup.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.markup.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.markup">
+ <element name="markup">
+ <ref name="db.markup.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tag</db:refname>
+ <db:refpurpose>A component of XML (or SGML) markup</db:refpurpose>
+ <define name="db.tag.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tag.class.enumeration">
+ <choice>
+ <value>attribute</value>
+ <a:documentation>An attribute</a:documentation>
+ <value>attvalue</value>
+ <a:documentation>An attribute value</a:documentation>
+ <value>element</value>
+ <a:documentation>An element</a:documentation>
+ <value>emptytag</value>
+ <a:documentation>An empty element tag</a:documentation>
+ <value>endtag</value>
+ <a:documentation>An end tag</a:documentation>
+ <value>genentity</value>
+ <a:documentation>A general entity</a:documentation>
+ <value>localname</value>
+ <a:documentation>The local name part of a qualified name</a:documentation>
+ <value>namespace</value>
+ <a:documentation>A namespace</a:documentation>
+ <value>numcharref</value>
+ <a:documentation>A numeric character reference</a:documentation>
+ <value>paramentity</value>
+ <a:documentation>A parameter entity</a:documentation>
+ <value>pi</value>
+ <a:documentation>A processing instruction</a:documentation>
+ <value>prefix</value>
+ <a:documentation>The prefix part of a qualified name</a:documentation>
+ <value>comment</value>
+ <a:documentation>An SGML comment</a:documentation>
+ <value>starttag</value>
+ <a:documentation>A start tag</a:documentation>
+ <value>xmlpi</value>
+ <a:documentation>An XML processing instruction</a:documentation>
+ </choice>
+ </define>
+ <define name="db.tag.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the nature of the tag content</db:refpurpose>
+ <ref name="db.tag.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.tag.namespace.attribute">
+ <attribute name="namespace">
+ <db:refpurpose>Identifies the namespace of the tag content</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.tag.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tag.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.tag.class.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.tag.namespace.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.tag">
+ <element name="tag">
+ <ref name="db.tag.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>symbol</db:refname>
+ <db:refpurpose>A name that is replaced by a value before processing</db:refpurpose>
+ <define name="db.symbol.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of symbol</db:refpurpose>
+ <value>limit</value>
+ <a:documentation>The value is a limit of some kind</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.symbol.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.symbol.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.symbol.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.symbol.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.symbol">
+ <element name="symbol">
+ <ref name="db.symbol.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>token</db:refname>
+ <db:refpurpose>A unit of information</db:refpurpose>
+ <define name="db.token.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.token.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.token.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.token">
+ <element name="token">
+ <ref name="db.token.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>literal</db:refname>
+ <db:refpurpose>Inline text that is some literal value</db:refpurpose>
+ <define name="db.literal.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.literal.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.literal.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.literal">
+ <element name="literal">
+ <ref name="db.literal.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>code</db:refname>
+ <db:refpurpose>An inline code fragment</db:refpurpose>
+ <define name="code.language.attribute">
+ <attribute name="language">
+ <db:refpurpose>Identifies the (computer) language of the code fragment</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.code.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.code.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.code.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="code.language.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.code">
+ <element name="code">
+ <ref name="db.code.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.programming.inlines"/>
+ <ref name="db._text"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>constant</db:refname>
+ <db:refpurpose>A programming or system constant</db:refpurpose>
+ <define name="db.constant.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of constant</db:refpurpose>
+ <value>limit</value>
+ <a:documentation>The value is a limit of some kind</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.constant.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.constant.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.constant.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.constant.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.constant">
+ <element name="constant">
+ <ref name="db.constant.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/math.rng b/slides/schema/relaxng/math.rng
new file mode 100644
index 0000000..89d919a
--- /dev/null
+++ b/slides/schema/relaxng/math.rng
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: math.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.equation"/>
+ <ref name="db.informalequation"/>
+ </choice>
+ </start>
+ <define name="db.formal.blocks" combine="choice">
+ <ref name="db.equation"/>
+ </define>
+ <define name="db.informal.blocks" combine="choice">
+ <ref name="db.informalequation"/>
+ </define>
+ <define name="db.math.inlines">
+ <ref name="db.inlineequation"/>
+ </define>
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.math.inlines"/>
+ </define>
+ <define name="db.initializer.inlines" combine="choice">
+ <ref name="db.mathphrase"/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.equation.content">
+ <choice>
+ <oneOrMore>
+ <ref name="db.mediaobject"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.mathphrase"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <define name="db.inlineequation.content">
+ <choice>
+ <oneOrMore>
+ <ref name="db.inlinemediaobject"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.mathphrase"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>equation</db:refname>
+ <db:refpurpose>A displayed mathematical equation</db:refpurpose>
+ <define name="db.equation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.equation.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.equation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.equation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.equation.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.pgwide.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.floatstyle.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.equation.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.equation">
+ <element name="equation">
+ <ref name="db.equation.attlist"/>
+ <ref name="db.equation.info"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <ref name="db.equation.content"/>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>informalequation</db:refname>
+ <db:refpurpose>A displayed mathematical equation without a title</db:refpurpose>
+ <define name="db.informalequation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.informalequation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.informalequation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.informalequation.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.informalequation">
+ <element name="informalequation">
+ <ref name="db.informalequation.attlist"/>
+ <ref name="db.informalequation.info"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <ref name="db.equation.content"/>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>inlineequation</db:refname>
+ <db:refpurpose>A mathematical equation or expression occurring inline</db:refpurpose>
+ <define name="db.inlineequation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.inlineequation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.inlineequation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.inlineequation">
+ <element name="inlineequation">
+ <ref name="db.inlineequation.attlist"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <ref name="db.inlineequation.content"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>mathphrase</db:refname>
+ <db:refpurpose>A mathematical phrase that can be represented with ordinary text and a small amount of markup</db:refpurpose>
+ <define name="db.mathphrase.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.mathphrase.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.mathphrase.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.mathphrase">
+ <element name="mathphrase">
+ <ref name="db.mathphrase.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.ubiq.inlines"/>
+ <ref name="db._emphasis"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/mathml.rng b/slides/schema/relaxng/mathml.rng
new file mode 100644
index 0000000..f787725
--- /dev/null
+++ b/slides/schema/relaxng/mathml.rng
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: mathml.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="db.equation.content" combine="choice">
+ <oneOrMore>
+ <ref name="db._any.mml"/>
+ </oneOrMore>
+ </define>
+ <define name="db.inlineequation.content" combine="choice">
+ <oneOrMore>
+ <ref name="db._any.mml"/>
+ </oneOrMore>
+ </define>
+ <define name="db.imageobject.content" combine="choice">
+ <ref name="db.imagedata.mathml"/>
+ </define>
+ <!-- ============================================================ -->
+ <div>
+ <db:refname>imagedata</db:refname>
+ <db:refpurpose>A MathML expression in a media object</db:refpurpose>
+ <define name="db.imagedata.mathml.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.imagedata.mathml.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.imagedata.mathml.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <attribute name="format">
+ <db:refpurpose>Specifies that the format of the data is MathML</db:refpurpose>
+ <value>mathml</value>
+ <a:documentation>Specifies MathML.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.align.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.valign.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.width.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.contentwidth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.scalefit.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.scale.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.depth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.contentdepth.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.imagedata.mathml.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.imagedata.mathml">
+ <element name="imagedata">
+ <ref name="db.imagedata.mathml.attlist"/>
+ <ref name="db.imagedata.mathml.info"/>
+ <oneOrMore>
+ <ref name="db._any.mml"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ============================================================ -->
+ <div>
+ <db:refname>mml:*</db:refname>
+ <db:refpurpose>Any element from the MathML namespace</db:refpurpose>
+ <define name="db._any.mml">
+ <element>
+ <nsName ns="http://www.w3.org/1998/Math/MathML"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._any.attribute"/>
+ <text/>
+ <ref name="db._any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/msgset.rng b/slides/schema/relaxng/msgset.rng
new file mode 100644
index 0000000..ad1fe33
--- /dev/null
+++ b/slides/schema/relaxng/msgset.rng
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: msgset.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.msg"/>
+ <ref name="db.msgexplan"/>
+ <ref name="db.msgmain"/>
+ <ref name="db.msgrel"/>
+ <ref name="db.msgset"/>
+ <ref name="db.msgsub"/>
+ </choice>
+ </start>
+ <define name="db.technical.blocks" combine="choice">
+ <ref name="db.msgset"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgset</db:refname>
+ <db:refpurpose>A detailed set of messages, usually error messages</db:refpurpose>
+ <define name="db.msgset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgset.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.msgset">
+ <element name="msgset">
+ <ref name="db.msgset.attlist"/>
+ <ref name="db.msgset.info"/>
+ <choice>
+ <oneOrMore>
+ <ref name="db.msgentry"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.simplemsgentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgentry</db:refname>
+ <db:refpurpose>A wrapper for an entry in a message set</db:refpurpose>
+ <define name="db.msgentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgentry">
+ <element name="msgentry">
+ <ref name="db.msgentry.attlist"/>
+ <oneOrMore>
+ <ref name="db.msg"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.msginfo"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.msgexplan"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>simplemsgentry</db:refname>
+ <db:refpurpose>A wrapper for a simpler entry in a message set</db:refpurpose>
+ <define name="db.simplemsgentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.simplemsgentry.msgaud.attribute">
+ <attribute name="msgaud">
+ <db:refpurpose>The audience to which the message relevant</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.simplemsgentry.msgorig.attribute">
+ <attribute name="msgorig">
+ <db:refpurpose>The origin of the message</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.simplemsgentry.msglevel.attribute">
+ <attribute name="msglevel">
+ <db:refpurpose>The level of importance or severity of a message</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.simplemsgentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.simplemsgentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.simplemsgentry.msgaud.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.simplemsgentry.msgorig.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.simplemsgentry.msglevel.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.simplemsgentry">
+ <element name="simplemsgentry">
+ <ref name="db.simplemsgentry.attlist"/>
+ <ref name="db.msgtext"/>
+ <oneOrMore>
+ <ref name="db.msgexplan"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msg</db:refname>
+ <db:refpurpose>A message in a message set</db:refpurpose>
+ <define name="db.msg.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msg.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msg.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msg.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.msg">
+ <element name="msg">
+ <ref name="db.msg.attlist"/>
+ <ref name="db.msg.info"/>
+ <ref name="db.msgmain"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.msgsub"/>
+ <ref name="db.msgrel"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgmain</db:refname>
+ <db:refpurpose>The primary component of a message in a message set </db:refpurpose>
+ <define name="db.msgmain.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgmain.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgmain.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgmain.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.msgmain">
+ <element name="msgmain">
+ <ref name="db.msgmain.attlist"/>
+ <ref name="db.msgmain.info"/>
+ <ref name="db.msgtext"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgsub</db:refname>
+ <db:refpurpose>A subcomponent of a message in a message set</db:refpurpose>
+ <define name="db.msgsub.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgsub.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgsub.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgsub.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.msgsub">
+ <element name="msgsub">
+ <ref name="db.msgsub.attlist"/>
+ <ref name="db.msgsub.info"/>
+ <ref name="db.msgtext"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgrel</db:refname>
+ <db:refpurpose>A related component of a message in a message set</db:refpurpose>
+ <define name="db.msgrel.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgrel.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgrel.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgrel.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.msgrel">
+ <element name="msgrel">
+ <ref name="db.msgrel.attlist"/>
+ <ref name="db.msgrel.info"/>
+ <ref name="db.msgtext"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgtext</db:refname>
+ <db:refpurpose>The actual text of a message component in a message set</db:refpurpose>
+ <define name="db.msgtext.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgtext.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgtext.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgtext">
+ <element name="msgtext">
+ <ref name="db.msgtext.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msginfo</db:refname>
+ <db:refpurpose>Information about a message in a message set</db:refpurpose>
+ <define name="db.msginfo.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msginfo.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msginfo.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msginfo">
+ <element name="msginfo">
+ <ref name="db.msginfo.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.msglevel"/>
+ <ref name="db.msgorig"/>
+ <ref name="db.msgaud"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msglevel</db:refname>
+ <db:refpurpose>The level of importance or severity of a message in a message set</db:refpurpose>
+ <define name="db.msglevel.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msglevel.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msglevel.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msglevel">
+ <element name="msglevel">
+ <ref name="db.msglevel.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgorig</db:refname>
+ <db:refpurpose>The origin of a message in a message set</db:refpurpose>
+ <define name="db.msgorig.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgorig.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgorig.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgorig">
+ <element name="msgorig">
+ <ref name="db.msgorig.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgaud</db:refname>
+ <db:refpurpose>The audience to which a message in a message set is relevant</db:refpurpose>
+ <define name="db.msgaud.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgaud.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgaud.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgaud">
+ <element name="msgaud">
+ <ref name="db.msgaud.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>msgexplan</db:refname>
+ <db:refpurpose>Explanatory material relating to a message in a message set</db:refpurpose>
+ <define name="db.msgexplan.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.msgexplan.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.msgexplan.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.msgexplan.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.msgexplan">
+ <element name="msgexplan">
+ <ref name="db.msgexplan.attlist"/>
+ <ref name="db.msgexplan.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/os.rng b/slides/schema/relaxng/os.rng
new file mode 100644
index 0000000..c53a8db
--- /dev/null
+++ b/slides/schema/relaxng/os.rng
@@ -0,0 +1,513 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <ref name="db.cmdsynopsis"/>
+ </start>
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.os.inlines"/>
+ </define>
+ <define name="db.synopsis.blocks" combine="choice">
+ <ref name="db.cmdsynopsis"/>
+ </define>
+ <define name="db.os.inlines">
+ <choice>
+ <ref name="db.prompt"/>
+ <ref name="db.envar"/>
+ <ref name="db.filename"/>
+ <ref name="db.command"/>
+ <ref name="db.computeroutput"/>
+ <ref name="db.userinput"/>
+ </choice>
+ </define>
+ <define name="db.computeroutput.inlines">
+ <choice>
+ <text/>
+ <ref name="db.ubiq.inlines"/>
+ <ref name="db.os.inlines"/>
+ <ref name="db.technical.inlines"/>
+ </choice>
+ </define>
+ <define name="db.userinput.inlines">
+ <choice>
+ <text/>
+ <ref name="db.ubiq.inlines"/>
+ <ref name="db.os.inlines"/>
+ <ref name="db.technical.inlines"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.prompt.inlines">
+ <ref name="db._text"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>prompt</db:refname>
+ <db:refpurpose>A character or string indicating the start of an input field in a computer display</db:refpurpose>
+ <define name="db.prompt.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.prompt.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.prompt.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.prompt">
+ <element name="prompt">
+ <ref name="db.prompt.attlist"/>
+ <zeroOrMore>
+ <ref name="db.prompt.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>envar</db:refname>
+ <db:refpurpose>A software environment variable</db:refpurpose>
+ <define name="db.envar.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.envar.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.envar.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.envar">
+ <element name="envar">
+ <ref name="db.envar.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>filename</db:refname>
+ <db:refpurpose>The name of a file</db:refpurpose>
+ <define name="db.filename.class.enumeration">
+ <choice>
+ <value>devicefile</value>
+ <a:documentation>A device</a:documentation>
+ <value>directory</value>
+ <a:documentation>A directory</a:documentation>
+ <value>extension</value>
+ <a:documentation>A filename extension</a:documentation>
+ <value>headerfile</value>
+ <a:documentation>A header file (as for a programming language)</a:documentation>
+ <value>libraryfile</value>
+ <a:documentation>A library file</a:documentation>
+ <value>partition</value>
+ <a:documentation>A partition (as of a hard disk)</a:documentation>
+ <value>symlink</value>
+ <a:documentation>A symbolic link</a:documentation>
+ </choice>
+ </define>
+ <define name="db.filename.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of filename</db:refpurpose>
+ <ref name="db.filename.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.filename.path.attribute">
+ <attribute name="path">
+ <db:refpurpose>Specifies the path of the filename</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.filename.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.filename.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.filename.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.filename.path.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.filename.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.filename">
+ <element name="filename">
+ <ref name="db.filename.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>command</db:refname>
+ <db:refpurpose>The name of an executable program or other software command</db:refpurpose>
+ <define name="db.command.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.command.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.command.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.command">
+ <element name="command">
+ <ref name="db.command.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>computeroutput</db:refname>
+ <db:refpurpose>Data, generally text, displayed or presented by a computer</db:refpurpose>
+ <define name="db.computeroutput.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.computeroutput.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.computeroutput.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.computeroutput">
+ <element name="computeroutput">
+ <ref name="db.computeroutput.attlist"/>
+ <zeroOrMore>
+ <ref name="db.computeroutput.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>userinput</db:refname>
+ <db:refpurpose>Data entered by the user</db:refpurpose>
+ <define name="db.userinput.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.userinput.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.userinput.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.userinput">
+ <element name="userinput">
+ <ref name="db.userinput.attlist"/>
+ <zeroOrMore>
+ <ref name="db.userinput.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>cmdsynopsis</db:refname>
+ <db:refpurpose>A syntax summary for a software command</db:refpurpose>
+ <define name="db.cmdsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cmdsynopsis.sepchar.attribute">
+ <attribute name="sepchar">
+ <db:refpurpose>Specifies the character that should separate the command and its top-level arguments</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.cmdsynopsis.cmdlength.attribute">
+ <attribute name="cmdlength">
+ <db:refpurpose>Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.cmdsynopsis.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.cmdsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cmdsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.cmdsynopsis.sepchar.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.cmdsynopsis.cmdlength.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.cmdsynopsis.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.cmdsynopsis.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.cmdsynopsis">
+ <element name="cmdsynopsis">
+ <ref name="db.cmdsynopsis.attlist"/>
+ <ref name="db.cmdsynopsis.info"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.command"/>
+ <ref name="db.arg"/>
+ <ref name="db.group"/>
+ <ref name="db.sbr"/>
+ </choice>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.synopfragment"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.rep.enumeration">
+ <choice>
+ <value>norepeat</value>
+ <a:documentation>Can not be repeated.</a:documentation>
+ <value>repeat</value>
+ <a:documentation>Can be repeated.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.rep.attribute">
+ <attribute name="rep" a:defaultValue="norepeat">
+ <db:refpurpose>Indicates whether or not repetition is possible.</db:refpurpose>
+ <ref name="db.rep.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.choice.enumeration">
+ <choice>
+ <value>opt</value>
+ <a:documentation>Formatted to indicate that it is optional.</a:documentation>
+ <value>plain</value>
+ <a:documentation>Formatted without indication.</a:documentation>
+ <value>req</value>
+ <a:documentation>Formatted to indicate that it is required.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.choice.opt.attribute">
+ <attribute name="choice" a:defaultValue="opt">
+ <db:refpurpose>Indicates optionality.</db:refpurpose>
+ <ref name="db.choice.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.choice.req.attribute">
+ <attribute name="choice" a:defaultValue="req">
+ <db:refpurpose>Indicates optionality.</db:refpurpose>
+ <ref name="db.choice.enumeration"/>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>arg</db:refname>
+ <db:refpurpose>An argument in a cmdsynopsis</db:refpurpose>
+ <define name="db.arg.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.arg.rep.attribute">
+ <ref name="db.rep.attribute"/>
+ </define>
+ <define name="db.arg.choice.attribute">
+ <ref name="db.choice.opt.attribute"/>
+ </define>
+ <define name="db.arg.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.arg.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.arg.rep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.arg.choice.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.arg">
+ <element name="arg">
+ <ref name="db.arg.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.arg"/>
+ <ref name="db.group"/>
+ <ref name="db.option"/>
+ <ref name="db.synopfragmentref"/>
+ <ref name="db.sbr"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>group</db:refname>
+ <db:refpurpose>A group of elements in a cmdsynopsis</db:refpurpose>
+ <define name="db.group.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.group.rep.attribute">
+ <ref name="db.rep.attribute"/>
+ </define>
+ <define name="db.group.choice.attribute">
+ <ref name="db.choice.opt.attribute"/>
+ </define>
+ <define name="db.group.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.group.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.group.rep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.group.choice.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.group">
+ <element name="group">
+ <ref name="db.group.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.arg"/>
+ <ref name="db.group"/>
+ <ref name="db.option"/>
+ <ref name="db.synopfragmentref"/>
+ <ref name="db.replaceable"/>
+ <ref name="db.sbr"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>sbr</db:refname>
+ <db:refpurpose>An explicit line break in a command synopsis</db:refpurpose>
+ <define name="db.sbr.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sbr.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sbr.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.sbr">
+ <element name="sbr">
+ <ref name="db.sbr.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>synopfragment</db:refname>
+ <db:refpurpose>A portion of a cmdsynopsis broken out from the main body of the synopsis</db:refpurpose>
+ <define name="db.synopfragment.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.synopfragment.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.synopfragment.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.synopfragment">
+ <element name="synopfragment">
+ <ref name="db.synopfragment.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.arg"/>
+ <ref name="db.group"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>synopfragmentref</db:refname>
+ <db:refpurpose>A reference to a fragment of a command synopsis</db:refpurpose>
+ <define name="db.synopfragmentref.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.synopfragmentref.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.synopfragmentref.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.linkend.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.synopfragmentref">
+ <element name="synopfragmentref">
+ <s:pattern name="Synopsis fragment type constraint">
+ <s:rule context="db:synopfragmentref">
+ <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on synopfragmentref must point to a synopfragment.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.synopfragmentref.attlist"/>
+ <text/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/pool.rng b/slides/schema/relaxng/pool.rng
new file mode 100644
index 0000000..691cfe6
--- /dev/null
+++ b/slides/schema/relaxng/pool.rng
@@ -0,0 +1,6084 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns:dbx="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- ====================================================================== -->
+ <!--
+ The start tokens are somewhat arbitrary. To resolve RFE #1899655, the
+ TC concluded that anything with an info element was a reasonable start
+ element. That's mostly what has been done, with a few extra elements
+ where the patterns seemed to warrant it. If you need more, just ask.
+ -->
+ <start combine="choice">
+ <choice>
+ <ref name="db.abstract"/>
+ <ref name="db.mediaobject.content"/>
+ <ref name="db.audiodata"/>
+ <ref name="db.imagedata"/>
+ <ref name="db.textdata"/>
+ <ref name="db.videodata"/>
+ <ref name="db.caption"/>
+ <ref name="db.publishing.blocks"/>
+ <ref name="db.formal.blocks"/>
+ <ref name="db.informal.blocks"/>
+ <ref name="db.formalpara"/>
+ <ref name="db.inlinemediaobject"/>
+ <ref name="db.list.blocks"/>
+ <ref name="db.legalnotice"/>
+ <ref name="db.verbatim.blocks"/>
+ <ref name="db.graphic.blocks"/>
+ <ref name="db.personblurb"/>
+ <ref name="db.revhistory"/>
+ <ref name="db.simpara"/>
+ <ref name="db.step"/>
+ <ref name="db.stepalternatives"/>
+ </choice>
+ </start>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>*:*</db:refname>
+ <db:refpurpose>Any element from almost any namespace</db:refpurpose>
+ <define name="db._any.attribute">
+ <attribute>
+ <db:refpurpose>Any attribute, including any attribute in any namespace.</db:refpurpose>
+ <anyName/>
+ </attribute>
+ </define>
+ <define name="db._any">
+ <element>
+ <anyName>
+ <except>
+ <nsName/>
+ <nsName ns="http://www.w3.org/1999/xhtml"/>
+ </except>
+ </anyName>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._any.attribute"/>
+ <text/>
+ <ref name="db._any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.arch.attribute">
+ <attribute name="arch">
+ <db:refpurpose>Designates the computer or chip architecture to which the element applies</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.audience.attribute">
+ <attribute name="audience">
+ <db:refpurpose>Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.condition.attribute">
+ <attribute name="condition">
+ <db:refpurpose>provides a standard place for application-specific effectivity</db:refpurpose>
+ <dbx:description>
+ <db:para>Many DocBook users observed that in order to add an effectivity condition that was unique to their environment required <db:quote>abusing</db:quote>
+ the semantics of one of the existing attributes, or adding their own, making their customization an extension rather than a subset. The<db:tag class="attribute">condition</db:tag>
+ attribute is a general-purpose effectivity attribute with no specified semantics.</db:para>
+ <db:para>The<db:tag class="attribute">condition</db:tag>
+ attribute provides a standard place for application-specific effectivity.</db:para>
+ </dbx:description>
+ </attribute>
+ </define>
+ <define name="db.conformance.attribute">
+ <attribute name="conformance">
+ <db:refpurpose>Indicates standards conformance characteristics of the element</db:refpurpose>
+ <dbx:description>
+ <db:para>These characteristics are application-specific; DocBook provides no default semantics.</db:para>
+ </dbx:description>
+ </attribute>
+ </define>
+ <define name="db.os.attribute">
+ <attribute name="os">
+ <db:refpurpose>Indicates the operating system to which the element is applicable</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.revision.attribute">
+ <attribute name="revision">
+ <db:refpurpose>Indicates the editorial revision to which the element belongs</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.security.attribute">
+ <attribute name="security">
+ <db:refpurpose>Indicates something about the security level associated with the element to which it applies</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.userlevel.attribute">
+ <attribute name="userlevel">
+ <db:refpurpose>Indicates the level of user experience for which the element applies</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.vendor.attribute">
+ <attribute name="vendor">
+ <db:refpurpose>Indicates the computer vendor to which the element applies.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.wordsize.attribute">
+ <attribute name="wordsize">
+ <db:refpurpose>Indicates the word size (width in bits) of the computer architecture to which the element applies</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.effectivity.attributes">
+ <interleave>
+ <optional>
+ <ref name="db.arch.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.audience.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.condition.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.conformance.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.os.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.revision.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.security.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.userlevel.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.vendor.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.wordsize.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.endterm.attribute">
+ <attribute name="endterm">
+ <db:refpurpose>Points to the element whose content is to be used as the text of the link</db:refpurpose>
+ <data type="IDREF"/>
+ </attribute>
+ </define>
+ <define name="db.linkend.attribute">
+ <attribute name="linkend">
+ <db:refpurpose>Points to an internal link target by identifying the value of its xml:id attribute</db:refpurpose>
+ <data type="IDREF"/>
+ </attribute>
+ </define>
+ <define name="db.linkends.attribute">
+ <attribute name="linkends">
+ <db:refpurpose>Points to one or more internal link targets by identifying the value of their xml:id attributes</db:refpurpose>
+ <data type="IDREFS"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.href.attribute">
+ <attribute name="xlink:href">
+ <db:refpurpose>Identifies a link target with a URI</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.type.attribute">
+ <attribute name="xlink:type">
+ <db:refpurpose>Identifies the XLink link type</db:refpurpose>
+ <value>simple</value>
+ <a:documentation>An XLink simple link</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.xlink.role.attribute">
+ <attribute name="xlink:role">
+ <db:refpurpose>Identifies the XLink role of the link</db:refpurpose>
+ <dbx:description>
+ <db:para>DocBook uses the XLink role value <db:uri>http://docbook.org/xlink/role/olink</db:uri>
+ to identify linking elements with OLink semantics. That means the part of <db:tag class="attribute">xlink:href</db:tag>
+ before the number sign (#) is to be interpreted as equivalent to the olink <db:tag class="attribute">targetdoc</db:tag>
+ attribute value, and the part after the number sign as the olink <db:tag class="attribute">targetptr</db:tag>
+ attribute value.</db:para>
+ </dbx:description>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.arcrole.attribute">
+ <attribute name="xlink:arcrole">
+ <db:refpurpose>Identifies the XLink arcrole of the link</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.title.attribute">
+ <attribute name="xlink:title">
+ <db:refpurpose>Identifies the XLink title of the link</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.xlink.show.enumeration">
+ <choice>
+ <value>new</value>
+ <a:documentation>An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.</a:documentation>
+ <value>replace</value>
+ <a:documentation>An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</a:documentation>
+ <value>embed</value>
+ <a:documentation>An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.</a:documentation>
+ <value>other</value>
+ <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.</a:documentation>
+ <value>none</value>
+ <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.xlink.show.attribute">
+ <attribute name="xlink:show">
+ <db:refpurpose>Identifies the XLink show behavior of the link</db:refpurpose>
+ <ref name="db.xlink.show.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.actuate.enumeration">
+ <choice>
+ <value>onLoad</value>
+ <a:documentation>An application should traverse to the ending resource immediately on loading the starting resource.</a:documentation>
+ <value>onRequest</value>
+ <a:documentation>An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.</a:documentation>
+ <value>other</value>
+ <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.</a:documentation>
+ <value>none</value>
+ <a:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.xlink.actuate.attribute">
+ <attribute name="xlink:actuate">
+ <db:refpurpose>Identifies the XLink actuate behavior of the link</db:refpurpose>
+ <ref name="db.xlink.actuate.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.href.attributes">
+ <interleave>
+ <ref name="db.xlink.href.attribute"/>
+ <optional>
+ <ref name="db.xlink.type.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.arcrole.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.title.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.show.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.actuate.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.xml.id.attribute">
+ <attribute name="xml:id">
+ <db:refpurpose>Identifies the unique ID value of the element</db:refpurpose>
+ <data type="ID"/>
+ </attribute>
+ </define>
+ <define name="db.version.attribute">
+ <attribute name="version">
+ <db:refpurpose>Specifies the DocBook version of the element and its descendants</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.xml.lang.attribute">
+ <attribute name="xml:lang">
+ <db:refpurpose>Specifies the natural language of the element and its descendants</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.xml.base.attribute">
+ <attribute name="xml:base">
+ <db:refpurpose>Specifies the base URI of the element and its descendants</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.remap.attribute">
+ <attribute name="remap">
+ <db:refpurpose>Provides the name or similar semantic identifier assigned to the content in some previous markup scheme</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.xreflabel.attribute">
+ <attribute name="xreflabel">
+ <db:refpurpose>Provides the text that is to be generated for a cross reference to the element</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.xrefstyle.attribute">
+ <attribute name="xrefstyle">
+ <db:refpurpose>Specifies a keyword or keywords identifying additional style information</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.revisionflag.enumeration">
+ <choice>
+ <value>changed</value>
+ <a:documentation>The element has been changed.</a:documentation>
+ <value>added</value>
+ <a:documentation>The element is new (has been added to the document).</a:documentation>
+ <value>deleted</value>
+ <a:documentation>The element has been deleted.</a:documentation>
+ <value>off</value>
+ <a:documentation>Explicitly turns off revision markup for this element.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.revisionflag.attribute">
+ <attribute name="revisionflag">
+ <db:refpurpose>Identifies the revision status of the element</db:refpurpose>
+ <ref name="db.revisionflag.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.dir.enumeration">
+ <choice>
+ <value>ltr</value>
+ <a:documentation>Left-to-right text</a:documentation>
+ <value>rtl</value>
+ <a:documentation>Right-to-left text</a:documentation>
+ <value>lro</value>
+ <a:documentation>Left-to-right override</a:documentation>
+ <value>rlo</value>
+ <a:documentation>Right-to-left override</a:documentation>
+ </choice>
+ </define>
+ <define name="db.dir.attribute">
+ <attribute name="dir">
+ <db:refpurpose>Identifies the direction of text in an element</db:refpurpose>
+ <ref name="db.dir.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.common.base.attributes">
+ <interleave>
+ <optional>
+ <ref name="db.version.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xml.lang.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xml.base.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.remap.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xreflabel.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.revisionflag.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.dir.attribute"/>
+ </optional>
+ <ref name="db.effectivity.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.common.attributes">
+ <interleave>
+ <optional>
+ <ref name="db.xml.id.attribute"/>
+ </optional>
+ <ref name="db.common.base.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.common.idreq.attributes">
+ <interleave>
+ <ref name="db.xml.id.attribute"/>
+ <ref name="db.common.base.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.common.linking.attributes">
+ <optional>
+ <choice>
+ <ref name="db.linkend.attribute"/>
+ <ref name="db.href.attributes"/>
+ </choice>
+ </optional>
+ </define>
+ <define name="db.common.req.linking.attributes">
+ <choice>
+ <ref name="db.linkend.attribute"/>
+ <ref name="db.href.attributes"/>
+ </choice>
+ </define>
+ <define name="db.common.data.attributes">
+ <optional>
+ <attribute name="format">
+ <db:refpurpose>Specifies the format of the data</db:refpurpose>
+ </attribute>
+ </optional>
+ <choice>
+ <attribute name="fileref">
+ <db:refpurpose>Indentifies the location of the data by URI</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="entityref">
+ <db:refpurpose>Identifies the location of the data by external identifier (entity name)</db:refpurpose>
+ <data type="ENTITY"/>
+ </attribute>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.verbatim.continuation.enumeration">
+ <choice>
+ <value>continues</value>
+ <a:documentation>Line numbering continues from the immediately preceding element with the same name.</a:documentation>
+ <value>restarts</value>
+ <a:documentation>Line numbering restarts (begins at 1, usually).</a:documentation>
+ </choice>
+ </define>
+ <define name="db.verbatim.continuation.attribute">
+ <attribute name="continuation">
+ <db:refpurpose>Determines whether line numbering continues from the previous element or restarts.</db:refpurpose>
+ <ref name="db.verbatim.continuation.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.verbatim.linenumbering.enumeration">
+ <choice>
+ <value>numbered</value>
+ <a:documentation>Lines are numbered.</a:documentation>
+ <value>unnumbered</value>
+ <a:documentation>Lines are not numbered.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.verbatim.linenumbering.attribute">
+ <attribute name="linenumbering">
+ <db:refpurpose>Determines whether lines are numbered.</db:refpurpose>
+ <ref name="db.verbatim.linenumbering.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.verbatim.startinglinenumber.attribute">
+ <attribute name="startinglinenumber">
+ <db:refpurpose>Specifies the initial line number.</db:refpurpose>
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="db.verbatim.language.attribute">
+ <attribute name="language">
+ <db:refpurpose>Identifies the language (i.e. programming language) of the verbatim content.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.verbatim.xml.space.attribute">
+ <attribute name="xml:space">
+ <db:refpurpose>Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not.</db:refpurpose>
+ <value>preserve</value>
+ <a:documentation>Whitespace must be preserved.</a:documentation>
+ </attribute>
+ </define>
+ <define name="db.verbatim.attributes">
+ <interleave>
+ <optional>
+ <ref name="db.verbatim.continuation.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.verbatim.linenumbering.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.verbatim.startinglinenumber.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.verbatim.language.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.verbatim.xml.space.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.label.attribute">
+ <attribute name="label">
+ <db:refpurpose>Specifies an identifying string for presentation purposes</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.width.characters.attribute">
+ <attribute name="width">
+ <db:refpurpose>Specifies the width (in characters) of the element</db:refpurpose>
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </define>
+ <define name="db.spacing.enumeration">
+ <choice>
+ <value>compact</value>
+ <a:documentation>The spacing should be "compact".</a:documentation>
+ <value>normal</value>
+ <a:documentation>The spacing should be "normal".</a:documentation>
+ </choice>
+ </define>
+ <define name="db.spacing.attribute">
+ <attribute name="spacing">
+ <db:refpurpose>Specifies (a hint about) the spacing of the content</db:refpurpose>
+ <ref name="db.spacing.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.pgwide.enumeration">
+ <choice>
+ <value>0</value>
+ <a:documentation>The element should be rendered in the current text flow (with the flow column width).</a:documentation>
+ <value>1</value>
+ <a:documentation>The element should be rendered across the full text page.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.pgwide.attribute">
+ <attribute name="pgwide">
+ <db:refpurpose>Indicates if the element is rendered across the column or the page</db:refpurpose>
+ <ref name="db.pgwide.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.language.attribute">
+ <attribute name="language">
+ <db:refpurpose>Identifies the language (i.e. programming language) of the content.</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.performance.enumeration">
+ <choice>
+ <value>optional</value>
+ <a:documentation>The content describes an optional step or steps.</a:documentation>
+ <value>required</value>
+ <a:documentation>The content describes a required step or steps.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.performance.attribute">
+ <attribute name="performance">
+ <db:refpurpose>Specifies if the content is required or optional.</db:refpurpose>
+ <ref name="db.performance.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.floatstyle.attribute">
+ <attribute name="floatstyle">
+ <db:refpurpose>Specifies style information to be used when rendering the float</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.width.attribute">
+ <attribute name="width">
+ <db:refpurpose>Specifies the width of the element</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.depth.attribute">
+ <attribute name="depth">
+ <db:refpurpose>Specifies the depth of the element</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.contentwidth.attribute">
+ <attribute name="contentwidth">
+ <db:refpurpose>Specifies the width of the content rectangle</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.contentdepth.attribute">
+ <attribute name="contentdepth">
+ <db:refpurpose>Specifies the depth of the content rectangle</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.scalefit.enumeration">
+ <choice>
+ <value>0</value>
+ <a:documentation>False (do not scale-to-fit; anamorphic scaling may occur)</a:documentation>
+ <value>1</value>
+ <a:documentation>True (scale-to-fit; anamorphic scaling is forbidden)</a:documentation>
+ </choice>
+ </define>
+ <define name="db.scale.attribute">
+ <attribute name="scale">
+ <db:refpurpose>Specifies the scaling factor</db:refpurpose>
+ <data type="positiveInteger"/>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.halign.enumeration">
+ <choice>
+ <value>center</value>
+ <a:documentation>Centered horizontally</a:documentation>
+ <value>char</value>
+ <a:documentation>Aligned horizontally on the specified character</a:documentation>
+ <value>justify</value>
+ <a:documentation>Fully justified (left and right margins or edges)</a:documentation>
+ <value>left</value>
+ <a:documentation>Left aligned</a:documentation>
+ <value>right</value>
+ <a:documentation>Right aligned</a:documentation>
+ </choice>
+ </define>
+ <define name="db.valign.enumeration">
+ <choice>
+ <value>bottom</value>
+ <a:documentation>Aligned on the bottom of the region</a:documentation>
+ <value>middle</value>
+ <a:documentation>Centered vertically</a:documentation>
+ <value>top</value>
+ <a:documentation>Aligned on the top of the region</a:documentation>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <ctrl:other-attribute name="db.biblio.class.attribute" enum-name="db.biblio.class-enum.attribute" other-name="db.biblio.class-other.attributes"/>
+ <define name="db.biblio.class.enumeration">
+ <choice>
+ <value>doi</value>
+ <a:documentation>A digital object identifier.</a:documentation>
+ <value>isbn</value>
+ <a:documentation>An international standard book number.</a:documentation>
+ <value>isrn</value>
+ <a:documentation>An international standard technical report number (ISO 10444).</a:documentation>
+ <value>issn</value>
+ <a:documentation>An international standard serial number.</a:documentation>
+ <value>libraryofcongress</value>
+ <a:documentation>A Library of Congress reference number.</a:documentation>
+ <value>pubsnumber</value>
+ <a:documentation>A publication number (an internal number or possibly organizational standard).</a:documentation>
+ <value>uri</value>
+ <a:documentation>A Uniform Resource Identifier</a:documentation>
+ </choice>
+ </define>
+ <define name="db.biblio.class-enum.attribute">
+ <optional>
+ <attribute name="class">
+ <db:refpurpose>Identifies the kind of bibliographic identifier</db:refpurpose>
+ <ref name="db.biblio.class.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.biblio.class-other.attribute">
+ <attribute name="otherclass">
+ <db:refpurpose>Identifies the nature of the non-standard bibliographic identifier</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.biblio.class-other.attributes">
+ <interleave>
+ <attribute name="class">
+ <db:refpurpose>Identifies the kind of bibliographic identifier</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Indicates that the identifier is some 'other' kind.</a:documentation>
+ </attribute>
+ <ref name="db.biblio.class-other.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.biblio.class.attribute">
+ <choice>
+ <ref name="db.biblio.class-enum.attribute"/>
+ <ref name="db.biblio.class-other.attributes"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.ubiq.inlines">
+ <choice>
+ <ref name="db.inlinemediaobject"/>
+ <ref name="db.remark"/>
+ <ref name="db.link.inlines"/>
+ <ref name="db.alt"/>
+ <ref name="db.trademark"/>
+ <!-- below, effectively the publishing inlines (as of 5.0) -->
+ <ref name="db.abbrev"/>
+ <ref name="db.acronym"/>
+ <ref name="db.date"/>
+ <ref name="db._emphasis"/>
+ <ref name="db.footnote"/>
+ <ref name="db.footnoteref"/>
+ <ref name="db._foreignphrase"/>
+ <ref name="db._phrase"/>
+ <ref name="db._quote"/>
+ <ref name="db.subscript"/>
+ <ref name="db.superscript"/>
+ <ref name="db.wordasword"/>
+ </choice>
+ </define>
+ <define name="db._text">
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="db.ubiq.inlines"/>
+ <ref name="db._phrase"/>
+ <ref name="db.replaceable"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="db._title">
+ <interleave>
+ <optional>
+ <ref name="db.title"/>
+ </optional>
+ <optional>
+ <ref name="db.titleabbrev"/>
+ </optional>
+ <optional>
+ <ref name="db.subtitle"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db._title.req">
+ <interleave>
+ <ref name="db.title"/>
+ <optional>
+ <ref name="db.titleabbrev"/>
+ </optional>
+ <optional>
+ <ref name="db.subtitle"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db._title.only">
+ <interleave>
+ <optional>
+ <ref name="db.title"/>
+ </optional>
+ <optional>
+ <ref name="db.titleabbrev"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db._title.onlyreq">
+ <interleave>
+ <ref name="db.title"/>
+ <optional>
+ <ref name="db.titleabbrev"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db._info">
+ <choice>
+ <group>
+ <ref name="db._title"/>
+ <optional>
+ <ref name="db.titleforbidden.info"/>
+ </optional>
+ </group>
+ <optional>
+ <ref name="db.info"/>
+ </optional>
+ </choice>
+ </define>
+ <define name="db._info.title.req">
+ <choice>
+ <group>
+ <ref name="db._title.req"/>
+ <optional>
+ <ref name="db.titleforbidden.info"/>
+ </optional>
+ </group>
+ <ref name="db.titlereq.info"/>
+ </choice>
+ </define>
+ <define name="db._info.title.only">
+ <choice>
+ <group>
+ <ref name="db._title.only"/>
+ <optional>
+ <ref name="db.titleforbidden.info"/>
+ </optional>
+ </group>
+ <ref name="db.titleonly.info"/>
+ </choice>
+ </define>
+ <define name="db._info.title.onlyreq">
+ <choice>
+ <group>
+ <ref name="db._title.onlyreq"/>
+ <optional>
+ <ref name="db.titleforbidden.info"/>
+ </optional>
+ </group>
+ <ref name="db.titleonlyreq.info"/>
+ </choice>
+ </define>
+ <define name="db._info.title.forbidden">
+ <optional>
+ <ref name="db.titleforbidden.info"/>
+ </optional>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.all.inlines">
+ <choice>
+ <text/>
+ <ref name="db.ubiq.inlines"/>
+ <ref name="db.general.inlines"/>
+ <ref name="db.domain.inlines"/>
+ <ref name="db.extension.inlines"/>
+ </choice>
+ </define>
+ <define name="db.general.inlines">
+ <choice>
+ <ref name="db.publishing.inlines"/>
+ <ref name="db.product.inlines"/>
+ <ref name="db.bibliography.inlines"/>
+ <ref name="db.graphic.inlines"/>
+ <ref name="db.indexing.inlines"/>
+ <ref name="db.link.inlines"/>
+ </choice>
+ </define>
+ <define name="db.domain.inlines">
+ <ref name="db.technical.inlines"/>
+ </define>
+ <define name="db.technical.inlines">
+ <choice>
+ <ref name="db.replaceable"/>
+ <ref name="db.package"/>
+ <ref name="db.parameter"/>
+ </choice>
+ </define>
+ <define name="db.product.inlines">
+ <ref name="db.trademark"/>
+ </define>
+ <define name="db.bibliography.inlines">
+ <choice>
+ <ref name="db.citation"/>
+ <ref name="db.citerefentry"/>
+ <ref name="db.citetitle"/>
+ <ref name="db.citebiblioid"/>
+ <ref name="db.author"/>
+ <ref name="db.person"/>
+ <ref name="db.personname"/>
+ <ref name="db.org"/>
+ <ref name="db.orgname"/>
+ <ref name="db.editor"/>
+ <ref name="db.jobtitle"/>
+ </choice>
+ </define>
+ <define name="db.publishing.inlines">
+ <choice>
+ <ref name="db.abbrev"/>
+ <ref name="db.acronym"/>
+ <ref name="db.date"/>
+ <ref name="db.emphasis"/>
+ <ref name="db.footnote"/>
+ <ref name="db.footnoteref"/>
+ <ref name="db.foreignphrase"/>
+ <ref name="db.phrase"/>
+ <ref name="db.quote"/>
+ <ref name="db.subscript"/>
+ <ref name="db.superscript"/>
+ <ref name="db.wordasword"/>
+ </choice>
+ </define>
+ <define name="db.graphic.inlines">
+ <ref name="db.inlinemediaobject"/>
+ </define>
+ <define name="db.indexing.inlines">
+ <notAllowed/>
+ </define>
+ <define name="db.link.inlines">
+ <choice>
+ <ref name="db.xref"/>
+ <ref name="db.link"/>
+ <ref name="db.olink"/>
+ <ref name="db.anchor"/>
+ </choice>
+ </define>
+ <define name="db.extension.inlines">
+ <notAllowed/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.nopara.blocks">
+ <choice>
+ <ref name="db.list.blocks"/>
+ <ref name="db.formal.blocks"/>
+ <ref name="db.informal.blocks"/>
+ <ref name="db.publishing.blocks"/>
+ <ref name="db.graphic.blocks"/>
+ <ref name="db.technical.blocks"/>
+ <ref name="db.verbatim.blocks"/>
+ <ref name="db.bridgehead"/>
+ <ref name="db.remark"/>
+ <ref name="db.revhistory"/>
+ </choice>
+ </define>
+ <define name="db.para.blocks">
+ <choice>
+ <ref name="db.anchor"/>
+ <ref name="db.para"/>
+ <ref name="db.formalpara"/>
+ <ref name="db.simpara"/>
+ </choice>
+ </define>
+ <define name="db.all.blocks">
+ <choice>
+ <ref name="db.nopara.blocks"/>
+ <ref name="db.para.blocks"/>
+ <ref name="db.extension.blocks"/>
+ </choice>
+ </define>
+ <ctrl:exclude from="db.formal.blocks" exclude="db.formal.blocks"/>
+ <define name="db.formal.blocks">
+ <choice>
+ <ref name="db.example"/>
+ <ref name="db.figure"/>
+ <ref name="db.table"/>
+ </choice>
+ </define>
+ <define name="db.informal.blocks">
+ <choice>
+ <ref name="db.informalexample"/>
+ <ref name="db.informalfigure"/>
+ <ref name="db.informaltable"/>
+ </choice>
+ </define>
+ <define name="db.publishing.blocks">
+ <choice>
+ <ref name="db.sidebar"/>
+ <ref name="db.blockquote"/>
+ <ref name="db.address"/>
+ <ref name="db.epigraph"/>
+ </choice>
+ </define>
+ <define name="db.graphic.blocks">
+ <choice>
+ <ref name="db.mediaobject"/>
+ <ref name="db.screenshot"/>
+ </choice>
+ </define>
+ <define name="db.technical.blocks">
+ <ref name="db.procedure"/>
+ </define>
+ <define name="db.list.blocks">
+ <choice>
+ <ref name="db.itemizedlist"/>
+ <ref name="db.orderedlist"/>
+ <ref name="db.procedure"/>
+ <ref name="db.simplelist"/>
+ <ref name="db.variablelist"/>
+ <ref name="db.segmentedlist"/>
+ </choice>
+ </define>
+ <define name="db.verbatim.blocks">
+ <choice>
+ <ref name="db.screen"/>
+ <ref name="db.literallayout"/>
+ </choice>
+ </define>
+ <define name="db.extension.blocks">
+ <notAllowed/>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.info.extension">
+ <ref name="db._any"/>
+ </define>
+ <define name="db.info.elements">
+ <choice>
+ <ref name="db.abstract"/>
+ <ref name="db.address"/>
+ <ref name="db.artpagenums"/>
+ <ref name="db.author"/>
+ <ref name="db.authorgroup"/>
+ <ref name="db.authorinitials"/>
+ <ref name="db.bibliocoverage"/>
+ <ref name="db.biblioid"/>
+ <ref name="db.bibliosource"/>
+ <ref name="db.collab"/>
+ <ref name="db.confgroup"/>
+ <ref name="db.contractsponsor"/>
+ <ref name="db.contractnum"/>
+ <ref name="db.copyright"/>
+ <ref name="db.cover"/>
+ <ref name="db.date"/>
+ <ref name="db.edition"/>
+ <ref name="db.editor"/>
+ <ref name="db.issuenum"/>
+ <ref name="db.keywordset"/>
+ <ref name="db.legalnotice"/>
+ <ref name="db.mediaobject"/>
+ <ref name="db.org"/>
+ <ref name="db.orgname"/>
+ <ref name="db.othercredit"/>
+ <ref name="db.pagenums"/>
+ <ref name="db.printhistory"/>
+ <ref name="db.pubdate"/>
+ <ref name="db.publisher"/>
+ <ref name="db.publishername"/>
+ <ref name="db.releaseinfo"/>
+ <ref name="db.revhistory"/>
+ <ref name="db.seriesvolnums"/>
+ <ref name="db.subjectset"/>
+ <ref name="db.volumenum"/>
+ <ref name="db.info.extension"/>
+ </choice>
+ </define>
+ <define name="db.bibliographic.elements">
+ <choice>
+ <ref name="db.info.elements"/>
+ <ref name="db.publishing.inlines"/>
+ <ref name="db.citerefentry"/>
+ <ref name="db.citetitle"/>
+ <ref name="db.citebiblioid"/>
+ <ref name="db.person"/>
+ <ref name="db.personblurb"/>
+ <ref name="db.personname"/>
+ <ref name="db.subtitle"/>
+ <ref name="db.title"/>
+ <ref name="db.titleabbrev"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>title</db:refname>
+ <db:refpurpose>The text of the title of a section of a document or of a formal block-level element</db:refpurpose>
+ <define name="db.title.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.title.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.title.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.title">
+ <element name="title">
+ <ref name="db.title.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>titleabbrev</db:refname>
+ <db:refpurpose>The abbreviation of a title</db:refpurpose>
+ <define name="db.titleabbrev.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.titleabbrev.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.titleabbrev.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.titleabbrev">
+ <element name="titleabbrev">
+ <ref name="db.titleabbrev.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>subtitle</db:refname>
+ <db:refpurpose>The subtitle of a document</db:refpurpose>
+ <define name="db.subtitle.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.subtitle.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.subtitle.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.subtitle">
+ <element name="subtitle">
+ <ref name="db.subtitle.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>info</db:refname>
+ <db:refpurpose>A wrapper for information about a component or other block</db:refpurpose>
+ <define name="db.info.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.info.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.info.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.info">
+ <element name="info">
+ <ref name="db.info.attlist"/>
+ <interleave>
+ <ref name="db._title"/>
+ <zeroOrMore>
+ <ref name="db.info.elements"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>info</db:refname>
+ <db:refpurpose>A wrapper for information about a component or other block with a required title</db:refpurpose>
+ <define name="db.titlereq.info.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.titlereq.info.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.titlereq.info.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.titlereq.info">
+ <element name="info">
+ <ref name="db.titlereq.info.attlist"/>
+ <interleave>
+ <ref name="db._title.req"/>
+ <zeroOrMore>
+ <ref name="db.info.elements"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>info</db:refname>
+ <db:refpurpose>A wrapper for information about a component or other block with only a title</db:refpurpose>
+ <define name="db.titleonly.info.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.titleonly.info.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.titleonly.info.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.titleonly.info">
+ <element name="info">
+ <ref name="db.titleonly.info.attlist"/>
+ <interleave>
+ <ref name="db._title.only"/>
+ <zeroOrMore>
+ <ref name="db.info.elements"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>info</db:refname>
+ <db:refpurpose>A wrapper for information about a component or other block with only a required title</db:refpurpose>
+ <define name="db.titleonlyreq.info.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.titleonlyreq.info.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.titleonlyreq.info.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.titleonlyreq.info">
+ <element name="info">
+ <ref name="db.titleonlyreq.info.attlist"/>
+ <interleave>
+ <ref name="db._title.onlyreq"/>
+ <zeroOrMore>
+ <ref name="db.info.elements"/>
+ </zeroOrMore>
+ </interleave>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>info</db:refname>
+ <db:refpurpose>A wrapper for information about a component or other block without a title</db:refpurpose>
+ <define name="db.titleforbidden.info.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.titleforbidden.info.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.titleforbidden.info.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.titleforbidden.info">
+ <element name="info">
+ <ref name="db.titleforbidden.info.attlist"/>
+ <zeroOrMore>
+ <ref name="db.info.elements"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>subjectset</db:refname>
+ <db:refpurpose>A set of terms describing the subject matter of a document</db:refpurpose>
+ <define name="db.subjectset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.subjectset.scheme.attribute">
+ <attribute name="scheme">
+ <db:refpurpose>Identifies the controlled vocabulary used by this set's terms</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.subjectset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.subjectset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.subjectset.scheme.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.subjectset">
+ <element name="subjectset">
+ <ref name="db.subjectset.attlist"/>
+ <oneOrMore>
+ <ref name="db.subject"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>subject</db:refname>
+ <db:refpurpose>One of a group of terms describing the subject matter of a document</db:refpurpose>
+ <define name="db.subject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.subject.weight.attribute">
+ <attribute name="weight">
+ <db:refpurpose>Specifies a ranking for this subject relative to other subjects in the same set</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.subject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.subject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.subject.weight.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.subject">
+ <element name="subject">
+ <ref name="db.subject.attlist"/>
+ <oneOrMore>
+ <ref name="db.subjectterm"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>subjectterm</db:refname>
+ <db:refpurpose>A term in a group of terms describing the subject matter of a document</db:refpurpose>
+ <define name="db.subjectterm.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.subjectterm.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.subjectterm.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.subjectterm">
+ <element name="subjectterm">
+ <ref name="db.subjectterm.attlist"/>
+ <text/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>keywordset</db:refname>
+ <db:refpurpose>A set of keywords describing the content of a document</db:refpurpose>
+ <define name="db.keywordset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.keywordset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.keywordset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.keywordset">
+ <element name="keywordset">
+ <ref name="db.keywordset.attlist"/>
+ <oneOrMore>
+ <ref name="db.keyword"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>keyword</db:refname>
+ <db:refpurpose>One of a set of keywords describing the content of a document</db:refpurpose>
+ <define name="db.keyword.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.keyword.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.keyword.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.keyword">
+ <element name="keyword">
+ <ref name="db.keyword.attlist"/>
+ <text/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.table.choice">
+ <notAllowed/>
+ </define>
+ <define name="db.informaltable.choice">
+ <notAllowed/>
+ </define>
+ <define name="db.table">
+ <ref name="db.table.choice"/>
+ </define>
+ <define name="db.informaltable">
+ <ref name="db.informaltable.choice"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>procedure</db:refname>
+ <db:refpurpose>A list of operations to be performed in a well-defined sequence</db:refpurpose>
+ <define name="db.procedure.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.procedure.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.procedure.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.procedure.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.procedure">
+ <element name="procedure">
+ <ref name="db.procedure.attlist"/>
+ <ref name="db.procedure.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.step"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>step</db:refname>
+ <db:refpurpose>A unit of action in a procedure</db:refpurpose>
+ <define name="db.step.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.step.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.step.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.performance.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.step.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <!--
+ This content model is blocks*, step|stepalternatives, blocks* but
+ expressed this way it avoids UPA issues in XSD and DTD versions
+ -->
+ <define name="db.step">
+ <element name="step">
+ <ref name="db.step.attlist"/>
+ <ref name="db.step.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <choice>
+ <ref name="db.substeps"/>
+ <ref name="db.stepalternatives"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ </optional>
+ </group>
+ <group>
+ <choice>
+ <ref name="db.substeps"/>
+ <ref name="db.stepalternatives"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>stepalternatives</db:refname>
+ <db:refpurpose>Alternative steps in a procedure</db:refpurpose>
+ <define name="db.stepalternatives.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.stepalternatives.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.stepalternatives.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.performance.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.stepalternatives.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.stepalternatives">
+ <element name="stepalternatives">
+ <ref name="db.stepalternatives.attlist"/>
+ <ref name="db.stepalternatives.info"/>
+ <oneOrMore>
+ <ref name="db.step"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>substeps</db:refname>
+ <db:refpurpose>A wrapper for steps that occur within steps in a procedure</db:refpurpose>
+ <define name="db.substeps.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.substeps.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.substeps.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.performance.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.substeps">
+ <element name="substeps">
+ <ref name="db.substeps.attlist"/>
+ <oneOrMore>
+ <ref name="db.step"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>sidebar</db:refname>
+ <db:refpurpose>A portion of a document that is isolated from the main narrative flow</db:refpurpose>
+ <ctrl:exclude from="db.sidebar" exclude="db.sidebar"/>
+ <define name="db.sidebar.floatstyle.attribute">
+ <ref name="db.floatstyle.attribute"/>
+ </define>
+ <define name="db.sidebar.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sidebar.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sidebar.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.sidebar.floatstyle.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.sidebar.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.sidebar">
+ <element name="sidebar">
+ <ref name="db.sidebar.attlist"/>
+ <ref name="db.sidebar.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>abstract</db:refname>
+ <db:refpurpose>A summary</db:refpurpose>
+ <define name="db.abstract.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.abstract.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.abstract.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.abstract.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.abstract">
+ <element name="abstract">
+ <ref name="db.abstract.attlist"/>
+ <ref name="db.abstract.info"/>
+ <oneOrMore>
+ <ref name="db.para.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>personblurb</db:refname>
+ <db:refpurpose>A short description or note about a person</db:refpurpose>
+ <define name="db.personblurb.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.personblurb.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.personblurb.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.personblurb.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.personblurb">
+ <element name="personblurb">
+ <ref name="db.personblurb.attlist"/>
+ <ref name="db.personblurb.info"/>
+ <oneOrMore>
+ <ref name="db.para.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>blockquote</db:refname>
+ <db:refpurpose>A quotation set off from the main text</db:refpurpose>
+ <define name="db.blockquote.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.blockquote.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.blockquote.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.blockquote.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.blockquote">
+ <element name="blockquote">
+ <ref name="db.blockquote.attlist"/>
+ <ref name="db.blockquote.info"/>
+ <optional>
+ <ref name="db.attribution"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>attribution</db:refname>
+ <db:refpurpose>The source of a block quote or epigraph</db:refpurpose>
+ <define name="db.attribution.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.attribution.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.attribution.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.attribution">
+ <element name="attribution">
+ <ref name="db.attribution.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.person"/>
+ <ref name="db.personname"/>
+ <ref name="db.citetitle"/>
+ <ref name="db.citation"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bridgehead</db:refname>
+ <db:refpurpose>A free-floating heading</db:refpurpose>
+ <ctrl:other-attribute name="db.bridgehead.renderas.attribute" enum-name="db.bridgehead.renderas-enum.attribute" other-name="db.bridgehead.renderas-other.attributes"/>
+ <define name="db.bridgehead.renderas.enumeration">
+ <choice>
+ <value>sect1</value>
+ <a:documentation>Render as a first-level section</a:documentation>
+ <value>sect2</value>
+ <a:documentation>Render as a second-level section</a:documentation>
+ <value>sect3</value>
+ <a:documentation>Render as a third-level section</a:documentation>
+ <value>sect4</value>
+ <a:documentation>Render as a fourth-level section</a:documentation>
+ <value>sect5</value>
+ <a:documentation>Render as a fifth-level section</a:documentation>
+ </choice>
+ </define>
+ <define name="db.bridgehead.renderas-enum.attribute">
+ <optional>
+ <attribute name="renderas">
+ <db:refpurpose>Indicates how the bridge head should be rendered</db:refpurpose>
+ <ref name="db.bridgehead.renderas.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.bridgehead.renderas-other.attribute">
+ <attribute name="otherrenderas">
+ <db:refpurpose>Identifies the nature of the non-standard rendering</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.bridgehead.renderas-other.attributes">
+ <interleave>
+ <attribute name="renderas">
+ <db:refpurpose>Indicates how the bridge head should be rendered</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Identifies a non-standard rendering</a:documentation>
+ </attribute>
+ <ref name="db.bridgehead.renderas-other.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.bridgehead.renderas.attribute">
+ <choice>
+ <ref name="db.bridgehead.renderas-enum.attribute"/>
+ <ref name="db.bridgehead.renderas-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.bridgehead.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bridgehead.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bridgehead.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.bridgehead.renderas.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.bridgehead">
+ <element name="bridgehead">
+ <ref name="db.bridgehead.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>remark</db:refname>
+ <db:refpurpose>A remark (or comment) intended for presentation in a draft manuscript</db:refpurpose>
+ <define name="db.remark.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.remark.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.remark.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.remark">
+ <element name="remark">
+ <ref name="db.remark.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>epigraph</db:refname>
+ <db:refpurpose>A short inscription at the beginning of a document or component</db:refpurpose>
+ <define name="db.epigraph.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.epigraph.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.epigraph.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.epigraph.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.epigraph">
+ <element name="epigraph">
+ <ref name="db.epigraph.attlist"/>
+ <ref name="db.epigraph.info"/>
+ <optional>
+ <ref name="db.attribution"/>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <ref name="db.para.blocks"/>
+ <ref name="db.literallayout"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>footnote</db:refname>
+ <db:refpurpose>A footnote</db:refpurpose>
+ <ctrl:exclude from="db.footnote" exclude="db.footnote"/>
+ <ctrl:exclude from="db.footnote" exclude="db.formal.blocks"/>
+ <ctrl:exclude from="db.footnote" exclude="db.sidebar"/>
+ <ctrl:exclude from="db.footnote" exclude="db.task"/>
+ <ctrl:exclude from="db.footnote" exclude="db.epigraph"/>
+ <define name="db.footnote.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.footnote.label.attribute">
+ <attribute name="label">
+ <db:refpurpose>Identifies the desired footnote mark</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.footnote.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.footnote.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.footnote.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.footnote">
+ <element name="footnote">
+ <ref name="db.footnote.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>formalpara</db:refname>
+ <db:refpurpose>A paragraph with a title</db:refpurpose>
+ <define name="db.formalpara.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.formalpara.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.formalpara.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.formalpara.info">
+ <ref name="db._info.title.onlyreq"/>
+ </define>
+ <define name="db.formalpara">
+ <element name="formalpara">
+ <ref name="db.formalpara.attlist"/>
+ <ref name="db.formalpara.info"/>
+ <zeroOrMore>
+ <ref name="db.indexing.inlines"/>
+ </zeroOrMore>
+ <ref name="db.para"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>para</db:refname>
+ <db:refpurpose>A paragraph</db:refpurpose>
+ <define name="db.para.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.para.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.para.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.para.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.para">
+ <element name="para">
+ <ref name="db.para.attlist"/>
+ <ref name="db.para.info"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.all.inlines"/>
+ <ref name="db.nopara.blocks"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>simpara</db:refname>
+ <db:refpurpose>A paragraph that contains only text and inline markup, no block elements</db:refpurpose>
+ <define name="db.simpara.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.simpara.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.simpara.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.simpara.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.simpara">
+ <element name="simpara">
+ <ref name="db.simpara.attlist"/>
+ <ref name="db.simpara.info"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>itemizedlist</db:refname>
+ <db:refpurpose>A list in which each entry is marked with a bullet or other dingbat</db:refpurpose>
+ <define name="db.itemizedlist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.itemizedlist.mark.attribute">
+ <attribute name="mark">
+ <db:refpurpose>Identifies the type of mark to be used on items in this list</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.itemizedlist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.itemizedlist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.spacing.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.itemizedlist.mark.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.itemizedlist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.itemizedlist">
+ <element name="itemizedlist">
+ <ref name="db.itemizedlist.attlist"/>
+ <ref name="db.itemizedlist.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.listitem"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>orderedlist</db:refname>
+ <db:refpurpose>A list in which each entry is marked with a sequentially incremented label</db:refpurpose>
+ <define name="db.orderedlist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.orderedlist.continuation.enumeration">
+ <choice>
+ <value>continues</value>
+ <a:documentation>Specifies that numbering should begin where the preceding list left off</a:documentation>
+ <value>restarts</value>
+ <a:documentation>Specifies that numbering should begin again at 1</a:documentation>
+ </choice>
+ </define>
+ <define name="db.orderedlist.continuation.attribute">
+ <attribute name="continuation">
+ <db:refpurpose>Indicates how list numbering should begin relative to the immediately preceding list</db:refpurpose>
+ <ref name="db.orderedlist.continuation.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.orderedlist.startingnumber.attribute">
+ <attribute name="startingnumber">
+ <db:refpurpose>Specifies the initial line number.</db:refpurpose>
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="db.orderedlist.inheritnum.enumeration">
+ <choice>
+ <value>ignore</value>
+ <a:documentation>Specifies that numbering should ignore list nesting</a:documentation>
+ <value>inherit</value>
+ <a:documentation>Specifies that numbering should inherit from outer-level lists</a:documentation>
+ </choice>
+ </define>
+ <define name="db.orderedlist.inheritnum.attribute">
+ <attribute name="inheritnum">
+ <db:refpurpose>Indicates whether or not item numbering should be influenced by list nesting</db:refpurpose>
+ <ref name="db.orderedlist.inheritnum.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.orderedlist.numeration.enumeration">
+ <choice>
+ <value>arabic</value>
+ <a:documentation>Specifies Arabic numeration (1, 2, 3, …)</a:documentation>
+ <value>upperalpha</value>
+ <a:documentation>Specifies upper-case alphabetic numeration (A, B, C, …)</a:documentation>
+ <value>loweralpha</value>
+ <a:documentation>Specifies lower-case alphabetic numeration (a, b, c, …)</a:documentation>
+ <value>upperroman</value>
+ <a:documentation>Specifies upper-case Roman numeration (I, II, III, …)</a:documentation>
+ <value>lowerroman</value>
+ <a:documentation>Specifies lower-case Roman numeration (i, ii, iii …)</a:documentation>
+ </choice>
+ </define>
+ <define name="db.orderedlist.numeration.attribute">
+ <attribute name="numeration">
+ <db:refpurpose>Indicates the desired numeration</db:refpurpose>
+ <ref name="db.orderedlist.numeration.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.orderedlist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.orderedlist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.spacing.attribute"/>
+ </optional>
+ <optional>
+ <choice>
+ <ref name="db.orderedlist.continuation.attribute"/>
+ <ref name="db.orderedlist.startingnumber.attribute"/>
+ </choice>
+ </optional>
+ <optional>
+ <ref name="db.orderedlist.inheritnum.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.orderedlist.numeration.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.orderedlist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.orderedlist">
+ <element name="orderedlist">
+ <ref name="db.orderedlist.attlist"/>
+ <ref name="db.orderedlist.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.listitem"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>listitem</db:refname>
+ <db:refpurpose>A wrapper for the elements of a list item</db:refpurpose>
+ <define name="db.listitem.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.listitem.override.attribute">
+ <attribute name="override">
+ <db:refpurpose>Specifies the keyword for the type of mark that should be used on <db:emphasis>this</db:emphasis>
+ item, instead of the mark that would be used by default</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.listitem.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.listitem.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.listitem.override.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.listitem">
+ <element name="listitem">
+ <ref name="db.listitem.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>segmentedlist</db:refname>
+ <db:refpurpose>A segmented list, a list of sets of elements</db:refpurpose>
+ <define name="db.segmentedlist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.segmentedlist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.segmentedlist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.segmentedlist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.segmentedlist">
+ <element name="segmentedlist">
+ <ref name="db.segmentedlist.attlist"/>
+ <ref name="db.segmentedlist.info"/>
+ <oneOrMore>
+ <ref name="db.segtitle"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.seglistitem"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>segtitle</db:refname>
+ <db:refpurpose>The title of an element of a list item in a segmented list</db:refpurpose>
+ <define name="db.segtitle.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.segtitle.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.segtitle.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.segtitle">
+ <element name="segtitle">
+ <ref name="db.segtitle.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>seglistitem</db:refname>
+ <db:refpurpose>A list item in a segmented list</db:refpurpose>
+ <define name="db.seglistitem.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.seglistitem.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.seglistitem.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.seglistitem">
+ <element name="seglistitem">
+ <s:pattern name="Cardinality of segments and titles">
+ <s:rule context="db:seglistitem">
+ <s:assert test="count(db:seg) = count(../db:segtitle)">The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.seglistitem.attlist"/>
+ <oneOrMore>
+ <ref name="db.seg"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>seg</db:refname>
+ <db:refpurpose>An element of a list item in a segmented list</db:refpurpose>
+ <define name="db.seg.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.seg.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.seg.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.seg">
+ <element name="seg">
+ <ref name="db.seg.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>simplelist</db:refname>
+ <db:refpurpose>An undecorated list of single words or short phrases</db:refpurpose>
+ <define name="db.simplelist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.simplelist.type.enumeration">
+ <choice>
+ <value>horiz</value>
+ <a:documentation>A tabular presentation in row-major order.</a:documentation>
+ <value>vert</value>
+ <a:documentation>A tabular presentation in column-major order.</a:documentation>
+ <value>inline</value>
+ <a:documentation>An inline presentation, usually a comma-delimited list.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.simplelist.type.attribute">
+ <attribute name="type" a:defaultValue="vert">
+ <db:refpurpose>Specifies the type of list presentation.</db:refpurpose>
+ <ref name="db.simplelist.type.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.simplelist.columns.attribute">
+ <attribute name="columns">
+ <db:refpurpose>Specifies the number of columns for horizontal or vertical presentation</db:refpurpose>
+ <data type="integer"/>
+ </attribute>
+ </define>
+ <define name="db.simplelist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.simplelist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.simplelist.type.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.simplelist.columns.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.simplelist">
+ <element name="simplelist">
+ <ref name="db.simplelist.attlist"/>
+ <oneOrMore>
+ <ref name="db.member"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>member</db:refname>
+ <db:refpurpose>An element of a simple list</db:refpurpose>
+ <define name="db.member.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.member.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.member.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.member">
+ <element name="member">
+ <ref name="db.member.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>variablelist</db:refname>
+ <db:refpurpose>A list in which each entry is composed of a set of one or more terms and an associated description</db:refpurpose>
+ <define name="db.variablelist.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.variablelist.termlength.attribute">
+ <attribute name="termlength">
+ <db:refpurpose>Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.variablelist.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.variablelist.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.spacing.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.variablelist.termlength.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.variablelist.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.variablelist">
+ <element name="variablelist">
+ <ref name="db.variablelist.attlist"/>
+ <ref name="db.variablelist.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="db.varlistentry"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>varlistentry</db:refname>
+ <db:refpurpose>A wrapper for a set of terms and the associated description in a variable list</db:refpurpose>
+ <define name="db.varlistentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.varlistentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.varlistentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.varlistentry">
+ <element name="varlistentry">
+ <ref name="db.varlistentry.attlist"/>
+ <oneOrMore>
+ <ref name="db.term"/>
+ </oneOrMore>
+ <ref name="db.listitem"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>term</db:refname>
+ <db:refpurpose>The word or phrase being defined or described in a variable list</db:refpurpose>
+ <define name="db.term.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.term.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.term.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.term">
+ <element name="term">
+ <ref name="db.term.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>example</db:refname>
+ <db:refpurpose>A formal example, with a title</db:refpurpose>
+ <define name="db.example.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.example.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.example.width.attribute">
+ <ref name="db.width.characters.attribute"/>
+ </define>
+ <define name="db.example.pgwide.attribute">
+ <ref name="db.pgwide.attribute"/>
+ </define>
+ <define name="db.example.floatstyle.attribute">
+ <ref name="db.floatstyle.attribute"/>
+ </define>
+ <define name="db.example.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.example.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.example.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.example.floatstyle.attribute"/>
+ </optional>
+ <optional>
+ <choice>
+ <ref name="db.example.width.attribute"/>
+ <ref name="db.example.pgwide.attribute"/>
+ </choice>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.example.info">
+ <ref name="db._info.title.onlyreq"/>
+ </define>
+ <define name="db.example">
+ <element name="example">
+ <ref name="db.example.attlist"/>
+ <ref name="db.example.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>informalexample</db:refname>
+ <db:refpurpose>A displayed example without a title</db:refpurpose>
+ <define name="db.informalexample.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.informalexample.width.attribute">
+ <ref name="db.width.characters.attribute"/>
+ </define>
+ <define name="db.informalexample.floatstyle.attribute">
+ <ref name="db.floatstyle.attribute"/>
+ </define>
+ <define name="db.informalexample.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.informalexample.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.informalexample.floatstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.informalexample.width.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.informalexample.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.informalexample">
+ <element name="informalexample">
+ <ref name="db.informalexample.attlist"/>
+ <ref name="db.informalexample.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.verbatim.inlines">
+ <choice>
+ <ref name="db.all.inlines"/>
+ <ref name="db.lineannotation"/>
+ </choice>
+ </define>
+ <define name="db.verbatim.contentmodel">
+ <ref name="db._info.title.forbidden"/>
+ <choice>
+ <ref name="db.textobject"/>
+ <zeroOrMore>
+ <ref name="db.verbatim.inlines"/>
+ </zeroOrMore>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>literallayout</db:refname>
+ <db:refpurpose>A block of text in which line breaks and white space are to be reproduced faithfully</db:refpurpose>
+ <define name="db.literallayout.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.literallayout.class.enumeration">
+ <choice>
+ <value>monospaced</value>
+ <a:documentation>The literal layout should be formatted with a monospaced font</a:documentation>
+ <value>normal</value>
+ <a:documentation>The literal layout should be formatted with the current font</a:documentation>
+ </choice>
+ </define>
+ <define name="db.literallayout.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Specifies the class of literal layout</db:refpurpose>
+ <ref name="db.literallayout.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.literallayout.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.literallayout.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ <optional>
+ <ref name="db.literallayout.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.literallayout">
+ <element name="literallayout">
+ <ref name="db.literallayout.attlist"/>
+ <ref name="db.verbatim.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>screen</db:refname>
+ <db:refpurpose>Text that a user sees or might see on a computer screen</db:refpurpose>
+ <define name="db.screen.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.screen.width.attribute">
+ <ref name="db.width.characters.attribute"/>
+ </define>
+ <define name="db.screen.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.screen.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ <optional>
+ <ref name="db.screen.width.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.screen">
+ <element name="screen">
+ <ref name="db.screen.attlist"/>
+ <ref name="db.verbatim.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>screenshot</db:refname>
+ <db:refpurpose>A representation of what the user sees or might see on a computer screen</db:refpurpose>
+ <define name="db.screenshot.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.screenshot.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.screenshot.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.screenshot.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.screenshot">
+ <element name="screenshot">
+ <ref name="db.screenshot.attlist"/>
+ <ref name="db.screenshot.info"/>
+ <ref name="db.mediaobject"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>figure</db:refname>
+ <db:refpurpose>A formal figure, generally an illustration, with a title</db:refpurpose>
+ <define name="db.figure.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.figure.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.figure.pgwide.attribute">
+ <ref name="db.pgwide.attribute"/>
+ </define>
+ <define name="db.figure.floatstyle.attribute">
+ <ref name="db.floatstyle.attribute"/>
+ </define>
+ <define name="db.figure.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.figure.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.figure.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.figure.pgwide.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.figure.floatstyle.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.figure.info">
+ <ref name="db._info.title.onlyreq"/>
+ </define>
+ <define name="db.figure">
+ <element name="figure">
+ <ref name="db.figure.attlist"/>
+ <ref name="db.figure.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>informalfigure</db:refname>
+ <db:refpurpose>A untitled figure</db:refpurpose>
+ <define name="db.informalfigure.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.informalfigure.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.informalfigure.pgwide.attribute">
+ <ref name="db.pgwide.attribute"/>
+ </define>
+ <define name="db.informalfigure.floatstyle.attribute">
+ <ref name="db.floatstyle.attribute"/>
+ </define>
+ <define name="db.informalfigure.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.informalfigure.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.informalfigure.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.informalfigure.pgwide.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.informalfigure.floatstyle.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.informalfigure.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.informalfigure">
+ <element name="informalfigure">
+ <ref name="db.informalfigure.attlist"/>
+ <ref name="db.informalfigure.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.mediaobject.content">
+ <choice>
+ <ref name="db.videoobject"/>
+ <ref name="db.audioobject"/>
+ <ref name="db.imageobject"/>
+ <ref name="db.textobject"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>mediaobject</db:refname>
+ <db:refpurpose>A displayed media object (video, audio, image, etc.)</db:refpurpose>
+ <define name="db.mediaobject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.mediaobject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.mediaobject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.mediaobject.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.mediaobject">
+ <element name="mediaobject">
+ <ref name="db.mediaobject.attlist"/>
+ <ref name="db.mediaobject.info"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.mediaobject.content"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.caption"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>inlinemediaobject</db:refname>
+ <db:refpurpose>An inline media object (video, audio, image, and so on)</db:refpurpose>
+ <define name="db.inlinemediaobject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.inlinemediaobject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.inlinemediaobject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.inlinemediaobject.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.inlinemediaobject">
+ <element name="inlinemediaobject">
+ <ref name="db.inlinemediaobject.attlist"/>
+ <ref name="db.inlinemediaobject.info"/>
+ <optional>
+ <ref name="db.alt"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.mediaobject.content"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>videoobject</db:refname>
+ <db:refpurpose>A wrapper for video data and its associated meta-information</db:refpurpose>
+ <define name="db.videoobject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.videoobject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.videoobject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.videoobject.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.videoobject">
+ <element name="videoobject">
+ <ref name="db.videoobject.attlist"/>
+ <ref name="db.videoobject.info"/>
+ <ref name="db.videodata"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>audioobject</db:refname>
+ <db:refpurpose>A wrapper for audio data and its associated meta-information</db:refpurpose>
+ <define name="db.audioobject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.audioobject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.audioobject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.audioobject.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.audioobject">
+ <element name="audioobject">
+ <ref name="db.audioobject.attlist"/>
+ <ref name="db.audioobject.info"/>
+ <ref name="db.audiodata"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.imageobject.content">
+ <ref name="db.imagedata"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>imageobject</db:refname>
+ <db:refpurpose>A wrapper for image data and its associated meta-information</db:refpurpose>
+ <define name="db.imageobject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.imageobject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.imageobject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.imageobject.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.imageobject">
+ <element name="imageobject">
+ <ref name="db.imageobject.attlist"/>
+ <ref name="db.imageobject.info"/>
+ <ref name="db.imageobject.content"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>textobject</db:refname>
+ <db:refpurpose>A wrapper for a text description of an object and its associated meta-information</db:refpurpose>
+ <define name="db.textobject.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.textobject.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.textobject.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.textobject.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.textobject">
+ <element name="textobject">
+ <ref name="db.textobject.attlist"/>
+ <ref name="db.textobject.info"/>
+ <choice>
+ <ref name="db.phrase"/>
+ <ref name="db.textdata"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>videodata</db:refname>
+ <db:refpurpose>Pointer to external video data</db:refpurpose>
+ <define name="db.videodata.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.videodata.align.enumeration">
+ <ref name="db.halign.enumeration"/>
+ </define>
+ <define name="db.videodata.align.attribute">
+ <attribute name="align">
+ <db:refpurpose>Specifies the (horizontal) alignment of the video data</db:refpurpose>
+ <ref name="db.videodata.align.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.videodata.valign.enumeration">
+ <ref name="db.valign.enumeration"/>
+ </define>
+ <define name="db.videodata.valign.attribute">
+ <attribute name="valign">
+ <db:refpurpose>Specifies the vertical alignment of the video data</db:refpurpose>
+ <ref name="db.videodata.valign.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.videodata.width.attribute">
+ <ref name="db.width.attribute"/>
+ </define>
+ <define name="db.videodata.depth.attribute">
+ <ref name="db.depth.attribute"/>
+ </define>
+ <define name="db.videodata.contentwidth.attribute">
+ <ref name="db.contentwidth.attribute"/>
+ </define>
+ <define name="db.videodata.contentdepth.attribute">
+ <ref name="db.contentdepth.attribute"/>
+ </define>
+ <define name="db.videodata.scalefit.enumeration">
+ <ref name="db.scalefit.enumeration"/>
+ </define>
+ <define name="db.videodata.scalefit.attribute">
+ <attribute name="scalefit">
+ <db:refpurpose>Determines if anamorphic scaling is forbidden</db:refpurpose>
+ <ref name="db.videodata.scalefit.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.videodata.scale.attribute">
+ <ref name="db.scale.attribute"/>
+ </define>
+ <define name="db.videodata.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.videodata.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.data.attributes"/>
+ <optional>
+ <ref name="db.videodata.align.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.valign.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.width.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.contentwidth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.scalefit.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.scale.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.depth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.videodata.contentdepth.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.videodata.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.videodata">
+ <element name="videodata">
+ <ref name="db.videodata.attlist"/>
+ <ref name="db.videodata.info"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>audiodata</db:refname>
+ <db:refpurpose>Pointer to external audio data</db:refpurpose>
+ <define name="db.audiodata.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.audiodata.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.audiodata.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.data.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.audiodata.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.audiodata">
+ <element name="audiodata">
+ <ref name="db.audiodata.attlist"/>
+ <ref name="db.audiodata.info"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>imagedata</db:refname>
+ <db:refpurpose>Pointer to external image data</db:refpurpose>
+ <define name="db.imagedata.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.imagedata.align.enumeration">
+ <ref name="db.halign.enumeration"/>
+ </define>
+ <define name="db.imagedata.align.attribute">
+ <attribute name="align">
+ <db:refpurpose>Specifies the (horizontal) alignment of the image data</db:refpurpose>
+ <ref name="db.imagedata.align.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.imagedata.valign.enumeration">
+ <ref name="db.valign.enumeration"/>
+ </define>
+ <define name="db.imagedata.valign.attribute">
+ <attribute name="valign">
+ <db:refpurpose>Specifies the vertical alignment of the image data</db:refpurpose>
+ <ref name="db.imagedata.valign.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.imagedata.width.attribute">
+ <ref name="db.width.attribute"/>
+ </define>
+ <define name="db.imagedata.depth.attribute">
+ <ref name="db.depth.attribute"/>
+ </define>
+ <define name="db.imagedata.contentwidth.attribute">
+ <ref name="db.contentwidth.attribute"/>
+ </define>
+ <define name="db.imagedata.contentdepth.attribute">
+ <ref name="db.contentdepth.attribute"/>
+ </define>
+ <define name="db.imagedata.scalefit.enumeration">
+ <ref name="db.scalefit.enumeration"/>
+ </define>
+ <define name="db.imagedata.scalefit.attribute">
+ <attribute name="scalefit">
+ <db:refpurpose>Determines if anamorphic scaling is forbidden</db:refpurpose>
+ <ref name="db.imagedata.scalefit.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.imagedata.scale.attribute">
+ <ref name="db.scale.attribute"/>
+ </define>
+ <define name="db.imagedata.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.imagedata.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.data.attributes"/>
+ <optional>
+ <ref name="db.imagedata.align.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.valign.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.width.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.contentwidth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.scalefit.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.scale.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.depth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.contentdepth.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.imagedata.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.imagedata">
+ <element name="imagedata">
+ <ref name="db.imagedata.attlist"/>
+ <ref name="db.imagedata.info"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>textdata</db:refname>
+ <db:refpurpose>Pointer to external text data</db:refpurpose>
+ <define name="db.textdata.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.textdata.encoding.attribute">
+ <attribute name="encoding">
+ <db:refpurpose>Identifies the encoding of the text in the external file</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.textdata.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.textdata.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.data.attributes"/>
+ <optional>
+ <ref name="db.textdata.encoding.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.textdata.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.textdata">
+ <element name="textdata">
+ <ref name="db.textdata.attlist"/>
+ <ref name="db.textdata.info"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>caption</db:refname>
+ <db:refpurpose>A caption</db:refpurpose>
+ <ctrl:exclude from="db.caption" exclude="db.formal.blocks"/>
+ <ctrl:exclude from="db.caption" exclude="db.sidebar"/>
+ <ctrl:exclude from="db.caption" exclude="db.task"/>
+ <define name="db.caption.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.caption.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.caption.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.caption.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.caption">
+ <element name="caption">
+ <ref name="db.caption.attlist"/>
+ <ref name="db.caption.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>address</db:refname>
+ <db:refpurpose>A real-world address, generally a postal address</db:refpurpose>
+ <define name="db.address.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.address.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.address.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.address">
+ <element name="address">
+ <ref name="db.address.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.personname"/>
+ <ref name="db.orgname"/>
+ <ref name="db.pob"/>
+ <ref name="db.street"/>
+ <ref name="db.city"/>
+ <ref name="db.state"/>
+ <ref name="db.postcode"/>
+ <ref name="db.country"/>
+ <ref name="db.phone"/>
+ <ref name="db.fax"/>
+ <ref name="db.email"/>
+ <ref name="db.uri"/>
+ <ref name="db.otheraddr"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>street</db:refname>
+ <db:refpurpose>A street address in an address</db:refpurpose>
+ <define name="db.street.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.street.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.street.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.street">
+ <element name="street">
+ <ref name="db.street.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>pob</db:refname>
+ <db:refpurpose>A post office box in an address</db:refpurpose>
+ <define name="db.pob.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.pob.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.pob.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.pob">
+ <element name="pob">
+ <ref name="db.pob.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>postcode</db:refname>
+ <db:refpurpose>A postal code in an address</db:refpurpose>
+ <define name="db.postcode.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.postcode.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.postcode.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.postcode">
+ <element name="postcode">
+ <ref name="db.postcode.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>city</db:refname>
+ <db:refpurpose>The name of a city in an address</db:refpurpose>
+ <define name="db.city.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.city.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.city.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.city">
+ <element name="city">
+ <ref name="db.city.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>state</db:refname>
+ <db:refpurpose>A state or province in an address</db:refpurpose>
+ <define name="db.state.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.state.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.state.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.state">
+ <element name="state">
+ <ref name="db.state.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>country</db:refname>
+ <db:refpurpose>The name of a country</db:refpurpose>
+ <define name="db.country.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.country.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.country.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.country">
+ <element name="country">
+ <ref name="db.country.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>phone</db:refname>
+ <db:refpurpose>A telephone number</db:refpurpose>
+ <define name="db.phone.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.phone.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.phone.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.phone">
+ <element name="phone">
+ <ref name="db.phone.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>fax</db:refname>
+ <db:refpurpose>A fax number</db:refpurpose>
+ <define name="db.fax.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.fax.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.fax.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.fax">
+ <element name="fax">
+ <ref name="db.fax.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>otheraddr</db:refname>
+ <db:refpurpose>Uncategorized information in address</db:refpurpose>
+ <define name="db.otheraddr.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.otheraddr.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.otheraddr.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.otheraddr">
+ <element name="otheraddr">
+ <ref name="db.otheraddr.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>affiliation</db:refname>
+ <db:refpurpose>The institutional affiliation of an individual</db:refpurpose>
+ <define name="db.affiliation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.affiliation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.affiliation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.affiliation">
+ <element name="affiliation">
+ <ref name="db.affiliation.attlist"/>
+ <optional>
+ <ref name="db.shortaffil"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.jobtitle"/>
+ </zeroOrMore>
+ <choice>
+ <optional>
+ <ref name="db.org"/>
+ </optional>
+ <group>
+ <optional>
+ <ref name="db.orgname"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.orgdiv"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.address"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>shortaffil</db:refname>
+ <db:refpurpose>A brief description of an affiliation</db:refpurpose>
+ <define name="db.shortaffil.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.shortaffil.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.shortaffil.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.shortaffil">
+ <element name="shortaffil">
+ <ref name="db.shortaffil.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>jobtitle</db:refname>
+ <db:refpurpose>The title of an individual in an organization</db:refpurpose>
+ <define name="db.jobtitle.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.jobtitle.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.jobtitle.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.jobtitle">
+ <element name="jobtitle">
+ <ref name="db.jobtitle.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>orgname</db:refname>
+ <db:refpurpose>The name of an organization</db:refpurpose>
+ <ctrl:other-attribute name="db.orgname.class.attrib" enum-name="db.orgname.class-enum.attribute" other-name="db.orgname.class-other.attributes"/>
+ <define name="db.orgname.class.enumeration">
+ <choice>
+ <value>consortium</value>
+ <a:documentation>A consortium</a:documentation>
+ <value>corporation</value>
+ <a:documentation>A corporation</a:documentation>
+ <value>informal</value>
+ <a:documentation>An informal organization</a:documentation>
+ <value>nonprofit</value>
+ <a:documentation>A non-profit organization</a:documentation>
+ </choice>
+ </define>
+ <define name="db.orgname.class-enum.attribute">
+ <attribute name="class">
+ <db:refpurpose>Specifies the nature of the organization</db:refpurpose>
+ <ref name="db.orgname.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.orgname.class-other.attributes">
+ <attribute name="class">
+ <db:refpurpose>Specifies the nature of the organization</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Indicates a non-standard organization class</a:documentation>
+ </attribute>
+ <attribute name="otherclass">
+ <db:refpurpose>Identifies the non-standard nature of the organization</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.orgname.class.attribute">
+ <choice>
+ <ref name="db.orgname.class-enum.attribute"/>
+ <ref name="db.orgname.class-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.orgname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.orgname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.orgname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.orgname.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.orgname">
+ <element name="orgname">
+ <ref name="db.orgname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>orgdiv</db:refname>
+ <db:refpurpose>A division of an organization</db:refpurpose>
+ <define name="db.orgdiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.orgdiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.orgdiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.orgdiv">
+ <element name="orgdiv">
+ <ref name="db.orgdiv.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>artpagenums</db:refname>
+ <db:refpurpose>The page numbers of an article as published</db:refpurpose>
+ <define name="db.artpagenums.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.artpagenums.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.artpagenums.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.artpagenums">
+ <element name="artpagenums">
+ <ref name="db.artpagenums.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>personname</db:refname>
+ <db:refpurpose>The personal name of an individual</db:refpurpose>
+ <define name="db.personname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.personname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.personname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.personname">
+ <element name="personname">
+ <ref name="db.personname.attlist"/>
+ <choice>
+ <ref name="db._text"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.honorific"/>
+ <ref name="db.firstname"/>
+ <ref name="db.surname"/>
+ <ref name="db.lineage"/>
+ <ref name="db.othername"/>
+ </choice>
+ </oneOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="db.honorific"/>
+ <ref name="db.givenname"/>
+ <ref name="db.surname"/>
+ <ref name="db.lineage"/>
+ <ref name="db.othername"/>
+ </choice>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.person.author.contentmodel">
+ <ref name="db.personname"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.personblurb"/>
+ <ref name="db.affiliation"/>
+ <ref name="db.email"/>
+ <ref name="db.uri"/>
+ <ref name="db.address"/>
+ <ref name="db.contrib"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="db.org.author.contentmodel">
+ <ref name="db.orgname"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.orgdiv"/>
+ <ref name="db.affiliation"/>
+ <ref name="db.email"/>
+ <ref name="db.uri"/>
+ <ref name="db.address"/>
+ <ref name="db.contrib"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+ <define name="db.credit.contentmodel">
+ <choice>
+ <ref name="db.person.author.contentmodel"/>
+ <ref name="db.org.author.contentmodel"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>author</db:refname>
+ <db:refpurpose>The name of an individual author</db:refpurpose>
+ <define name="db.author.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.author.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.author.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.author">
+ <element name="author">
+ <ref name="db.author.attlist"/>
+ <ref name="db.credit.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>authorgroup</db:refname>
+ <db:refpurpose>Wrapper for author information when a document has multiple authors or collaborators</db:refpurpose>
+ <define name="db.authorgroup.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.authorgroup.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.authorgroup.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.authorgroup">
+ <element name="authorgroup">
+ <ref name="db.authorgroup.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.author"/>
+ <ref name="db.editor"/>
+ <ref name="db.othercredit"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>collab</db:refname>
+ <db:refpurpose>Identifies a collaborator</db:refpurpose>
+ <define name="db.collab.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.collab.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.collab.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.collab">
+ <element name="collab">
+ <ref name="db.collab.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.person"/>
+ <ref name="db.personname"/>
+ <ref name="db.org"/>
+ <ref name="db.orgname"/>
+ </choice>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.affiliation"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>authorinitials</db:refname>
+ <db:refpurpose>The initials or other short identifier for an author</db:refpurpose>
+ <define name="db.authorinitials.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.authorinitials.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.authorinitials.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.authorinitials">
+ <element name="authorinitials">
+ <ref name="db.authorinitials.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>person</db:refname>
+ <db:refpurpose>A person and associated metadata</db:refpurpose>
+ <define name="db.person.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.person.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.person.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.person">
+ <element name="person">
+ <ref name="db.person.attlist"/>
+ <ref name="db.personname"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.address"/>
+ <ref name="db.affiliation"/>
+ <ref name="db.email"/>
+ <ref name="db.uri"/>
+ <ref name="db.personblurb"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>org</db:refname>
+ <db:refpurpose>An organization and associated metadata</db:refpurpose>
+ <define name="db.org.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.org.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.org.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.org">
+ <element name="org">
+ <ref name="db.org.attlist"/>
+ <ref name="db.orgname"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.address"/>
+ <ref name="db.affiliation"/>
+ <ref name="db.email"/>
+ <ref name="db.uri"/>
+ <ref name="db.orgdiv"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>confgroup</db:refname>
+ <db:refpurpose>A wrapper for document meta-information about a conference</db:refpurpose>
+ <define name="db.confgroup.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.confgroup.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.confgroup.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.confgroup">
+ <element name="confgroup">
+ <ref name="db.confgroup.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.confdates"/>
+ <ref name="db.conftitle"/>
+ <ref name="db.confnum"/>
+ <ref name="db.confsponsor"/>
+ <ref name="db.address"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>confdates</db:refname>
+ <db:refpurpose>The dates of a conference for which a document was written</db:refpurpose>
+ <define name="db.confdates.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.confdates.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.confdates.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.confdates">
+ <element name="confdates">
+ <ref name="db.confdates.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>conftitle</db:refname>
+ <db:refpurpose>The title of a conference for which a document was written</db:refpurpose>
+ <define name="db.conftitle.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.conftitle.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.conftitle.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.conftitle">
+ <element name="conftitle">
+ <ref name="db.conftitle.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>confnum</db:refname>
+ <db:refpurpose>An identifier, frequently numerical, associated with a conference for which a document was written</db:refpurpose>
+ <define name="db.confnum.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.confnum.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.confnum.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.confnum">
+ <element name="confnum">
+ <ref name="db.confnum.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>confsponsor</db:refname>
+ <db:refpurpose>The sponsor of a conference for which a document was written</db:refpurpose>
+ <define name="db.confsponsor.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.confsponsor.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.confsponsor.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.confsponsor">
+ <element name="confsponsor">
+ <ref name="db.confsponsor.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>contractnum</db:refname>
+ <db:refpurpose>The contract number of a document</db:refpurpose>
+ <define name="db.contractnum.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.contractnum.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.contractnum.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.contractnum">
+ <element name="contractnum">
+ <ref name="db.contractnum.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>contractsponsor</db:refname>
+ <db:refpurpose>The sponsor of a contract</db:refpurpose>
+ <define name="db.contractsponsor.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.contractsponsor.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.contractsponsor.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.contractsponsor">
+ <element name="contractsponsor">
+ <ref name="db.contractsponsor.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>copyright</db:refname>
+ <db:refpurpose>Copyright information about a document</db:refpurpose>
+ <define name="db.copyright.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.copyright.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.copyright.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.copyright">
+ <element name="copyright">
+ <ref name="db.copyright.attlist"/>
+ <oneOrMore>
+ <ref name="db.year"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.holder"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>year</db:refname>
+ <db:refpurpose>The year of publication of a document</db:refpurpose>
+ <define name="db.year.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.year.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.year.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.year">
+ <element name="year">
+ <ref name="db.year.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>holder</db:refname>
+ <db:refpurpose>The name of the individual or organization that holds a copyright</db:refpurpose>
+ <define name="db.holder.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.holder.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.holder.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.holder">
+ <element name="holder">
+ <ref name="db.holder.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.cover.contentmodel">
+ <choice>
+ <ref name="db.para.blocks"/>
+ <ref name="db.extension.blocks"/>
+ <ref name="db.list.blocks"/>
+ <ref name="db.informal.blocks"/>
+ <ref name="db.publishing.blocks"/>
+ <ref name="db.graphic.blocks"/>
+ <ref name="db.technical.blocks"/>
+ <ref name="db.verbatim.blocks"/>
+ <ref name="db.bridgehead"/>
+ <ref name="db.remark"/>
+ <ref name="db.revhistory"/>
+ </choice>
+ </define>
+ <div>
+ <db:refname>cover</db:refname>
+ <db:refpurpose>Additional content for the cover of a publication</db:refpurpose>
+ <define name="db.cover.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.cover.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.cover.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.cover">
+ <element name="cover">
+ <ref name="db.cover.attlist"/>
+ <oneOrMore>
+ <ref name="db.cover.contentmodel"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.date.contentmodel">
+ <choice>
+ <data type="date"/>
+ <data type="dateTime"/>
+ <data type="gYearMonth"/>
+ <data type="gYear"/>
+ <text/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>date</db:refname>
+ <db:refpurpose>The date of publication or revision of a document</db:refpurpose>
+ <define name="db.date.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.date.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.date.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.date">
+ <element name="date">
+ <ref name="db.date.attlist"/>
+ <ref name="db.date.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>edition</db:refname>
+ <db:refpurpose>The name or number of an edition of a document</db:refpurpose>
+ <define name="db.edition.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.edition.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.edition.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.edition">
+ <element name="edition">
+ <ref name="db.edition.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>editor</db:refname>
+ <db:refpurpose>The name of the editor of a document</db:refpurpose>
+ <define name="db.editor.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.editor.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.editor.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.editor">
+ <element name="editor">
+ <ref name="db.editor.attlist"/>
+ <ref name="db.credit.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>biblioid</db:refname>
+ <db:refpurpose>An identifier for a document</db:refpurpose>
+ <define name="db.biblioid.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.biblioid.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.biblioid.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.biblio.class.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.biblioid">
+ <element name="biblioid">
+ <ref name="db.biblioid.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>citebiblioid</db:refname>
+ <db:refpurpose>A citation of a bibliographic identifier</db:refpurpose>
+ <define name="db.citebiblioid.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.citebiblioid.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.citebiblioid.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.biblio.class.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.citebiblioid">
+ <element name="citebiblioid">
+ <ref name="db.citebiblioid.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliosource</db:refname>
+ <db:refpurpose>The source of a document</db:refpurpose>
+ <define name="db.bibliosource.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliosource.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliosource.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.biblio.class.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.bibliosource">
+ <element name="bibliosource">
+ <ref name="db.bibliosource.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliorelation</db:refname>
+ <db:refpurpose>The relationship of a document to another</db:refpurpose>
+ <ctrl:other-attribute name="db.bibliorelation.type.attrib" enum-name="db.bibliorelation.type-enum.attribute" other-name="db.bibliorelation.type-other.attributes"/>
+ <define name="db.bibliorelation.type.enumeration">
+ <choice>
+ <value>hasformat</value>
+ <a:documentation>The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format</a:documentation>
+ <value>haspart</value>
+ <a:documentation>The described resource includes the referenced resource either physically or logically</a:documentation>
+ <value>hasversion</value>
+ <a:documentation>The described resource has a version, edition, or adaptation, namely, the referenced resource</a:documentation>
+ <value>isformatof</value>
+ <a:documentation>The described resource is the same intellectual content of the referenced resource, but presented in another format</a:documentation>
+ <value>ispartof</value>
+ <a:documentation>The described resource is a physical or logical part of the referenced resource</a:documentation>
+ <value>isreferencedby</value>
+ <a:documentation>The described resource is referenced, cited, or otherwise pointed to by the referenced resource</a:documentation>
+ <value>isreplacedby</value>
+ <a:documentation>The described resource is supplanted, displaced, or superceded by the referenced resource</a:documentation>
+ <value>isrequiredby</value>
+ <a:documentation>The described resource is required by the referenced resource, either physically or logically</a:documentation>
+ <value>isversionof</value>
+ <a:documentation>The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format</a:documentation>
+ <value>references</value>
+ <a:documentation>The described resource references, cites, or otherwise points to the referenced resource</a:documentation>
+ <value>replaces</value>
+ <a:documentation>The described resource supplants, displaces, or supersedes the referenced resource</a:documentation>
+ <value>requires</value>
+ <a:documentation>The described resource requires the referenced resource to support its function, delivery, or coherence of content</a:documentation>
+ </choice>
+ </define>
+ <define name="db.bibliorelation.type-enum.attribute">
+ <optional>
+ <attribute name="type">
+ <db:refpurpose>Identifies the type of relationship</db:refpurpose>
+ <ref name="db.bibliorelation.type.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.bibliorelation.type-other.attributes">
+ <optional>
+ <attribute name="type">
+ <db:refpurpose>Identifies the type of relationship</db:refpurpose>
+ <value>othertype</value>
+ <a:documentation>The described resource has a non-standard relationship with the referenced resource</a:documentation>
+ </attribute>
+ </optional>
+ <attribute name="othertype">
+ <db:refpurpose>A keyword that identififes the type of the non-standard relationship</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.bibliorelation.type.attribute">
+ <choice>
+ <ref name="db.bibliorelation.type-enum.attribute"/>
+ <ref name="db.bibliorelation.type-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.bibliorelation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliorelation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliorelation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.biblio.class.attribute"/>
+ <ref name="db.bibliorelation.type.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.bibliorelation">
+ <element name="bibliorelation">
+ <ref name="db.bibliorelation.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>bibliocoverage</db:refname>
+ <db:refpurpose>The spatial or temporal coverage of a document</db:refpurpose>
+ <ctrl:other-attribute name="db.bibliocoverage.spatial.attrib" enum-name="db.bibliocoverage.spatial-enum.attribute" other-name="db.bibliocoverage.spatial-other.attributes"/>
+ <define name="db.bibliocoverage.spacial.enumeration">
+ <choice>
+ <value>dcmipoint</value>
+ <a:documentation>The DCMI Point identifies a point in space using its geographic coordinates</a:documentation>
+ <value>iso3166</value>
+ <a:documentation>ISO 3166 Codes for the representation of names of countries</a:documentation>
+ <value>dcmibox</value>
+ <a:documentation>The DCMI Box identifies a region of space using its geographic limits</a:documentation>
+ <value>tgn</value>
+ <a:documentation>The Getty Thesaurus of Geographic Names</a:documentation>
+ </choice>
+ </define>
+ <define name="db.bibliocoverage.spatial-enum.attribute">
+ <optional>
+ <attribute name="spatial">
+ <db:refpurpose>Specifies the type of spatial coverage</db:refpurpose>
+ <ref name="db.bibliocoverage.spacial.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.bibliocoverage.spatial-other.attributes">
+ <optional>
+ <attribute name="spatial">
+ <db:refpurpose>Specifies the type of spatial coverage</db:refpurpose>
+ <value>otherspatial</value>
+ <a:documentation>Identifies a non-standard type of coverage</a:documentation>
+ </attribute>
+ </optional>
+ <attribute name="otherspatial">
+ <db:refpurpose>A keyword that identifies the type of non-standard coverage</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.bibliocoverage.spatial.attribute">
+ <choice>
+ <ref name="db.bibliocoverage.spatial-enum.attribute"/>
+ <ref name="db.bibliocoverage.spatial-other.attributes"/>
+ </choice>
+ </define>
+ <ctrl:other-attribute name="db.bibliocoverage.temporal.attrib" enum-name="db.bibliocoverage.temporal-enum.attribute" other-name="db.bibliocoverage.temporal-other.attributes"/>
+ <define name="db.bibliocoverage.temporal.enumeration">
+ <choice>
+ <value>dcmiperiod</value>
+ <a:documentation>A specification of the limits of a time interval</a:documentation>
+ <value>w3c-dtf</value>
+ <a:documentation>W3C Encoding rules for dates and times—a profile based on ISO 8601</a:documentation>
+ </choice>
+ </define>
+ <define name="db.bibliocoverage.temporal-enum.attribute">
+ <optional>
+ <attribute name="temporal">
+ <db:refpurpose>Specifies the type of temporal coverage</db:refpurpose>
+ <ref name="db.bibliocoverage.temporal.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.bibliocoverage.temporal-other.attributes">
+ <optional>
+ <attribute name="temporal">
+ <db:refpurpose>Specifies the type of temporal coverage</db:refpurpose>
+ <value>othertemporal</value>
+ <a:documentation>Specifies a non-standard type of coverage</a:documentation>
+ </attribute>
+ </optional>
+ <attribute name="othertemporal">
+ <db:refpurpose>A keyword that identifies the type of non-standard coverage</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.bibliocoverage.temporal.attribute">
+ <choice>
+ <ref name="db.bibliocoverage.temporal-enum.attribute"/>
+ <ref name="db.bibliocoverage.temporal-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.bibliocoverage.coverage.attrib">
+ <interleave>
+ <ref name="db.bibliocoverage.spatial.attribute"/>
+ <ref name="db.bibliocoverage.temporal.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.bibliocoverage.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.bibliocoverage.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.bibliocoverage.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.bibliocoverage.coverage.attrib"/>
+ </interleave>
+ </define>
+ <define name="db.bibliocoverage">
+ <element name="bibliocoverage">
+ <ref name="db.bibliocoverage.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>legalnotice</db:refname>
+ <db:refpurpose>A statement of legal obligations or requirements</db:refpurpose>
+ <define name="db.legalnotice.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.legalnotice.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.legalnotice.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.legalnotice.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.legalnotice">
+ <element name="legalnotice">
+ <ref name="db.legalnotice.attlist"/>
+ <ref name="db.legalnotice.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>othercredit</db:refname>
+ <db:refpurpose>A person or entity, other than an author or editor, credited in a document</db:refpurpose>
+ <ctrl:other-attribute name="db.othercredit.class.attribute" enum-name="db.othercredit.class-enum.attribute" other-name="db.othercredit.class-other.attributes"/>
+ <define name="db.othercredit.class.enumeration">
+ <choice>
+ <value>copyeditor</value>
+ <a:documentation>A copy editor</a:documentation>
+ <value>graphicdesigner</value>
+ <a:documentation>A graphic designer</a:documentation>
+ <value>other</value>
+ <a:documentation>Some other contributor</a:documentation>
+ <value>productioneditor</value>
+ <a:documentation>A production editor</a:documentation>
+ <value>technicaleditor</value>
+ <a:documentation>A technical editor</a:documentation>
+ <value>translator</value>
+ <a:documentation>A translator</a:documentation>
+ <value>indexer</value>
+ <a:documentation>An indexer</a:documentation>
+ <value>proofreader</value>
+ <a:documentation>A proof-reader</a:documentation>
+ <value>coverdesigner</value>
+ <a:documentation>A cover designer</a:documentation>
+ <value>interiordesigner</value>
+ <a:documentation>An interior designer</a:documentation>
+ <value>illustrator</value>
+ <a:documentation>An illustrator</a:documentation>
+ <value>reviewer</value>
+ <a:documentation>A reviewer</a:documentation>
+ <value>typesetter</value>
+ <a:documentation>A typesetter</a:documentation>
+ <value>conversion</value>
+ <a:documentation>A converter (a persons responsible for conversion, not an application)</a:documentation>
+ </choice>
+ </define>
+ <define name="db.othercredit.class-enum.attribute">
+ <optional>
+ <attribute name="class">
+ <db:refpurpose>Identifies the nature of the contributor</db:refpurpose>
+ <ref name="db.othercredit.class.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.othercredit.class-other.attribute">
+ <attribute name="otherclass">
+ <db:refpurpose>Identifies the nature of the non-standard contribution</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.othercredit.class-other.attributes">
+ <interleave>
+ <attribute name="class">
+ <db:refpurpose>Identifies the nature of the contributor</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Identifies a non-standard contribution</a:documentation>
+ </attribute>
+ <ref name="db.othercredit.class-other.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.othercredit.class.attribute">
+ <choice>
+ <ref name="db.othercredit.class-enum.attribute"/>
+ <ref name="db.othercredit.class-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.othercredit.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.othercredit.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.othercredit.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.othercredit.class.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.othercredit">
+ <element name="othercredit">
+ <ref name="db.othercredit.attlist"/>
+ <ref name="db.credit.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>pagenums</db:refname>
+ <db:refpurpose>The numbers of the pages in a book, for use in a bibliographic entry</db:refpurpose>
+ <define name="db.pagenums.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.pagenums.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.pagenums.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.pagenums">
+ <element name="pagenums">
+ <ref name="db.pagenums.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>contrib</db:refname>
+ <db:refpurpose>A summary of the contributions made to a document by a credited source</db:refpurpose>
+ <define name="db.contrib.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.contrib.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.contrib.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.contrib">
+ <element name="contrib">
+ <ref name="db.contrib.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>honorific</db:refname>
+ <db:refpurpose>The title of a person</db:refpurpose>
+ <define name="db.honorific.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.honorific.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.honorific.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.honorific">
+ <element name="honorific">
+ <ref name="db.honorific.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>firstname</db:refname>
+ <db:refpurpose>A given name of a person</db:refpurpose>
+ <define name="db.firstname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.firstname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.firstname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.firstname">
+ <element name="firstname">
+ <ref name="db.firstname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>givenname</db:refname>
+ <db:refpurpose>The given name of a person</db:refpurpose>
+ <define name="db.givenname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.givenname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.givenname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.givenname">
+ <element name="givenname">
+ <ref name="db.givenname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>surname</db:refname>
+ <db:refpurpose>An inherited or family name; in western cultures the last name</db:refpurpose>
+ <define name="db.surname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.surname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.surname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.surname">
+ <element name="surname">
+ <ref name="db.surname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>lineage</db:refname>
+ <db:refpurpose>The portion of a person's name indicating a relationship to ancestors</db:refpurpose>
+ <define name="db.lineage.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.lineage.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.lineage.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.lineage">
+ <element name="lineage">
+ <ref name="db.lineage.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>othername</db:refname>
+ <db:refpurpose>A component of a person's name that is not a first name, surname, or lineage</db:refpurpose>
+ <define name="db.othername.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.othername.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.othername.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.othername">
+ <element name="othername">
+ <ref name="db.othername.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>printhistory</db:refname>
+ <db:refpurpose>The printing history of a document</db:refpurpose>
+ <define name="db.printhistory.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.printhistory.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.printhistory.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.printhistory">
+ <element name="printhistory">
+ <ref name="db.printhistory.attlist"/>
+ <oneOrMore>
+ <ref name="db.para.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>pubdate</db:refname>
+ <db:refpurpose>The date of publication of a document</db:refpurpose>
+ <define name="db.pubdate.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.pubdate.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.pubdate.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.pubdate">
+ <element name="pubdate">
+ <ref name="db.pubdate.attlist"/>
+ <ref name="db.date.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>publisher</db:refname>
+ <db:refpurpose>The publisher of a document</db:refpurpose>
+ <define name="db.publisher.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.publisher.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.publisher.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.publisher">
+ <element name="publisher">
+ <ref name="db.publisher.attlist"/>
+ <ref name="db.publishername"/>
+ <zeroOrMore>
+ <ref name="db.address"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>publishername</db:refname>
+ <db:refpurpose>The name of the publisher of a document</db:refpurpose>
+ <define name="db.publishername.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.publishername.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.publishername.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.publishername">
+ <element name="publishername">
+ <ref name="db.publishername.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>releaseinfo</db:refname>
+ <db:refpurpose>Information about a particular release of a document</db:refpurpose>
+ <define name="db.releaseinfo.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.releaseinfo.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.releaseinfo.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.releaseinfo">
+ <element name="releaseinfo">
+ <ref name="db.releaseinfo.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>revhistory</db:refname>
+ <db:refpurpose>A history of the revisions to a document</db:refpurpose>
+ <define name="db.revhistory.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.revhistory.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.revhistory.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.revhistory.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.revhistory">
+ <element name="revhistory">
+ <ref name="db.revhistory.attlist"/>
+ <ref name="db.revhistory.info"/>
+ <oneOrMore>
+ <ref name="db.revision"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>revision</db:refname>
+ <db:refpurpose>An entry describing a single revision in the history of the revisions to a document</db:refpurpose>
+ <define name="db.revision.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.revision.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.revision.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.revision">
+ <element name="revision">
+ <ref name="db.revision.attlist"/>
+ <optional>
+ <ref name="db.revnumber"/>
+ </optional>
+ <ref name="db.date"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.authorinitials"/>
+ <ref name="db.author"/>
+ </choice>
+ </zeroOrMore>
+ <optional>
+ <choice>
+ <ref name="db.revremark"/>
+ <ref name="db.revdescription"/>
+ </choice>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>revnumber</db:refname>
+ <db:refpurpose>A document revision number</db:refpurpose>
+ <define name="db.revnumber.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.revnumber.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.revnumber.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.revnumber">
+ <element name="revnumber">
+ <ref name="db.revnumber.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>revremark</db:refname>
+ <db:refpurpose>A description of a revision to a document</db:refpurpose>
+ <define name="db.revremark.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.revremark.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.revremark.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.revremark">
+ <element name="revremark">
+ <ref name="db.revremark.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>revdescription</db:refname>
+ <db:refpurpose>A extended description of a revision to a document</db:refpurpose>
+ <define name="db.revdescription.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.revdescription.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.revdescription.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.revdescription">
+ <element name="revdescription">
+ <ref name="db.revdescription.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>seriesvolnums</db:refname>
+ <db:refpurpose>Numbers of the volumes in a series of books</db:refpurpose>
+ <define name="db.seriesvolnums.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.seriesvolnums.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.seriesvolnums.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.seriesvolnums">
+ <element name="seriesvolnums">
+ <ref name="db.seriesvolnums.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>volumenum</db:refname>
+ <db:refpurpose>The volume number of a document in a set (as of books in a set or articles in a journal)</db:refpurpose>
+ <define name="db.volumenum.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.volumenum.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.volumenum.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.volumenum">
+ <element name="volumenum">
+ <ref name="db.volumenum.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>issuenum</db:refname>
+ <db:refpurpose>The number of an issue of a journal</db:refpurpose>
+ <define name="db.issuenum.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.issuenum.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.issuenum.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.issuenum">
+ <element name="issuenum">
+ <ref name="db.issuenum.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>package</db:refname>
+ <db:refpurpose>A software or application package</db:refpurpose>
+ <define name="db.package.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.package.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.package.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.package">
+ <element name="package">
+ <ref name="db.package.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>email</db:refname>
+ <db:refpurpose>An email address</db:refpurpose>
+ <define name="db.email.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.email.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.email.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.email">
+ <element name="email">
+ <ref name="db.email.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>lineannotation</db:refname>
+ <db:refpurpose>A comment on a line in a verbatim listing</db:refpurpose>
+ <define name="db.lineannotation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.lineannotation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.lineannotation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.lineannotation">
+ <element name="lineannotation">
+ <ref name="db.lineannotation.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>parameter</db:refname>
+ <db:refpurpose>A value or a symbolic reference to a value</db:refpurpose>
+ <define name="db.parameter.class.enumeration">
+ <choice>
+ <value>command</value>
+ <a:documentation>A command</a:documentation>
+ <value>function</value>
+ <a:documentation>A function</a:documentation>
+ <value>option</value>
+ <a:documentation>An option</a:documentation>
+ </choice>
+ </define>
+ <define name="db.parameter.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of parameter</db:refpurpose>
+ <ref name="db.parameter.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.parameter.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.parameter.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.parameter.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.parameter.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.parameter">
+ <element name="parameter">
+ <ref name="db.parameter.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.replaceable.inlines">
+ <ref name="db._text"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>replaceable</db:refname>
+ <db:refpurpose>Content that may or must be replaced by the user</db:refpurpose>
+ <define name="db.replaceable.class.enumeration">
+ <choice>
+ <value>command</value>
+ <a:documentation>A command</a:documentation>
+ <value>function</value>
+ <a:documentation>A function</a:documentation>
+ <value>option</value>
+ <a:documentation>An option</a:documentation>
+ <value>parameter</value>
+ <a:documentation>A parameter</a:documentation>
+ </choice>
+ </define>
+ <define name="db.replaceable.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the nature of the replaceable text</db:refpurpose>
+ <ref name="db.replaceable.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.replaceable.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.replaceable.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.replaceable.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.replaceable.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.replaceable">
+ <element name="replaceable">
+ <ref name="db.replaceable.attlist"/>
+ <zeroOrMore>
+ <ref name="db.replaceable.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>uri</db:refname>
+ <db:refpurpose>A Uniform Resource Identifier</db:refpurpose>
+ <define name="db.uri.type.attribute">
+ <optional>
+ <attribute name="type">
+ <db:refpurpose>Identifies the type of URI specified</db:refpurpose>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.uri.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.uri.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.uri.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.uri.type.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.uri">
+ <element name="uri">
+ <ref name="db.uri.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>abbrev</db:refname>
+ <db:refpurpose>An abbreviation, especially one followed by a period</db:refpurpose>
+ <define name="db.abbrev.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.abbrev.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.abbrev.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.abbrev">
+ <element name="abbrev">
+ <ref name="db.abbrev.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ <ref name="db.trademark"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>acronym</db:refname>
+ <db:refpurpose>An often pronounceable word made from the initial (or selected) letters of a name or phrase</db:refpurpose>
+ <define name="db.acronym.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.acronym.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.acronym.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.acronym">
+ <element name="acronym">
+ <ref name="db.acronym.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.superscript"/>
+ <ref name="db.subscript"/>
+ <ref name="db.trademark"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>citation</db:refname>
+ <db:refpurpose>An inline bibliographic reference to another published work</db:refpurpose>
+ <define name="db.citation.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.citation.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.citation.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.citation">
+ <element name="citation">
+ <ref name="db.citation.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>citerefentry</db:refname>
+ <db:refpurpose>A citation to a reference page</db:refpurpose>
+ <define name="db.citerefentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.citerefentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.citerefentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.citerefentry">
+ <element name="citerefentry">
+ <ref name="db.citerefentry.attlist"/>
+ <ref name="db.refentrytitle"/>
+ <optional>
+ <ref name="db.manvolnum"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refentrytitle</db:refname>
+ <db:refpurpose>The title of a reference page</db:refpurpose>
+ <define name="db.refentrytitle.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refentrytitle.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refentrytitle.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refentrytitle">
+ <element name="refentrytitle">
+ <ref name="db.refentrytitle.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>manvolnum</db:refname>
+ <db:refpurpose>A reference volume number</db:refpurpose>
+ <define name="db.manvolnum.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.manvolnum.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.manvolnum.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.manvolnum">
+ <element name="manvolnum">
+ <ref name="db.manvolnum.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>citetitle</db:refname>
+ <db:refpurpose>The title of a cited work</db:refpurpose>
+ <define name="db.citetitle.pubwork.enumeration">
+ <choice>
+ <value>article</value>
+ <a:documentation>An article</a:documentation>
+ <value>bbs</value>
+ <a:documentation>A bulletin board system</a:documentation>
+ <value>book</value>
+ <a:documentation>A book</a:documentation>
+ <value>cdrom</value>
+ <a:documentation>A CD-ROM</a:documentation>
+ <value>chapter</value>
+ <a:documentation>A chapter (as of a book)</a:documentation>
+ <value>dvd</value>
+ <a:documentation>A DVD</a:documentation>
+ <value>emailmessage</value>
+ <a:documentation>An email message</a:documentation>
+ <value>gopher</value>
+ <a:documentation>A gopher page</a:documentation>
+ <value>journal</value>
+ <a:documentation>A journal</a:documentation>
+ <value>manuscript</value>
+ <a:documentation>A manuscript</a:documentation>
+ <value>newsposting</value>
+ <a:documentation>A posting to a newsgroup</a:documentation>
+ <value>part</value>
+ <a:documentation>A part (as of a book)</a:documentation>
+ <value>refentry</value>
+ <a:documentation>A reference entry</a:documentation>
+ <value>section</value>
+ <a:documentation>A section (as of a book or article)</a:documentation>
+ <value>series</value>
+ <a:documentation>A series</a:documentation>
+ <value>set</value>
+ <a:documentation>A set (as of books)</a:documentation>
+ <value>webpage</value>
+ <a:documentation>A web page</a:documentation>
+ <value>wiki</value>
+ <a:documentation>A wiki page</a:documentation>
+ </choice>
+ </define>
+ <define name="db.citetitle.pubwork.attribute">
+ <attribute name="pubwork">
+ <db:refpurpose>Identifies the nature of the publication being cited</db:refpurpose>
+ <ref name="db.citetitle.pubwork.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.citetitle.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.citetitle.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.citetitle.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.citetitle.pubwork.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.citetitle">
+ <element name="citetitle">
+ <ref name="db.citetitle.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>emphasis</db:refname>
+ <db:refpurpose>Emphasized text</db:refpurpose>
+ <define name="db.emphasis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.emphasis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.emphasis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.emphasis">
+ <element name="emphasis">
+ <ref name="db.emphasis.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>emphasis</db:refname>
+ <db:refpurpose>A limited span of emphasized text</db:refpurpose>
+ <define name="db._emphasis">
+ <element name="emphasis">
+ <ref name="db.emphasis.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>foreignphrase</db:refname>
+ <db:refpurpose>A word or phrase in a language other than the primary language of the document</db:refpurpose>
+ <define name="db.foreignphrase.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.foreignphrase.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.foreignphrase.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.foreignphrase">
+ <element name="foreignphrase">
+ <ref name="db.foreignphrase.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="db.general.inlines"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>foreignphrase</db:refname>
+ <db:refpurpose>A limited word or phrase in a language other than the primary language of the document</db:refpurpose>
+ <define name="db._foreignphrase.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db._foreignphrase.attlist">
+ <interleave>
+ <optional>
+ <ref name="db._foreignphrase.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db._foreignphrase">
+ <element name="foreignphrase">
+ <ref name="db._foreignphrase.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>phrase</db:refname>
+ <db:refpurpose>A span of text</db:refpurpose>
+ <define name="db.phrase.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.phrase.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.phrase.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.phrase">
+ <element name="phrase">
+ <ref name="db.phrase.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>phrase</db:refname>
+ <db:refpurpose>A limited span of text</db:refpurpose>
+ <define name="db._phrase">
+ <element name="phrase">
+ <ref name="db.phrase.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>quote</db:refname>
+ <db:refpurpose>An inline quotation</db:refpurpose>
+ <define name="db.quote.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.quote.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.quote.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.quote">
+ <element name="quote">
+ <ref name="db.quote.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>quote</db:refname>
+ <db:refpurpose>A limited inline quotation</db:refpurpose>
+ <define name="db._quote.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db._quote.attlist">
+ <interleave>
+ <optional>
+ <ref name="db._quote.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db._quote">
+ <element name="quote">
+ <ref name="db._quote.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>subscript</db:refname>
+ <db:refpurpose>A subscript (as in H<db:subscript>2</db:subscript>
+O, the molecular formula for water)</db:refpurpose>
+ <define name="db.subscript.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.subscript.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.subscript.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.subscript">
+ <element name="subscript">
+ <ref name="db.subscript.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>superscript</db:refname>
+ <db:refpurpose>A superscript (as in x<db:superscript>2</db:superscript>
+, the mathematical notation for x multiplied by itself)</db:refpurpose>
+ <define name="db.superscript.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.superscript.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.superscript.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.superscript">
+ <element name="superscript">
+ <ref name="db.superscript.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>trademark</db:refname>
+ <db:refpurpose>A trademark</db:refpurpose>
+ <define name="db.trademark.class.enumeration">
+ <choice>
+ <value>copyright</value>
+ <a:documentation>A copyright</a:documentation>
+ <value>registered</value>
+ <a:documentation>A registered copyright</a:documentation>
+ <value>service</value>
+ <a:documentation>A service</a:documentation>
+ <value>trade</value>
+ <a:documentation>A trademark</a:documentation>
+ </choice>
+ </define>
+ <define name="db.trademark.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of trade mark</db:refpurpose>
+ <ref name="db.trademark.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.trademark.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.trademark.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.trademark.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.trademark.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.trademark">
+ <element name="trademark">
+ <ref name="db.trademark.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>wordasword</db:refname>
+ <db:refpurpose>A word meant specifically as a word and not representing anything else</db:refpurpose>
+ <define name="db.wordasword.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.wordasword.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.wordasword.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.wordasword">
+ <element name="wordasword">
+ <ref name="db.wordasword.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>footnoteref</db:refname>
+ <db:refpurpose>A cross reference to a footnote (a footnote mark)</db:refpurpose>
+ <define name="db.footnoteref.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.footnoteref.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.footnoteref.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.footnoteref.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.linkend.attribute"/>
+ <optional>
+ <ref name="db.footnoteref.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.footnoteref">
+ <element name="footnoteref">
+ <s:pattern name="Footnote reference type constraint">
+ <s:rule context="db:footnoteref">
+ <s:assert test="local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'">@linkend on footnoteref must point to a footnote.</s:assert>
+ </s:rule>
+ </s:pattern>
+ <ref name="db.footnoteref.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>xref</db:refname>
+ <db:refpurpose>A cross reference to another part of the document</db:refpurpose>
+ <define name="db.xref.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.xref.xrefstyle.attribute">
+ <ref name="db.xrefstyle.attribute"/>
+ </define>
+ <define name="db.xref.endterm.attribute">
+ <ref name="db.endterm.attribute"/>
+ </define>
+ <define name="db.xref.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.xref.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.req.linking.attributes"/>
+ <optional>
+ <ref name="db.xref.xrefstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xref.endterm.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.xref">
+ <element name="xref">
+ <ref name="db.xref.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>link</db:refname>
+ <db:refpurpose>A hypertext link</db:refpurpose>
+ <define name="db.link.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.link.xrefstyle.attribute">
+ <ref name="db.xrefstyle.attribute"/>
+ </define>
+ <define name="db.link.endterm.attribute">
+ <ref name="db.endterm.attribute"/>
+ </define>
+ <define name="db.link.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.link.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.req.linking.attributes"/>
+ <optional>
+ <ref name="db.link.xrefstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.link.endterm.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.link">
+ <element name="link">
+ <ref name="db.link.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>olink</db:refname>
+ <db:refpurpose>A link that addresses its target indirectly</db:refpurpose>
+ <define name="db.olink.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.olink.xrefstyle.attribute">
+ <ref name="db.xrefstyle.attribute"/>
+ </define>
+ <define name="db.olink.localinfo.attribute">
+ <attribute name="localinfo">
+ <db:refpurpose>Holds additional information that may be used by the application when resolving the link</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.olink.targetdoc.attribute">
+ <attribute name="targetdoc">
+ <db:refpurpose>Specifies the URI of the document in which the link target appears</db:refpurpose>
+ <data type="anyURI"/>
+ </attribute>
+ </define>
+ <define name="db.olink.targetptr.attribute">
+ <attribute name="targetptr">
+ <db:refpurpose>Specifies the location of the link target in the document</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.olink.type.attribute">
+ <attribute name="type">
+ <db:refpurpose>Identifies application-specific customization of the link behavior</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.olink.attlist">
+ <interleave>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.olink.targetdoc.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.olink.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.olink.xrefstyle.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.olink.localinfo.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.olink.targetptr.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.olink.type.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.olink">
+ <element name="olink">
+ <ref name="db.olink.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>anchor</db:refname>
+ <db:refpurpose>A spot in the document</db:refpurpose>
+ <define name="db.anchor.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.anchor.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.anchor.role.attribute"/>
+ </optional>
+ <ref name="db.common.idreq.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.anchor">
+ <element name="anchor">
+ <ref name="db.anchor.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>alt</db:refname>
+ <db:refpurpose>A text-only annotation, often used for accessibility</db:refpurpose>
+ <define name="db.alt.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.alt.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.alt.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.alt">
+ <element name="alt">
+ <ref name="db.alt.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="db.inlinemediaobject"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/product.rng b/slides/schema/relaxng/product.rng
new file mode 100644
index 0000000..4435445
--- /dev/null
+++ b/slides/schema/relaxng/product.rng
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="db.info.elements" combine="choice">
+ <choice>
+ <ref name="db.productname"/>
+ <ref name="db.productnumber"/>
+ </choice>
+ </define>
+ <define name="db.product.inlines" combine="choice">
+ <choice>
+ <ref name="db.productnumber"/>
+ <ref name="db.productname"/>
+ <ref name="db.database"/>
+ <ref name="db.application"/>
+ <ref name="db.hardware"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>productname</db:refname>
+ <db:refpurpose>The formal name of a product</db:refpurpose>
+ <define name="db.productname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.productname.class.enumeration">
+ <choice>
+ <value>copyright</value>
+ <a:documentation>A name with a copyright</a:documentation>
+ <value>registered</value>
+ <a:documentation>A name with a registered copyright</a:documentation>
+ <value>service</value>
+ <a:documentation>A name of a service</a:documentation>
+ <value>trade</value>
+ <a:documentation>A name which is trademarked</a:documentation>
+ </choice>
+ </define>
+ <define name="db.productname.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Specifies the class of product name</db:refpurpose>
+ <ref name="db.productname.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.productname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.productname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.productname.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.productname">
+ <element name="productname">
+ <ref name="db.productname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>productnumber</db:refname>
+ <db:refpurpose>A number assigned to a product</db:refpurpose>
+ <define name="db.productnumber.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.productnumber.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.productnumber.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.productnumber">
+ <element name="productnumber">
+ <ref name="db.productnumber.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>database</db:refname>
+ <db:refpurpose>The name of a database, or part of a database</db:refpurpose>
+ <define name="db.database.class.enumeration">
+ <choice>
+ <value>altkey</value>
+ <a:documentation>An alternate or secondary key</a:documentation>
+ <value>constraint</value>
+ <a:documentation>A constraint</a:documentation>
+ <value>datatype</value>
+ <a:documentation>A data type</a:documentation>
+ <value>field</value>
+ <a:documentation>A field</a:documentation>
+ <value>foreignkey</value>
+ <a:documentation>A foreign key</a:documentation>
+ <value>group</value>
+ <a:documentation>A group</a:documentation>
+ <value>index</value>
+ <a:documentation>An index</a:documentation>
+ <value>key1</value>
+ <a:documentation>The first or primary key</a:documentation>
+ <value>key2</value>
+ <a:documentation>An alternate or secondary key</a:documentation>
+ <value>name</value>
+ <a:documentation>A name</a:documentation>
+ <value>primarykey</value>
+ <a:documentation>The primary key</a:documentation>
+ <value>procedure</value>
+ <a:documentation>A (stored) procedure</a:documentation>
+ <value>record</value>
+ <a:documentation>A record</a:documentation>
+ <value>rule</value>
+ <a:documentation>A rule</a:documentation>
+ <value>secondarykey</value>
+ <a:documentation>The secondary key</a:documentation>
+ <value>table</value>
+ <a:documentation>A table</a:documentation>
+ <value>user</value>
+ <a:documentation>A user</a:documentation>
+ <value>view</value>
+ <a:documentation>A view</a:documentation>
+ </choice>
+ </define>
+ <define name="db.database.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of database artifact</db:refpurpose>
+ <ref name="db.database.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.database.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.database.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.database.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.database.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.database">
+ <element name="database">
+ <ref name="db.database.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>application</db:refname>
+ <db:refpurpose>The name of a software program</db:refpurpose>
+ <define name="db.application.class.enumeration">
+ <choice>
+ <value>hardware</value>
+ <a:documentation>A hardware application</a:documentation>
+ <value>software</value>
+ <a:documentation>A software application</a:documentation>
+ </choice>
+ </define>
+ <define name="db.application.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Identifies the class of application</db:refpurpose>
+ <ref name="db.application.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.application.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.application.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.application.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.application.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.application">
+ <element name="application">
+ <ref name="db.application.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>hardware</db:refname>
+ <db:refpurpose>A physical part of a computer system</db:refpurpose>
+ <define name="db.hardware.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.hardware.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.hardware.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.hardware">
+ <element name="hardware">
+ <ref name="db.hardware.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/programming.rng b/slides/schema/relaxng/programming.rng
new file mode 100644
index 0000000..6a14e9d
--- /dev/null
+++ b/slides/schema/relaxng/programming.rng
@@ -0,0 +1,1116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.synopsis.blocks"/>
+ <ref name="db.funcsynopsisinfo"/>
+ <ref name="db.classsynopsisinfo"/>
+ </choice>
+ </start>
+ <define name="db.domain.inlines" combine="choice">
+ <ref name="db.programming.inlines"/>
+ </define>
+ <define name="db.nopara.blocks" combine="choice">
+ <ref name="db.synopsis.blocks"/>
+ </define>
+ <define name="db.cover.contentmodel" combine="choice">
+ <ref name="db.synopsis.blocks"/>
+ </define>
+ <define name="db.verbatim.blocks" combine="choice">
+ <choice>
+ <ref name="db.programlisting"/>
+ <ref name="db.synopsis"/>
+ </choice>
+ </define>
+ <define name="db.programming.inlines">
+ <choice>
+ <ref name="db.function"/>
+ <ref name="db.parameter"/>
+ <ref name="db.varname"/>
+ <ref name="db.returnvalue"/>
+ <ref name="db.type"/>
+ <ref name="db.classname"/>
+ <ref name="db.exceptionname"/>
+ <ref name="db.interfacename"/>
+ <ref name="db.methodname"/>
+ <ref name="db.modifier"/>
+ <ref name="db.initializer"/>
+ <ref name="db.oo.inlines"/>
+ </choice>
+ </define>
+ <define name="db.oo.inlines">
+ <choice>
+ <ref name="db.ooclass"/>
+ <ref name="db.ooexception"/>
+ <ref name="db.oointerface"/>
+ </choice>
+ </define>
+ <define name="db.synopsis.blocks">
+ <choice>
+ <ref name="db.funcsynopsis"/>
+ <ref name="db.classsynopsis"/>
+ <ref name="db.methodsynopsis"/>
+ <ref name="db.constructorsynopsis"/>
+ <ref name="db.destructorsynopsis"/>
+ <ref name="db.fieldsynopsis"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>synopsis</db:refname>
+ <db:refpurpose>A general-purpose element for representing the syntax of commands or functions</db:refpurpose>
+ <define name="db.synopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.synopsis.label.attribute">
+ <ref name="db.label.attribute"/>
+ </define>
+ <define name="db.synopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.synopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ <optional>
+ <ref name="db.synopsis.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.synopsis">
+ <element name="synopsis">
+ <ref name="db.synopsis.attlist"/>
+ <ref name="db.verbatim.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>funcsynopsis</db:refname>
+ <db:refpurpose>The syntax summary for a function definition</db:refpurpose>
+ <define name="db.funcsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.funcsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.funcsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.language.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.funcsynopsis.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.funcsynopsis">
+ <element name="funcsynopsis">
+ <ref name="db.funcsynopsis.attlist"/>
+ <ref name="db.funcsynopsis.info"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.funcsynopsisinfo"/>
+ <ref name="db.funcprototype"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>funcsynopsisinfo</db:refname>
+ <db:refpurpose>Information supplementing the funcdefs of a funcsynopsis</db:refpurpose>
+ <define name="db.funcsynopsisinfo.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.funcsynopsisinfo.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.funcsynopsisinfo.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.funcsynopsisinfo">
+ <element name="funcsynopsisinfo">
+ <ref name="db.funcsynopsisinfo.attlist"/>
+ <ref name="db.verbatim.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>funcprototype</db:refname>
+ <db:refpurpose>The prototype of a function</db:refpurpose>
+ <define name="db.funcprototype.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.funcprototype.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.funcprototype.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.funcprototype">
+ <element name="funcprototype">
+ <ref name="db.funcprototype.attlist"/>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <ref name="db.funcdef"/>
+ <choice>
+ <ref name="db.void"/>
+ <ref name="db.varargs"/>
+ <group>
+ <oneOrMore>
+ <choice>
+ <ref name="db.paramdef"/>
+ <ref name="db.group.paramdef"/>
+ </choice>
+ </oneOrMore>
+ <optional>
+ <ref name="db.varargs"/>
+ </optional>
+ </group>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>funcdef</db:refname>
+ <db:refpurpose>A function (subroutine) name and its return type</db:refpurpose>
+ <define name="db.funcdef.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.funcdef.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.funcdef.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.funcdef">
+ <element name="funcdef">
+ <ref name="db.funcdef.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.type"/>
+ <ref name="db.function"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>function</db:refname>
+ <db:refpurpose>The name of a function or subroutine, as in a programming language</db:refpurpose>
+ <define name="db.function.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.function.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.function.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.function">
+ <element name="function">
+ <ref name="db.function.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>void</db:refname>
+ <db:refpurpose>An empty element in a function synopsis indicating that the function in question takes no arguments</db:refpurpose>
+ <define name="db.void.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.void.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.void.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.void">
+ <element name="void">
+ <ref name="db.void.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>varargs</db:refname>
+ <db:refpurpose>An empty element in a function synopsis indicating a variable number of arguments</db:refpurpose>
+ <define name="db.varargs.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.varargs.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.varargs.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.varargs">
+ <element name="varargs">
+ <ref name="db.varargs.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>group</db:refname>
+ <db:refpurpose>A group of parameters</db:refpurpose>
+ <define name="db.group.paramdef.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.group.paramdef.choice.attribute">
+ <ref name="db.choice.opt.attribute"/>
+ </define>
+ <define name="db.group.paramdef.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.group.paramdef.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.group.paramdef.choice.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.group.paramdef">
+ <element name="group">
+ <ref name="db.group.paramdef.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.paramdef"/>
+ <ref name="db.group.paramdef"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>paramdef</db:refname>
+ <db:refpurpose>Information about a function parameter in a programming language</db:refpurpose>
+ <define name="db.paramdef.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.paramdef.choice.enumeration">
+ <choice>
+ <value>opt</value>
+ <a:documentation>Formatted to indicate that it is optional.</a:documentation>
+ <value>req</value>
+ <a:documentation>Formatted to indicate that it is required.</a:documentation>
+ </choice>
+ </define>
+ <define name="db.paramdef.choice.attribute">
+ <attribute name="choice" a:defaultValue="opt">
+ <db:refpurpose>Indicates optionality.</db:refpurpose>
+ <ref name="db.paramdef.choice.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.paramdef.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.paramdef.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.paramdef.choice.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.paramdef">
+ <element name="paramdef">
+ <ref name="db.paramdef.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._text"/>
+ <ref name="db.initializer"/>
+ <ref name="db.type"/>
+ <ref name="db.parameter"/>
+ <ref name="db.funcparams"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>funcparams</db:refname>
+ <db:refpurpose>Parameters for a function referenced through a function pointer in a synopsis</db:refpurpose>
+ <define name="db.funcparams.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.funcparams.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.funcparams.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.funcparams">
+ <element name="funcparams">
+ <ref name="db.funcparams.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>classsynopsis</db:refname>
+ <db:refpurpose>The syntax summary for a class definition</db:refpurpose>
+ <define name="db.classsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.classsynopsis.class.enumeration">
+ <choice>
+ <value>class</value>
+ <a:documentation>This is the synopsis of a class</a:documentation>
+ <value>interface</value>
+ <a:documentation>This is the synopsis of an interface</a:documentation>
+ </choice>
+ </define>
+ <define name="db.classsynopsis.class.attribute">
+ <attribute name="class">
+ <db:refpurpose>Specifies the nature of the synopsis</db:refpurpose>
+ <ref name="db.classsynopsis.class.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.classsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.classsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.language.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.classsynopsis.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.classsynopsis">
+ <element name="classsynopsis">
+ <ref name="db.classsynopsis.attlist"/>
+ <oneOrMore>
+ <ref name="db.oo.inlines"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.classsynopsisinfo"/>
+ <ref name="db.methodsynopsis"/>
+ <ref name="db.constructorsynopsis"/>
+ <ref name="db.destructorsynopsis"/>
+ <ref name="db.fieldsynopsis"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>classsynopsisinfo</db:refname>
+ <db:refpurpose>Information supplementing the contents of a classsynopsis</db:refpurpose>
+ <define name="db.classsynopsisinfo.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.classsynopsisinfo.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.classsynopsisinfo.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.classsynopsisinfo">
+ <element name="classsynopsisinfo">
+ <ref name="db.classsynopsisinfo.attlist"/>
+ <ref name="db.verbatim.contentmodel"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>ooclass</db:refname>
+ <db:refpurpose>A class in an object-oriented programming language</db:refpurpose>
+ <define name="db.ooclass.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.ooclass.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.ooclass.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.ooclass">
+ <element name="ooclass">
+ <ref name="db.ooclass.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.package"/>
+ <ref name="db.modifier"/>
+ </choice>
+ </zeroOrMore>
+ <ref name="db.classname"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>oointerface</db:refname>
+ <db:refpurpose>An interface in an object-oriented programming language</db:refpurpose>
+ <define name="db.oointerface.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.oointerface.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.oointerface.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.oointerface">
+ <element name="oointerface">
+ <ref name="db.oointerface.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.package"/>
+ <ref name="db.modifier"/>
+ </choice>
+ </zeroOrMore>
+ <ref name="db.interfacename"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>ooexception</db:refname>
+ <db:refpurpose>An exception in an object-oriented programming language</db:refpurpose>
+ <define name="db.ooexception.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.ooexception.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.ooexception.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.ooexception">
+ <element name="ooexception">
+ <ref name="db.ooexception.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.package"/>
+ <ref name="db.modifier"/>
+ </choice>
+ </zeroOrMore>
+ <ref name="db.exceptionname"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.modifier.xml.space.attribute">
+ <attribute name="xml:space">
+ <db:refpurpose>Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example).</db:refpurpose>
+ <value>preserve</value>
+ <a:documentation>Extra whitespace and line breaks must be preserved.</a:documentation>
+ <!--
+ Ideally the definition of xml:space used on modifier would be
+ different from the definition used on the verbatim elements. The
+ verbatim elements forbid the use of xml:space="default" which
+ wouldn't be a problem on modifier. But doing that causes the
+ generated XSD schemas to be broken so I'm just reusing the existing
+ definition for now. It won't be backwards incompatible to fix this
+ problem in the future.
+ | ## Extra whitespace and line breaks are not preserved.
+ "default"
+ -->
+ </attribute>
+ </define>
+ <div>
+ <db:refname>modifier</db:refname>
+ <db:refpurpose>Modifiers in a synopsis</db:refpurpose>
+ <define name="db.modifier.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.modifier.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.modifier.xml.space.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.modifier.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.modifier">
+ <element name="modifier">
+ <ref name="db.modifier.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>interfacename</db:refname>
+ <db:refpurpose>The name of an interface</db:refpurpose>
+ <define name="db.interfacename.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.interfacename.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.interfacename.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.interfacename">
+ <element name="interfacename">
+ <ref name="db.interfacename.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>exceptionname</db:refname>
+ <db:refpurpose>The name of an exception</db:refpurpose>
+ <define name="db.exceptionname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.exceptionname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.exceptionname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.exceptionname">
+ <element name="exceptionname">
+ <ref name="db.exceptionname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>fieldsynopsis</db:refname>
+ <db:refpurpose>The name of a field in a class definition</db:refpurpose>
+ <define name="db.fieldsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.fieldsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.fieldsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.language.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.fieldsynopsis">
+ <element name="fieldsynopsis">
+ <ref name="db.fieldsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.type"/>
+ </optional>
+ <ref name="db.varname"/>
+ <optional>
+ <ref name="db.initializer"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>initializer</db:refname>
+ <db:refpurpose>The initializer for a fieldsynopsis</db:refpurpose>
+ <define name="db.initializer.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.initializer.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.initializer.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.initializer.inlines">
+ <ref name="db._text"/>
+ </define>
+ <define name="db.initializer">
+ <element name="initializer">
+ <ref name="db.initializer.attlist"/>
+ <zeroOrMore>
+ <ref name="db.initializer.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>constructorsynopsis</db:refname>
+ <db:refpurpose>A syntax summary for a constructor</db:refpurpose>
+ <define name="db.constructorsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.constructorsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.constructorsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.language.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.constructorsynopsis">
+ <element name="constructorsynopsis">
+ <ref name="db.constructorsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.methodname"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <choice>
+ <ref name="db.methodparam"/>
+ <ref name="db.group.methodparam"/>
+ </choice>
+ </oneOrMore>
+ <optional>
+ <ref name="db.void"/>
+ </optional>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.exceptionname"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>destructorsynopsis</db:refname>
+ <db:refpurpose>A syntax summary for a destructor</db:refpurpose>
+ <define name="db.destructorsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.destructorsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.destructorsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.language.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.destructorsynopsis">
+ <element name="destructorsynopsis">
+ <ref name="db.destructorsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.methodname"/>
+ </optional>
+ <choice>
+ <oneOrMore>
+ <choice>
+ <ref name="db.methodparam"/>
+ <ref name="db.group.methodparam"/>
+ </choice>
+ </oneOrMore>
+ <optional>
+ <ref name="db.void"/>
+ </optional>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.exceptionname"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>methodsynopsis</db:refname>
+ <db:refpurpose>A syntax summary for a method</db:refpurpose>
+ <define name="db.methodsynopsis.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.methodsynopsis.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.methodsynopsis.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.language.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.methodsynopsis">
+ <element name="methodsynopsis">
+ <ref name="db.methodsynopsis.attlist"/>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <optional>
+ <choice>
+ <ref name="db.type"/>
+ <ref name="db.void"/>
+ </choice>
+ </optional>
+ <ref name="db.methodname"/>
+ <choice>
+ <oneOrMore>
+ <choice>
+ <ref name="db.methodparam"/>
+ <ref name="db.group.methodparam"/>
+ </choice>
+ </oneOrMore>
+ <ref name="db.void"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.exceptionname"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>methodname</db:refname>
+ <db:refpurpose>The name of a method</db:refpurpose>
+ <define name="db.methodname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.methodname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.methodname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.methodname">
+ <element name="methodname">
+ <ref name="db.methodname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>methodparam</db:refname>
+ <db:refpurpose>Parameters to a method</db:refpurpose>
+ <define name="db.methodparam.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.methodparam.rep.attribute">
+ <ref name="db.rep.attribute"/>
+ </define>
+ <define name="db.methodparam.choice.attribute">
+ <ref name="db.choice.req.attribute"/>
+ </define>
+ <define name="db.methodparam.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.methodparam.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.methodparam.rep.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.methodparam.choice.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.methodparam">
+ <element name="methodparam">
+ <ref name="db.methodparam.attlist"/>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.type"/>
+ </optional>
+ <choice>
+ <group>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ <ref name="db.parameter"/>
+ <optional>
+ <ref name="db.initializer"/>
+ </optional>
+ </group>
+ <ref name="db.funcparams"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.modifier"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>group</db:refname>
+ <db:refpurpose>A group of method parameters</db:refpurpose>
+ <define name="db.group.methodparam.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.group.methodparam.choice.attribute">
+ <ref name="db.choice.opt.attribute"/>
+ </define>
+ <define name="db.group.methodparam.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.group.methodparam.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.group.methodparam.choice.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.group.methodparam">
+ <element name="group">
+ <ref name="db.group.methodparam.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.methodparam"/>
+ <ref name="db.group.methodparam"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>varname</db:refname>
+ <db:refpurpose>The name of a variable</db:refpurpose>
+ <define name="db.varname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.varname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.varname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.varname">
+ <element name="varname">
+ <ref name="db.varname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>returnvalue</db:refname>
+ <db:refpurpose>The value returned by a function</db:refpurpose>
+ <define name="db.returnvalue.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.returnvalue.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.returnvalue.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.returnvalue">
+ <element name="returnvalue">
+ <ref name="db.returnvalue.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>type</db:refname>
+ <db:refpurpose>The classification of a value</db:refpurpose>
+ <define name="db.type.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.type.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.type.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.type">
+ <element name="type">
+ <ref name="db.type.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>classname</db:refname>
+ <db:refpurpose>The name of a class, in the object-oriented programming sense</db:refpurpose>
+ <define name="db.classname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.classname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.classname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.classname">
+ <element name="classname">
+ <ref name="db.classname.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>programlisting</db:refname>
+ <db:refpurpose>A literal listing of all or part of a program</db:refpurpose>
+ <define name="db.programlisting.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.programlisting.width.attribute">
+ <ref name="db.width.characters.attribute"/>
+ </define>
+ <define name="db.programlisting.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.programlisting.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <ref name="db.verbatim.attributes"/>
+ <optional>
+ <ref name="db.programlisting.width.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.programlisting">
+ <element name="programlisting">
+ <ref name="db.programlisting.attlist"/>
+ <ref name="db.verbatim.contentmodel"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/qandaset.rng b/slides/schema/relaxng/qandaset.rng
new file mode 100644
index 0000000..5fe93f6
--- /dev/null
+++ b/slides/schema/relaxng/qandaset.rng
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: qandaset.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.qandadiv"/>
+ <ref name="db.qandaentry"/>
+ <ref name="db.qandaset"/>
+ </choice>
+ </start>
+ <define name="db.list.blocks" combine="choice">
+ <ref name="db.qandaset"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>qandaset</db:refname>
+ <db:refpurpose>A question-and-answer set</db:refpurpose>
+ <define name="db.qandaset.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.qandaset.defaultlabel.enumeration">
+ <choice>
+ <value>none</value>
+ <a:documentation>No labels</a:documentation>
+ <value>number</value>
+ <a:documentation>Numeric labels</a:documentation>
+ <value>qanda</value>
+ <a:documentation>"Q:" and "A:" labels</a:documentation>
+ </choice>
+ </define>
+ <define name="db.qandaset.defaultlabel.attribute">
+ <attribute name="defaultlabel">
+ <db:refpurpose>Specifies the default labelling</db:refpurpose>
+ <ref name="db.qandaset.defaultlabel.enumeration"/>
+ </attribute>
+ </define>
+ <define name="db.qandaset.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.qandaset.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.qandaset.defaultlabel.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.qandaset.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.qandaset">
+ <element name="qandaset">
+ <ref name="db.qandaset.attlist"/>
+ <ref name="db.qandaset.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="db.qandadiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.qandaentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>qandadiv</db:refname>
+ <db:refpurpose>A titled division in a qandaset</db:refpurpose>
+ <define name="db.qandadiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.qandadiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.qandadiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.qandadiv.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.qandadiv">
+ <element name="qandadiv">
+ <ref name="db.qandadiv.attlist"/>
+ <ref name="db.qandadiv.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <choice>
+ <oneOrMore>
+ <ref name="db.qandadiv"/>
+ </oneOrMore>
+ <oneOrMore>
+ <ref name="db.qandaentry"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>qandaentry</db:refname>
+ <db:refpurpose>A question/answer set within a qandaset</db:refpurpose>
+ <define name="db.qandaentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.qandaentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.qandaentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.qandaentry.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.qandaentry">
+ <element name="qandaentry">
+ <ref name="db.qandaentry.attlist"/>
+ <ref name="db.qandaentry.info"/>
+ <ref name="db.question"/>
+ <zeroOrMore>
+ <ref name="db.answer"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>question</db:refname>
+ <db:refpurpose>A question in a qandaset</db:refpurpose>
+ <define name="db.question.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.question.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.question.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.question">
+ <element name="question">
+ <ref name="db.question.attlist"/>
+ <optional>
+ <ref name="db.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>answer</db:refname>
+ <db:refpurpose>An answer to a question posed in a qandaset</db:refpurpose>
+ <define name="db.answer.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.answer.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.answer.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.answer">
+ <element name="answer">
+ <ref name="db.answer.attlist"/>
+ <optional>
+ <ref name="db.label"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>label</db:refname>
+ <db:refpurpose>A label on a question or answer</db:refpurpose>
+ <define name="db.label.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.label.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.label.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.label">
+ <element name="label">
+ <ref name="db.label.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/refentry.rng b/slides/schema/relaxng/refentry.rng
new file mode 100644
index 0000000..1560550
--- /dev/null
+++ b/slides/schema/relaxng/refentry.rng
@@ -0,0 +1,488 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: refentry.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.refentry"/>
+ <ref name="db.refsection"/>
+ <ref name="db.refsynopsisdiv"/>
+ </choice>
+ </start>
+ <define name="db.divisions" combine="choice">
+ <ref name="db.reference"/>
+ </define>
+ <define name="db.part.components" combine="choice">
+ <choice>
+ <ref name="db.refentry"/>
+ <ref name="db.reference"/>
+ </choice>
+ </define>
+ <define name="db.toplevel.sections" combine="choice">
+ <oneOrMore>
+ <ref name="db.refentry"/>
+ </oneOrMore>
+ </define>
+ <define name="db.recursive.sections" combine="choice">
+ <oneOrMore>
+ <ref name="db.refentry"/>
+ </oneOrMore>
+ </define>
+ <define name="db.toplevel.refsection">
+ <oneOrMore>
+ <ref name="db.refsection"/>
+ </oneOrMore>
+ </define>
+ <define name="db.secondlevel.refsection">
+ <oneOrMore>
+ <ref name="db.refsection"/>
+ </oneOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.reference.components">
+ <ref name="db.refentry"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>reference</db:refname>
+ <db:refpurpose>A collection of reference entries</db:refpurpose>
+ <define name="db.reference.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.reference.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.reference.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.reference.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.reference.status.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.reference.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.reference">
+ <element name="reference">
+ <ref name="db.reference.attlist"/>
+ <ref name="db.reference.info"/>
+ <optional>
+ <ref name="db.partintro"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.reference.components"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refentry</db:refname>
+ <db:refpurpose>A reference page (originally a UNIX man-style reference page)</db:refpurpose>
+ <define name="db.refentry.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.refentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.refentry.status.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.refentry.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.refentry">
+ <element name="refentry">
+ <ref name="db.refentry.attlist"/>
+ <zeroOrMore>
+ <ref name="db.indexterm"/>
+ </zeroOrMore>
+ <ref name="db.refentry.info"/>
+ <optional>
+ <ref name="db.refmeta"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.refnamediv"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.refsynopsisdiv"/>
+ </optional>
+ <ref name="db.toplevel.refsection"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refmeta</db:refname>
+ <db:refpurpose>Meta-information for a reference entry</db:refpurpose>
+ <define name="db.refmeta.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refmeta.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refmeta.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refmeta">
+ <element name="refmeta">
+ <ref name="db.refmeta.attlist"/>
+ <zeroOrMore>
+ <ref name="db.indexterm"/>
+ </zeroOrMore>
+ <ref name="db.refentrytitle"/>
+ <optional>
+ <ref name="db.manvolnum"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="db.refmiscinfo"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.indexterm"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <ctrl:other-attribute name="db.refmiscinfo.class.attribute" enum-name="db.refmiscinfo.class-enum.attribute" other-name="db.refmiscinfo.class-other.attributes"/>
+ <define name="db.refmiscinfo.class.enumeration">
+ <choice>
+ <value>source</value>
+ <a:documentation>The name of the software product or component to which this topic applies</a:documentation>
+ <value>version</value>
+ <a:documentation>The version of the software product or component to which this topic applies</a:documentation>
+ <value>manual</value>
+ <a:documentation>The section title of the reference page (e.g., User Commands)</a:documentation>
+ <value>sectdesc</value>
+ <a:documentation>The section title of the reference page (believed synonymous with "manual" but in wide use)</a:documentation>
+ <value>software</value>
+ <a:documentation>The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use)</a:documentation>
+ </choice>
+ </define>
+ <define name="db.refmiscinfo.class-enum.attribute">
+ <optional>
+ <attribute name="class">
+ <db:refpurpose>Identifies the kind of miscellaneous information</db:refpurpose>
+ <ref name="db.refmiscinfo.class.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.refmiscinfo.class-other.attribute">
+ <attribute name="otherclass">
+ <db:refpurpose>Identifies the nature of non-standard miscellaneous information</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.refmiscinfo.class-other.attributes">
+ <interleave>
+ <attribute name="class">
+ <db:refpurpose>Identifies the kind of miscellaneious information</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Indicates that the information is some 'other' kind.</a:documentation>
+ </attribute>
+ <ref name="db.refmiscinfo.class-other.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.refmiscinfo.class.attribute">
+ <choice>
+ <ref name="db.refmiscinfo.class-enum.attribute"/>
+ <ref name="db.refmiscinfo.class-other.attributes"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refmiscinfo</db:refname>
+ <db:refpurpose>Meta-information for a reference entry other than the title and volume number</db:refpurpose>
+ <define name="db.refmiscinfo.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refmiscinfo.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refmiscinfo.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.refmiscinfo.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.refmiscinfo">
+ <element name="refmiscinfo">
+ <ref name="db.refmiscinfo.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refnamediv</db:refname>
+ <db:refpurpose>The name, purpose, and classification of a reference page</db:refpurpose>
+ <define name="db.refnamediv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refnamediv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refnamediv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refnamediv">
+ <element name="refnamediv">
+ <ref name="db.refnamediv.attlist"/>
+ <optional>
+ <ref name="db.refdescriptor"/>
+ </optional>
+ <oneOrMore>
+ <ref name="db.refname"/>
+ </oneOrMore>
+ <ref name="db.refpurpose"/>
+ <zeroOrMore>
+ <ref name="db.refclass"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refdescriptor</db:refname>
+ <db:refpurpose>A description of the topic of a reference page</db:refpurpose>
+ <define name="db.refdescriptor.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refdescriptor.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refdescriptor.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refdescriptor">
+ <element name="refdescriptor">
+ <ref name="db.refdescriptor.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refname</db:refname>
+ <db:refpurpose>The name of (one of) the subject(s) of a reference page</db:refpurpose>
+ <define name="db.refname.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refname.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refname.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refname">
+ <element name="refname">
+ <ref name="db.refname.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refpurpose</db:refname>
+ <db:refpurpose>A short (one sentence) synopsis of the topic of a reference page</db:refpurpose>
+ <define name="db.refpurpose.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refpurpose.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refpurpose.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refpurpose">
+ <element name="refpurpose">
+ <ref name="db.refpurpose.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refclass</db:refname>
+ <db:refpurpose>The scope or other indication of applicability of a reference entry</db:refpurpose>
+ <define name="db.refclass.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refclass.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refclass.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refclass">
+ <element name="refclass">
+ <ref name="db.refclass.attlist"/>
+ <zeroOrMore>
+ <choice>
+ <text/>
+ <ref name="db.application"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refsynopsisdiv</db:refname>
+ <db:refpurpose>A syntactic synopsis of the subject of the reference page</db:refpurpose>
+ <define name="db.refsynopsisdiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refsynopsisdiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refsynopsisdiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.refsynopsisdiv.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.refsynopsisdiv">
+ <element name="refsynopsisdiv">
+ <ref name="db.refsynopsisdiv.attlist"/>
+ <ref name="db.refsynopsisdiv.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.secondlevel.refsection"/>
+ </optional>
+ </group>
+ <ref name="db.secondlevel.refsection"/>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refsection</db:refname>
+ <db:refpurpose>A recursive section in a refentry</db:refpurpose>
+ <define name="db.refsection.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.refsection.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refsection.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refsection.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.refsection.status.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.refsection.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.refsection">
+ <element name="refsection">
+ <ref name="db.refsection.attlist"/>
+ <ref name="db.refsection.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.refsection"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.refsection"/>
+ </oneOrMore>
+ </choice>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/refsect1.rng b/slides/schema/relaxng/refsect1.rng
new file mode 100644
index 0000000..fb921b8
--- /dev/null
+++ b/slides/schema/relaxng/refsect1.rng
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: refsect1.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.refsect1"/>
+ <ref name="db.refsect2"/>
+ <ref name="db.refsect3"/>
+ </choice>
+ </start>
+ <define name="db.toplevel.refsection" combine="choice">
+ <oneOrMore>
+ <ref name="db.refsect1"/>
+ </oneOrMore>
+ </define>
+ <define name="db.secondlevel.refsection" combine="choice">
+ <oneOrMore>
+ <ref name="db.refsect2"/>
+ </oneOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.refsect1.sections">
+ <oneOrMore>
+ <ref name="db.refsect2"/>
+ </oneOrMore>
+ </define>
+ <div>
+ <db:refname>refsect1</db:refname>
+ <db:refpurpose>A major subsection of a reference entry</db:refpurpose>
+ <define name="db.refsect1.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.refsect1.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refsect1.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refsect1.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.refsect1.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.refsect1.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.refsect1">
+ <element name="refsect1">
+ <ref name="db.refsect1.attlist"/>
+ <ref name="db.refsect1.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.refsect1.sections"/>
+ </optional>
+ </group>
+ <ref name="db.refsect1.sections"/>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.refsect2.sections">
+ <oneOrMore>
+ <ref name="db.refsect3"/>
+ </oneOrMore>
+ </define>
+ <div>
+ <db:refname>refsect2</db:refname>
+ <db:refpurpose>A subsection of a <db:tag>refsect1</db:tag>
+ </db:refpurpose>
+ <define name="db.refsect2.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.refsect2.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refsect2.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refsect2.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.refsect2.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.refsect2.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.refsect2">
+ <element name="refsect2">
+ <ref name="db.refsect2.attlist"/>
+ <ref name="db.refsect2.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.refsect2.sections"/>
+ </optional>
+ </group>
+ <ref name="db.refsect2.sections"/>
+ </choice>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>refsect3</db:refname>
+ <db:refpurpose>A subsection of a <db:tag>refsect2</db:tag>
+ </db:refpurpose>
+ <define name="db.refsect3.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.refsect3.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.refsect3.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.refsect3.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.refsect3.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.refsect3.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.refsect3">
+ <element name="refsect3">
+ <ref name="db.refsect3.attlist"/>
+ <ref name="db.refsect3.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/sect1.rng b/slides/schema/relaxng/sect1.rng
new file mode 100644
index 0000000..b5d67e3
--- /dev/null
+++ b/slides/schema/relaxng/sect1.rng
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: sect1.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.sect1"/>
+ <ref name="db.sect2"/>
+ <ref name="db.sect3"/>
+ <ref name="db.sect4"/>
+ <ref name="db.sect5"/>
+ </choice>
+ </start>
+ <define name="db.toplevel.sections" combine="choice">
+ <oneOrMore>
+ <ref name="db.sect1"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.sect1.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.sect2"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <div>
+ <db:refname>sect1</db:refname>
+ <db:refpurpose>A top-level section of document</db:refpurpose>
+ <define name="db.sect1.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.sect1.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sect1.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sect1.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.sect1.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.sect1.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.sect1">
+ <element name="sect1">
+ <ref name="db.sect1.attlist"/>
+ <ref name="db.sect1.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.sect1.sections"/>
+ </optional>
+ </group>
+ <ref name="db.sect1.sections"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.sect2.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.sect3"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <div>
+ <db:refname>sect2</db:refname>
+ <db:refpurpose>A subsection within a sect1</db:refpurpose>
+ <define name="db.sect2.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.sect2.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sect2.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sect2.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.sect2.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.sect2.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.sect2">
+ <element name="sect2">
+ <ref name="db.sect2.attlist"/>
+ <ref name="db.sect2.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.sect2.sections"/>
+ </optional>
+ </group>
+ <ref name="db.sect2.sections"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.sect3.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.sect4"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <div>
+ <db:refname>sect3</db:refname>
+ <db:refpurpose>A subsection within a sect2</db:refpurpose>
+ <define name="db.sect3.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.sect3.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sect3.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sect3.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.sect3.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.sect3.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.sect3">
+ <element name="sect3">
+ <ref name="db.sect3.attlist"/>
+ <ref name="db.sect3.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.sect3.sections"/>
+ </optional>
+ </group>
+ <ref name="db.sect3.sections"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.sect4.sections">
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.sect5"/>
+ </oneOrMore>
+ <zeroOrMore>
+ <ref name="db.simplesect"/>
+ </zeroOrMore>
+ </group>
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </choice>
+ </define>
+ <div>
+ <db:refname>sect4</db:refname>
+ <db:refpurpose>A subsection within a sect3</db:refpurpose>
+ <define name="db.sect4.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.sect4.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sect4.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sect4.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.sect4.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.sect4.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.sect4">
+ <element name="sect4">
+ <ref name="db.sect4.attlist"/>
+ <ref name="db.sect4.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.sect4.sections"/>
+ </optional>
+ </group>
+ <ref name="db.sect4.sections"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <define name="db.sect5.sections">
+ <oneOrMore>
+ <ref name="db.simplesect"/>
+ </oneOrMore>
+ </define>
+ <div>
+ <db:refname>sect5</db:refname>
+ <db:refpurpose>A subsection within a sect4</db:refpurpose>
+ <define name="db.sect5.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.sect5.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.sect5.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.sect5.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.sect5.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.sect5.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.sect5">
+ <element name="sect5">
+ <ref name="db.sect5.attlist"/>
+ <ref name="db.sect5.info"/>
+ <choice>
+ <group>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ <optional>
+ <ref name="db.sect5.sections"/>
+ </optional>
+ </group>
+ <ref name="db.sect5.sections"/>
+ </choice>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/slides.rnc b/slides/schema/relaxng/slides.rnc
new file mode 100644
index 0000000..4d37f6f
--- /dev/null
+++ b/slides/schema/relaxng/slides.rnc
@@ -0,0 +1,206 @@
+namespace db = "http://docbook.org/ns/docbook"
+namespace mml = "http://www.w3.org/1998/Math/MathML"
+namespace svg = "http://www.w3.org/2000/svg"
+default namespace dbs = "http://docbook.org/ns/docbook-slides"
+
+# See http://docbook.org/ns/docbook-slides
+
+# This file is part of DocBook Slides V5.0
+#
+# Copyright 2012 Gabor Kovesdan
+#
+# Release: $Id$
+#
+# Permission to use, copy, modify and distribute the DocBook Slides
+# schema and its accompanying documentation for any purpose and without
+# fee is hereby granted in perpetuity, provided that the above copyright
+# notice and this paragraph appear in all copies. The copyright
+# holders make no representation about the suitability of the schema
+# for any purpose. It is provided "as is" without expressed or implied
+# warranty.
+#
+# If you modify the DocBook Slides schema in any way, label your schema
+# as a variant of DocBook Slides. See the reference documentation
+# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+# for more information.
+#
+# Please direct all questions, bug reports, or suggestions for changes
+# to the docbook@lists.oasis-open.org mailing list. For more
+# information, see http://www.oasis-open.org/docbook/.
+#
+# ======================================================================
+
+include "../../../../docbook/relaxng/docbook/docbook/docbook.rnc" inherit = db {
+ start = dbs.slides
+
+ # Avoid ID clashes
+ db._any.attribute = attribute * - (xml:id | linkend) { text }
+
+ db.common.attributes =
+ db.xml.id.attribute?
+ & db.common.base.attributes
+ & db.annotations.attribute?
+ & dbs.style.attributes?
+
+ # Any element and attribute from the SVG namespace
+ db._any.svg =
+ element svg:* { (dbs._any.attribute | text | db._any)* }
+
+ # Any element and attribute from the MathML namespace
+ db._any.mml =
+ element mml:* { (dbs._any.attribute | text | db._any)* }
+}
+
+# Any attribute from any namespace
+dbs._any.attribute = attribute * { text }
+
+dbs.all.content = db.all.blocks? &
+ dbs.speakernotes &
+ dbs.handoutnotes &
+ db._any.svg? &
+ db._any.mml? &
+ dbs.block?
+
+dbs.block =
+ ## Indicates a formatting block that can have its own styling applied
+ element block { dbs.block.attlist,
+ dbs.all.content*
+}
+
+dbs.block.role.attribute =
+ ## Role attribute for the block element
+ attribute role { text }
+
+dbs.block.status.attribute =
+ ## Status attribute for the block element
+ db.status.attribute
+
+dbs.block.attlist = dbs.block.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & dbs.block.status.attribute?
+
+dbs.slides =
+ ## Root element of a slides document
+ element slides { dbs.slides.attlist,
+ db._info.title.req,
+ dbs.speakernotes?,
+ dbs.handoutnotes?,
+ (
+ dbs.foil? &
+ dbs.foilgroup?
+ )*
+}
+
+dbs.slides.role.attribute =
+ ## Role attribute for the slides element
+ attribute role { text }
+
+dbs.slides.status.attribute =
+ ## Status attribute for the slides element
+ db.status.attribute
+
+dbs.slides.attlist = dbs.slides.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & dbs.slides.status.attribute?
+
+dbs.foilgroup = element foilgroup {
+ dbs.foilgroup.attlist,
+ db._info.title.req,
+ dbs.all.content*,
+ dbs.foil+
+}
+
+dbs.foilgroup.role.attribute =
+ ## Role attribute for the foilgroup element
+ attribute role { text }
+
+dbs.foilgroup.status.attribute =
+ ## Status attribute for the foilgroup element
+ db.status.attribute
+
+dbs.foilgroup.attlist = dbs.foilgroup.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & dbs.slides.status.attribute?
+
+dbs.foil =
+ ## Indicates a foil that may have some info and content
+ element foil { dbs.foil.attlist,
+ db._info.title.req,
+ dbs.all.content*,
+ db.navigation.components*
+}
+
+dbs.foil.role.attribute =
+ ## Role attribute for the foil element
+ attribute role { text }
+
+dbs.foil.status.attribute =
+ ## Status attribute for the foil element
+ db.status.attribute
+
+dbs.foil.attlist = dbs.foil.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+ & db.label.attribute?
+ & dbs.foil.status.attribute?
+
+dbs.speakernotes =
+ ## Indicates notes for the speaker
+ element speakernotes { dbs.speakernotes.attlist,
+ db.all.blocks+
+}
+
+dbs.speakernotes.role.attribute =
+ ## Role attribute for the speakernotes element
+ attribute role { text }
+
+dbs.speakernotes.attlist = dbs.speakernotes.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+
+dbs.handoutnotes =
+ ## Indicates notes that are meant for printed copies
+ element handoutnotes { dbs.handoutnotes.attlist,
+ db.all.blocks+
+}
+
+## Role attribute for the handoutnotes element
+dbs.handoutnotes.role.attribute =
+ ## Role attribute for the handoutnotes element
+ attribute role { text }
+
+dbs.handoutnotes.attlist = dbs.handoutnotes.role.attribute?
+ & db.common.attributes
+ & db.common.linking.attributes
+
+dbs.style.attributes = dbs.incremental.attribute?
+ & dbs.collapsible.attribute?
+ & dbs.style.attribute?
+
+dbs.incremental.attribute =
+ ## Attribute indicating an incremental part
+ attribute dbs:incremental {
+ ## disabled
+ "0" |
+ ## enabled
+ "1" }
+
+dbs.collapsible.attribute =
+ ## Attribute indicating a collapsible part
+ attribute dbs:collapsible {
+ ## disabled
+ "0" |
+ ## enabled
+ "1" |
+ ## enabled and expanded by default
+ "expanded" }
+
+dbs.style.attribute =
+ ## Attribute indicating a formatting style class
+ attribute dbs:style { text }
diff --git a/slides/schema/relaxng/slides.rng b/slides/schema/relaxng/slides.rng
new file mode 100644
index 0000000..9a38eb1
--- /dev/null
+++ b/slides/schema/relaxng/slides.rng
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns:dbs="http://docbook.org/ns/docbook-slides" ns="" xmlns:db="http://docbook.org/ns/docbook" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <!-- See http://docbook.org/ns/docbook-slides -->
+ <!--
+ This file is part of DocBook Slides V5.0
+
+ Copyright 2012 Gabor Kovesdan
+
+ Release: $Id$
+
+ Permission to use, copy, modify and distribute the DocBook Slides
+ schema and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook Slides schema in any way, label your schema
+ as a variant of DocBook Slides. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+ -->
+ <include href="docbook.rng" ns="http://docbook.org/ns/docbook">
+ <start>
+ <ref name="dbs.slides"/>
+ </start>
+ <!-- Avoid ID clashes -->
+ <define name="db._any.attribute">
+ <attribute>
+ <anyName>
+ <except>
+ <name>xml:id</name>
+ <name ns="">linkend</name>
+ </except>
+ </anyName>
+ </attribute>
+ </define>
+ <define name="db.common.attributes">
+ <interleave>
+ <optional>
+ <ref name="db.xml.id.attribute"/>
+ </optional>
+ <ref name="db.common.base.attributes"/>
+ <optional>
+ <ref name="db.annotations.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.style.attributes"/>
+ </optional>
+ </interleave>
+ </define>
+ <!-- Any element and attribute from the SVG namespace -->
+ <define name="db._any.svg">
+ <element>
+ <nsName ns="http://www.w3.org/2000/svg"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="dbs._any.attribute"/>
+ <text/>
+ <ref name="db._any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <!-- Any element and attribute from the MathML namespace -->
+ <define name="db._any.mml">
+ <element>
+ <nsName ns="http://www.w3.org/1998/Math/MathML"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="dbs._any.attribute"/>
+ <text/>
+ <ref name="db._any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </include>
+ <!-- Any attribute from any namespace -->
+ <define name="dbs._any.attribute">
+ <attribute>
+ <anyName/>
+ </attribute>
+ </define>
+ <define name="dbs.all.content">
+ <interleave>
+ <optional>
+ <ref name="db.all.blocks"/>
+ </optional>
+ <ref name="dbs.speakernotes"/>
+ <ref name="dbs.handoutnotes"/>
+ <optional>
+ <ref name="db._any.svg"/>
+ </optional>
+ <optional>
+ <ref name="db._any.mml"/>
+ </optional>
+ <optional>
+ <ref name="dbs.block"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="dbs.block">
+ <element>
+ <a:documentation>Indicates a formatting block that can have its own styling applied</a:documentation>
+ <name ns="http://docbook.org/ns/docbook-slides">block</name>
+ <ref name="dbs.block.attlist"/>
+ <zeroOrMore>
+ <ref name="dbs.all.content"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="dbs.block.role.attribute">
+ <attribute name="role">
+ <a:documentation>Role attribute for the block element</a:documentation>
+ </attribute>
+ </define>
+ <define name="dbs.block.status.attribute">
+ <ref name="db.status.attribute">
+ <a:documentation>Status attribute for the block element</a:documentation>
+ </ref>
+ </define>
+ <define name="dbs.block.attlist">
+ <interleave>
+ <optional>
+ <ref name="dbs.block.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.block.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="dbs.slides">
+ <element>
+ <a:documentation>Root element of a slides document</a:documentation>
+ <name ns="http://docbook.org/ns/docbook-slides">slides</name>
+ <ref name="dbs.slides.attlist"/>
+ <ref name="db._info.title.req"/>
+ <optional>
+ <ref name="dbs.speakernotes"/>
+ </optional>
+ <optional>
+ <ref name="dbs.handoutnotes"/>
+ </optional>
+ <zeroOrMore>
+ <interleave>
+ <optional>
+ <ref name="dbs.foil"/>
+ </optional>
+ <optional>
+ <ref name="dbs.foilgroup"/>
+ </optional>
+ </interleave>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="dbs.slides.role.attribute">
+ <attribute name="role">
+ <a:documentation>Role attribute for the slides element</a:documentation>
+ </attribute>
+ </define>
+ <define name="dbs.slides.status.attribute">
+ <ref name="db.status.attribute">
+ <a:documentation>Status attribute for the slides element</a:documentation>
+ </ref>
+ </define>
+ <define name="dbs.slides.attlist">
+ <interleave>
+ <optional>
+ <ref name="dbs.slides.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.slides.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="dbs.foilgroup">
+ <element>
+ <name ns="http://docbook.org/ns/docbook-slides">foilgroup</name>
+ <ref name="dbs.foilgroup.attlist"/>
+ <ref name="db._info.title.req"/>
+ <zeroOrMore>
+ <ref name="dbs.all.content"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="dbs.foil"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="dbs.foilgroup.role.attribute">
+ <attribute name="role">
+ <a:documentation>Role attribute for the foilgroup element</a:documentation>
+ </attribute>
+ </define>
+ <define name="dbs.foilgroup.status.attribute">
+ <ref name="db.status.attribute">
+ <a:documentation>Status attribute for the foilgroup element</a:documentation>
+ </ref>
+ </define>
+ <define name="dbs.foilgroup.attlist">
+ <interleave>
+ <optional>
+ <ref name="dbs.foilgroup.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.slides.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="dbs.foil">
+ <element>
+ <a:documentation>Indicates a foil that may have some info and content</a:documentation>
+ <name ns="http://docbook.org/ns/docbook-slides">foil</name>
+ <ref name="dbs.foil.attlist"/>
+ <ref name="db._info.title.req"/>
+ <zeroOrMore>
+ <ref name="dbs.all.content"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="dbs.foil.role.attribute">
+ <attribute name="role">
+ <a:documentation>Role attribute for the foil element</a:documentation>
+ </attribute>
+ </define>
+ <define name="dbs.foil.status.attribute">
+ <ref name="db.status.attribute">
+ <a:documentation>Status attribute for the foil element</a:documentation>
+ </ref>
+ </define>
+ <define name="dbs.foil.attlist">
+ <interleave>
+ <optional>
+ <ref name="dbs.foil.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.foil.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="dbs.speakernotes">
+ <element>
+ <a:documentation>Indicates notes for the speaker</a:documentation>
+ <name ns="http://docbook.org/ns/docbook-slides">speakernotes</name>
+ <ref name="dbs.speakernotes.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="dbs.speakernotes.role.attribute">
+ <attribute name="role">
+ <a:documentation>Role attribute for the speakernotes element</a:documentation>
+ </attribute>
+ </define>
+ <define name="dbs.speakernotes.attlist">
+ <interleave>
+ <optional>
+ <ref name="dbs.speakernotes.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="dbs.handoutnotes">
+ <element>
+ <a:documentation>Indicates notes that are meant for printed copies</a:documentation>
+ <name ns="http://docbook.org/ns/docbook-slides">handoutnotes</name>
+ <ref name="dbs.handoutnotes.attlist"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="dbs.handoutnotes.role.attribute">
+ <a:documentation>Role attribute for the handoutnotes element</a:documentation>
+ <attribute name="role">
+ <a:documentation>Role attribute for the handoutnotes element</a:documentation>
+ </attribute>
+ </define>
+ <define name="dbs.handoutnotes.attlist">
+ <interleave>
+ <optional>
+ <ref name="dbs.handoutnotes.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="dbs.style.attributes">
+ <interleave>
+ <optional>
+ <ref name="dbs.incremental.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.collapsible.attribute"/>
+ </optional>
+ <optional>
+ <ref name="dbs.style.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="dbs.incremental.attribute">
+ <attribute name="dbs:incremental">
+ <a:documentation>Attribute indicating an incremental part</a:documentation>
+ <choice>
+ <value>0</value>
+ <a:documentation>disabled</a:documentation>
+ <value>1</value>
+ <a:documentation>enabled</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="dbs.collapsible.attribute">
+ <attribute name="dbs:collapsible">
+ <a:documentation>Attribute indicating a collapsible part</a:documentation>
+ <choice>
+ <value>0</value>
+ <a:documentation>disabled</a:documentation>
+ <value>1</value>
+ <a:documentation>enabled</a:documentation>
+ <value>expanded</value>
+ <a:documentation>enabled and expanded by default</a:documentation>
+ </choice>
+ </attribute>
+ </define>
+ <define name="dbs.style.attribute">
+ <attribute name="dbs:style">
+ <a:documentation>Attribute indicating a formatting style class</a:documentation>
+ </attribute>
+ </define>
+</grammar>
diff --git a/slides/schema/relaxng/svg.rng b/slides/schema/relaxng/svg.rng
new file mode 100644
index 0000000..c7d830c
--- /dev/null
+++ b/slides/schema/relaxng/svg.rng
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: svg.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:svg="http://www.w3.org/2000/svg" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0">
+ <define name="db.imageobject.content" combine="choice">
+ <ref name="db.imagedata.svg"/>
+ </define>
+ <!-- ============================================================ -->
+ <div>
+ <db:refname>imagedata</db:refname>
+ <db:refpurpose>An SVG drawing in a media object</db:refpurpose>
+ <define name="db.imagedata.svg.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.imagedata.svg.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.imagedata.svg.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <attribute name="format">
+ <db:refpurpose>Specifies that the format of the data is SVG</db:refpurpose>
+ <value>svg</value>
+ <a:documentation>Specifies SVG.</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.align.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.valign.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.width.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.contentwidth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.scalefit.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.scale.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.depth.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.imagedata.contentdepth.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.imagedata.svg.info">
+ <ref name="db._info.title.forbidden"/>
+ </define>
+ <define name="db.imagedata.svg">
+ <element name="imagedata">
+ <ref name="db.imagedata.svg.attlist"/>
+ <ref name="db.imagedata.svg.info"/>
+ <oneOrMore>
+ <ref name="db._any.svg"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ============================================================ -->
+ <div>
+ <db:refname>svg:*</db:refname>
+ <db:refpurpose>Any element from the SVG namespace</db:refpurpose>
+ <define name="db._any.svg">
+ <element>
+ <nsName ns="http://www.w3.org/2000/svg"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="db._any.attribute"/>
+ <text/>
+ <ref name="db._any"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/tasks.rng b/slides/schema/relaxng/tasks.rng
new file mode 100644
index 0000000..5d5c40d
--- /dev/null
+++ b/slides/schema/relaxng/tasks.rng
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: tasks.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.task"/>
+ <ref name="db.taskprerequisites"/>
+ <ref name="db.taskrelated"/>
+ <ref name="db.tasksummary"/>
+ </choice>
+ </start>
+ <define name="db.technical.blocks" combine="choice">
+ <ref name="db.task"/>
+ </define>
+ <define name="db.task.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>task</db:refname>
+ <db:refpurpose>A task to be completed</db:refpurpose>
+ <define name="db.task.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.task.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.task.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.task">
+ <element name="task">
+ <ref name="db.task.attlist"/>
+ <ref name="db.task.info"/>
+ <optional>
+ <ref name="db.tasksummary"/>
+ </optional>
+ <optional>
+ <ref name="db.taskprerequisites"/>
+ </optional>
+ <ref name="db.procedure"/>
+ <zeroOrMore>
+ <ref name="db.example"/>
+ </zeroOrMore>
+ <optional>
+ <ref name="db.taskrelated"/>
+ </optional>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tasksummary</db:refname>
+ <db:refpurpose>A summary of a task</db:refpurpose>
+ <define name="db.tasksummary.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tasksummary.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tasksummary.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.tasksummary.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.tasksummary">
+ <element name="tasksummary">
+ <ref name="db.tasksummary.attlist"/>
+ <ref name="db.tasksummary.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>taskprerequisites</db:refname>
+ <db:refpurpose>The prerequisites for a task</db:refpurpose>
+ <define name="db.taskprerequisites.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.taskprerequisites.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.taskprerequisites.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.taskprerequisites.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.taskprerequisites">
+ <element name="taskprerequisites">
+ <ref name="db.taskprerequisites.attlist"/>
+ <ref name="db.taskprerequisites.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>taskrelated</db:refname>
+ <db:refpurpose>Information related to a task</db:refpurpose>
+ <define name="db.taskrelated.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.taskrelated.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.taskrelated.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.taskrelated.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.taskrelated">
+ <element name="taskrelated">
+ <ref name="db.taskrelated.attlist"/>
+ <ref name="db.taskrelated.info"/>
+ <oneOrMore>
+ <ref name="db.all.blocks"/>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/technical.rng b/slides/schema/relaxng/technical.rng
new file mode 100644
index 0000000..4925f59
--- /dev/null
+++ b/slides/schema/relaxng/technical.rng
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="db.technical.inlines" combine="choice">
+ <choice>
+ <ref name="db.systemitem"/>
+ <ref name="db.option"/>
+ <ref name="db.optional"/>
+ <ref name="db.property"/>
+ </choice>
+ </define>
+ <!-- ====================================================================== -->
+ <define name="db.systemitem.inlines">
+ <ref name="db._text"/>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>systemitem</db:refname>
+ <db:refpurpose>A system-related item or term</db:refpurpose>
+ <define name="db.systemitem.class.enumeration">
+ <choice>
+ <value>daemon</value>
+ <a:documentation>A daemon or other system process (syslogd)</a:documentation>
+ <value>domainname</value>
+ <a:documentation>A domain name (example.com)</a:documentation>
+ <value>etheraddress</value>
+ <a:documentation>An ethernet address (00:05:4E:49:FD:8E)</a:documentation>
+ <value>event</value>
+ <a:documentation>An event of some sort (SIGHUP)</a:documentation>
+ <value>eventhandler</value>
+ <a:documentation>An event handler of some sort (hangup)</a:documentation>
+ <value>filesystem</value>
+ <a:documentation>A filesystem (ext3)</a:documentation>
+ <value>fqdomainname</value>
+ <a:documentation>A fully qualified domain name (my.example.com)</a:documentation>
+ <value>groupname</value>
+ <a:documentation>A group name (wheel)</a:documentation>
+ <value>ipaddress</value>
+ <a:documentation>An IP address (127.0.0.1)</a:documentation>
+ <value>library</value>
+ <a:documentation>A library (libncurses)</a:documentation>
+ <value>macro</value>
+ <a:documentation>A macro</a:documentation>
+ <value>netmask</value>
+ <a:documentation>A netmask (255.255.255.192)</a:documentation>
+ <value>newsgroup</value>
+ <a:documentation>A newsgroup (comp.text.xml)</a:documentation>
+ <value>osname</value>
+ <a:documentation>An operating system name (Hurd)</a:documentation>
+ <value>process</value>
+ <a:documentation>A process (gnome-cups-icon)</a:documentation>
+ <value>protocol</value>
+ <a:documentation>A protocol (ftp)</a:documentation>
+ <value>resource</value>
+ <a:documentation>A resource</a:documentation>
+ <value>securitycontext</value>
+ <a:documentation>A security context (a role, permission, or security token, for example)</a:documentation>
+ <value>server</value>
+ <a:documentation>A server (mail.example.com)</a:documentation>
+ <value>service</value>
+ <a:documentation>A service (ppp)</a:documentation>
+ <value>systemname</value>
+ <a:documentation>A system name (hephaistos)</a:documentation>
+ <value>username</value>
+ <a:documentation>A user name (ndw)</a:documentation>
+ </choice>
+ </define>
+ <define name="db.systemitem.class-enum.attribute">
+ <optional>
+ <attribute name="class">
+ <db:refpurpose>Identifies the nature of the system item</db:refpurpose>
+ <ref name="db.systemitem.class.enumeration"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="db.systemitem.class-other.attribute">
+ <attribute name="otherclass">
+ <db:refpurpose>Identifies the nature of the non-standard system item</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.systemitem.class-other.attributes">
+ <interleave>
+ <attribute name="class">
+ <db:refpurpose>Identifies the kind of systemitemgraphic identifier</db:refpurpose>
+ <value>other</value>
+ <a:documentation>Indicates that the system item is some 'other' kind.</a:documentation>
+ </attribute>
+ <ref name="db.systemitem.class-other.attribute"/>
+ </interleave>
+ </define>
+ <define name="db.systemitem.class.attribute">
+ <choice>
+ <ref name="db.systemitem.class-enum.attribute"/>
+ <ref name="db.systemitem.class-other.attributes"/>
+ </choice>
+ </define>
+ <define name="db.systemitem.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.systemitem.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.systemitem.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.systemitem.class.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.systemitem">
+ <element name="systemitem">
+ <ref name="db.systemitem.attlist"/>
+ <zeroOrMore>
+ <ref name="db.systemitem.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>option</db:refname>
+ <db:refpurpose>An option for a software command</db:refpurpose>
+ <define name="db.option.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.option.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.option.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.option">
+ <element name="option">
+ <ref name="db.option.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>optional</db:refname>
+ <db:refpurpose>Optional information</db:refpurpose>
+ <define name="db.optional.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.optional.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.optional.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.optional">
+ <element name="optional">
+ <ref name="db.optional.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>property</db:refname>
+ <db:refpurpose>A unit of data associated with some part of a computer system</db:refpurpose>
+ <define name="db.property.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.property.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.property.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.property">
+ <element name="property">
+ <ref name="db.property.attlist"/>
+ <ref name="db._text"/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/toc.rng b/slides/schema/relaxng/toc.rng
new file mode 100644
index 0000000..4394b0f
--- /dev/null
+++ b/slides/schema/relaxng/toc.rng
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: toc.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <choice>
+ <ref name="db.toc"/>
+ <ref name="db.tocdiv"/>
+ </choice>
+ </start>
+ <define name="db.navigation.components" combine="choice">
+ <ref name="db.toc"/>
+ </define>
+ <define name="db.toc.components" combine="choice">
+ <ref name="db.toc"/>
+ </define>
+ <define name="db.toc.pagenum.attribute">
+ <attribute name="pagenum">
+ <db:refpurpose>Indicates the page on which this element occurs in some version of the printed document</db:refpurpose>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>toc</db:refname>
+ <db:refpurpose>A table of contents</db:refpurpose>
+ <define name="db.toc.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.toc.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.toc.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ </interleave>
+ </define>
+ <define name="db.toc.info">
+ <ref name="db._info.title.only"/>
+ </define>
+ <define name="db.toc">
+ <element name="toc">
+ <ref name="db.toc.attlist"/>
+ <ref name="db.toc.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <choice>
+ <ref name="db.tocdiv"/>
+ <ref name="db.tocentry"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tocdiv</db:refname>
+ <db:refpurpose>A division in a table of contents</db:refpurpose>
+ <define name="db.tocdiv.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tocdiv.pagenum.attribute">
+ <ref name="db.toc.pagenum.attribute"/>
+ </define>
+ <define name="db.tocdiv.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tocdiv.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.tocdiv.pagenum.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.linkend.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.tocdiv.info">
+ <ref name="db._info"/>
+ </define>
+ <define name="db.tocdiv">
+ <element name="tocdiv">
+ <ref name="db.tocdiv.attlist"/>
+ <ref name="db.tocdiv.info"/>
+ <zeroOrMore>
+ <ref name="db.all.blocks"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <choice>
+ <ref name="db.tocdiv"/>
+ <ref name="db.tocentry"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>tocentry</db:refname>
+ <db:refpurpose>A component title in a table of contents</db:refpurpose>
+ <define name="db.tocentry.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.tocentry.pagenum.attribute">
+ <ref name="db.toc.pagenum.attribute"/>
+ </define>
+ <define name="db.tocentry.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.tocentry.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <ref name="db.tocentry.pagenum.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.linkend.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.tocentry">
+ <element name="tocentry">
+ <ref name="db.tocentry.attlist"/>
+ <zeroOrMore>
+ <ref name="db.all.inlines"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/topic.rng b/slides/schema/relaxng/topic.rng
new file mode 100644
index 0000000..4e683c1
--- /dev/null
+++ b/slides/schema/relaxng/topic.rng
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: hier.rnc 8569 2010-01-15 00:23:46Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:dbx="http://sourceforge.net/projects/docbook/defguide/schema/extra-markup" xmlns="http://relaxng.org/ns/structure/1.0">
+ <start combine="choice">
+ <ref name="db.topic"/>
+ </start>
+ <define name="db.book.components" combine="choice">
+ <zeroOrMore>
+ <ref name="db.topic"/>
+ </zeroOrMore>
+ </define>
+ <define name="db.part.contentmodel" combine="choice">
+ <oneOrMore>
+ <ref name="db.topic"/>
+ </oneOrMore>
+ </define>
+ <define name="db.chapter.contentmodel" combine="choice">
+ <oneOrMore>
+ <ref name="db.topic"/>
+ </oneOrMore>
+ </define>
+ <define name="db.appendix.contentmodel" combine="choice">
+ <oneOrMore>
+ <ref name="db.topic"/>
+ </oneOrMore>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>topic</db:refname>
+ <db:refpurpose>A modular unit of documentation not part of any particular narrative flow</db:refpurpose>
+ <define name="db.topic.status.attribute">
+ <ref name="db.status.attribute"/>
+ </define>
+ <define name="db.topic.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.topic.type.attribute">
+ <attribute name="type">
+ <db:refpurpose>Identifies the topic type</db:refpurpose>
+ </attribute>
+ </define>
+ <define name="db.topic.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.topic.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.topic.type.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <ref name="db.common.linking.attributes"/>
+ <optional>
+ <ref name="db.label.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.topic.status.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.topic.info">
+ <ref name="db._info.title.req"/>
+ </define>
+ <define name="db.topic">
+ <element name="topic">
+ <ref name="db.topic.attlist"/>
+ <ref name="db.topic.info"/>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ <ref name="db.toplevel.blocks.or.sections"/>
+ <zeroOrMore>
+ <ref name="db.navigation.components"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/relaxng/xlink.rng b/slides/schema/relaxng/xlink.rng
new file mode 100644
index 0000000..3b1240f
--- /dev/null
+++ b/slides/schema/relaxng/xlink.rng
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: xlink.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ctrl="http://nwalsh.com/xmlns/schema-control/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="db.info.elements" combine="choice">
+ <ref name="db.extendedlink"/>
+ </define>
+ <define name="db.xlink.from.attribute">
+ <attribute name="xlink:from">
+ <db:refpurpose>Specifies the XLink traversal-from</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.label.attribute">
+ <attribute name="xlink:label">
+ <db:refpurpose>Specifies the XLink label</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <define name="db.xlink.to.attribute">
+ <attribute name="xlink:to">
+ <db:refpurpose>Specifies the XLink traversal-to</db:refpurpose>
+ <data type="NMTOKEN"/>
+ </attribute>
+ </define>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>extendedlink</db:refname>
+ <db:refpurpose>An XLink extended link</db:refpurpose>
+ <define name="db.extendedlink.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.extendedlink.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.extendedlink.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="extended">
+ <db:refpurpose>Identifies the XLink link type </db:refpurpose>
+ <value>extended</value>
+ <a:documentation>An XLink extended link</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="db.xlink.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.title.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.extendedlink">
+ <element name="extendedlink">
+ <ref name="db.extendedlink.attlist"/>
+ <oneOrMore>
+ <choice>
+ <ref name="db.locator"/>
+ <ref name="db.arc"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>locator</db:refname>
+ <db:refpurpose>An XLink locator in an <db:tag>extendedlink</db:tag>
+ </db:refpurpose>
+ <define name="db.locator.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.locator.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.locator.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="locator">
+ <db:refpurpose>Identifies the XLink link type </db:refpurpose>
+ <value>locator</value>
+ <a:documentation>An XLink locator link</a:documentation>
+ </attribute>
+ </optional>
+ <ref name="db.xlink.href.attribute"/>
+ <optional>
+ <ref name="db.xlink.role.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.title.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.label.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.locator">
+ <element name="locator">
+ <ref name="db.locator.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+ <!-- ====================================================================== -->
+ <div>
+ <db:refname>arc</db:refname>
+ <db:refpurpose>An XLink arc in an <db:tag>extendedlink</db:tag>
+ </db:refpurpose>
+ <define name="db.arc.role.attribute">
+ <attribute name="role"/>
+ </define>
+ <define name="db.arc.attlist">
+ <interleave>
+ <optional>
+ <ref name="db.arc.role.attribute"/>
+ </optional>
+ <ref name="db.common.attributes"/>
+ <optional>
+ <attribute name="xlink:type" a:defaultValue="arc">
+ <db:refpurpose>Identifies the XLink link type </db:refpurpose>
+ <value>arc</value>
+ <a:documentation>An XLink arc link</a:documentation>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="db.xlink.arcrole.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.title.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.show.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.actuate.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.from.attribute"/>
+ </optional>
+ <optional>
+ <ref name="db.xlink.to.attribute"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="db.arc">
+ <element name="arc">
+ <ref name="db.arc.attlist"/>
+ <empty/>
+ </element>
+ </define>
+ </div>
+</grammar>
diff --git a/slides/schema/xsd/admonitions.xsd b/slides/schema/xsd/admonitions.xsd
new file mode 100644
index 0000000..7bda362
--- /dev/null
+++ b/slides/schema/xsd/admonitions.xsd
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:element name="db.admonition.blocks" abstract="true"/>
+ <xs:complexType name="db.admonition.contentmodel">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.caution.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.caution.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="caution" substitutionGroup="db:db.admonition.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.admonition.contentmodel">
+ <xs:attributeGroup ref="db:db.caution.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.important.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.important.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="important" substitutionGroup="db:db.admonition.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.admonition.contentmodel">
+ <xs:attributeGroup ref="db:db.important.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.note.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.note.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="note" substitutionGroup="db:db.admonition.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.admonition.contentmodel">
+ <xs:attributeGroup ref="db:db.note.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tip.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tip.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="tip" substitutionGroup="db:db.admonition.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.admonition.contentmodel">
+ <xs:attributeGroup ref="db:db.tip.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.warning.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.warning.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="warning" substitutionGroup="db:db.admonition.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.admonition.contentmodel">
+ <xs:attributeGroup ref="db:db.warning.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/annotations.xsd b/slides/schema/xsd/annotations.xsd
new file mode 100644
index 0000000..173daeb
--- /dev/null
+++ b/slides/schema/xsd/annotations.xsd
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: annotations.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="db.annotations.attribute">
+ <xs:attribute name="annotations" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.annotation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.annotation.annotates.attribute">
+ <xs:attribute name="annotates" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.annotation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attribute name="annotates"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.annotation.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="annotation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.annotation.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.annotation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/bibliography.xsd b/slides/schema/xsd/bibliography.xsd
new file mode 100644
index 0000000..1a37bef
--- /dev/null
+++ b/slides/schema/xsd/bibliography.xsd
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: bibliography.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.relation.attribute">
+ <xs:attribute name="relation" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.biblioentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="biblioentry">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.bibliographic.elements"/>
+ <xs:attributeGroup ref="db:db.biblioentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliomixed.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliomixed.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="bibliomixed">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:honorific"/>
+ <xs:element ref="db:firstname"/>
+ <xs:element ref="db:surname"/>
+ <xs:element ref="db:lineage"/>
+ <xs:element ref="db:othername"/>
+ <xs:group ref="db:db.bibliographic.elements"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:honorific"/>
+ <xs:element ref="db:givenname"/>
+ <xs:element ref="db:surname"/>
+ <xs:element ref="db:lineage"/>
+ <xs:element ref="db:othername"/>
+ <xs:group ref="db:db.bibliographic.elements"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.bibliomixed.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.biblioset.relation.attribute">
+ <xs:attributeGroup ref="db:db.relation.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="relation"/>
+ </xs:attributeGroup>
+ <xs:element name="biblioset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.bibliographic.elements"/>
+ <xs:attributeGroup ref="db:db.biblioset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliomset.relation.attribute">
+ <xs:attributeGroup ref="db:db.relation.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliomset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliomset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="relation"/>
+ </xs:attributeGroup>
+ <xs:element name="bibliomset">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:honorific"/>
+ <xs:element ref="db:firstname"/>
+ <xs:element ref="db:surname"/>
+ <xs:element ref="db:lineage"/>
+ <xs:element ref="db:othername"/>
+ <xs:group ref="db:db.bibliographic.elements"/>
+ </xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:honorific"/>
+ <xs:element ref="db:givenname"/>
+ <xs:element ref="db:surname"/>
+ <xs:element ref="db:lineage"/>
+ <xs:element ref="db:othername"/>
+ <xs:group ref="db:db.bibliographic.elements"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.bibliomset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliomisc.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliomisc.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="bibliomisc">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.bibliomisc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliography.status.attrib">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliography.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliography.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.bibliography.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="bibliography">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.bibliography.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:bibliodiv"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:biblioentry"/>
+ <xs:element ref="db:bibliomixed"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.bibliography.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliodiv.status.attrib">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliodiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliodiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.bibliodiv.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="bibliodiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.bibliodiv.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:biblioentry"/>
+ <xs:element ref="db:bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.bibliodiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliolist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliolist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.bibliolist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="bibliolist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="db:db.bibliolist.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:biblioentry"/>
+ <xs:element ref="db:bibliomixed"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.bibliolist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.biblioref.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioref.xrefstyle.attribute">
+ <xs:attributeGroup ref="db:db.xrefstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioref.endterm.attribute">
+ <xs:attributeGroup ref="db:db.endterm.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioref.units.attribute">
+ <xs:attribute name="units" use="required" type="xs:token"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioref.begin.attribute">
+ <xs:attribute name="begin" use="required" type="xs:token"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioref.end.attribute">
+ <xs:attribute name="end" use="required" type="xs:token"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioref.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.req.linking.attributes"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ <xs:attribute name="units" type="xs:token"/>
+ <xs:attribute name="begin" type="xs:token"/>
+ <xs:attribute name="end" type="xs:token"/>
+ </xs:attributeGroup>
+ <xs:element name="biblioref">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.biblioref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/callouts.xsd b/slides/schema/xsd/callouts.xsd
new file mode 100644
index 0000000..2205a32
--- /dev/null
+++ b/slides/schema/xsd/callouts.xsd
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: callouts.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.computeroutput.inlines">
+ <xs:choice>
+ <xs:element ref="db:co"/>
+ <xs:element ref="db:db.markup.inlines"/>
+ <xs:choice minOccurs="0">
+ <xs:group ref="db:db.ubiq.inlines"/>
+ <xs:element ref="db:db.os.inlines"/>
+ <xs:element ref="db:db.technical.inlines"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.prompt.inlines">
+ <xs:choice>
+ <xs:element ref="db:co"/>
+ <xs:group ref="db:db._text"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.systemitem.inlines">
+ <xs:choice>
+ <xs:element ref="db:co"/>
+ <xs:group ref="db:db._text"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.userinput.inlines">
+ <xs:choice>
+ <xs:element ref="db:co"/>
+ <xs:element ref="db:db.markup.inlines"/>
+ <xs:group ref="db:db.gui.inlines"/>
+ <xs:group ref="db:db.keyboard.inlines"/>
+ <xs:choice minOccurs="0">
+ <xs:group ref="db:db.ubiq.inlines"/>
+ <xs:element ref="db:db.os.inlines"/>
+ <xs:element ref="db:db.technical.inlines"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.area.units.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="calspair">
+ <xs:annotation>
+ <xs:documentation>Coordinates expressed as a pair of CALS graphic coordinates.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="linecolumn">
+ <xs:annotation>
+ <xs:documentation>Coordinates expressed as a line and column.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="linecolumnpair">
+ <xs:annotation>
+ <xs:documentation>Coordinates expressed as a pair of lines and columns.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="linerange">
+ <xs:annotation>
+ <xs:documentation>Coordinates expressed as a line range.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.area.units-enum.attribute">
+ <xs:attribute name="units" type="db:db.area.units.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.area.units-other.attributes">
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Coordinates expressed in some non-standard units.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.area.units.attribute">
+ <xs:attribute name="units">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.area.units.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Coordinates expressed in some non-standard units.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherunits" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.calloutlist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.calloutlist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.calloutlist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="calloutlist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.calloutlist.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:callout"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.calloutlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.callout.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.callout.arearefs.attribute">
+ <xs:attribute name="arearefs" use="required" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.callout.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.callout.arearefs.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="callout">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="db:db.callout.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.programlistingco.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.programlistingco.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.programlistingco.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="programlistingco" substitutionGroup="db:db.verbatim.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.programlistingco.info"/>
+ <xs:element ref="db:areaspec"/>
+ <xs:element ref="db:programlisting"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.programlistingco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.areaspec.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.areaspec.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.area.units.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="areaspec">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="db:db.area"/>
+ <xs:element ref="db:areaset"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.areaspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.area.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.area.linkends.attribute">
+ <xs:attribute name="linkends" use="required" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.area.label.attribute">
+ <xs:attribute name="label" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.area.coords.attribute">
+ <xs:attribute name="coords" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.area.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="db:db.common.idreq.attributes"/>
+ <xs:attributeGroup ref="db:db.area.units.attribute"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ <xs:attribute ref="xlink:href"/>
+ <xs:attributeGroup ref="xlink:type"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ <xs:attribute name="label"/>
+ <xs:attributeGroup ref="db:db.area.coords.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db.area">
+ <xs:sequence>
+ <xs:element name="area">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.area.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <!-- The only difference is that xml:id is optional -->
+ <xs:attributeGroup name="db.area.inareaset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.area.units.attribute"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ <xs:attribute ref="xlink:href"/>
+ <xs:attributeGroup ref="xlink:type"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ <xs:attribute name="label"/>
+ <xs:attributeGroup ref="db:db.area.coords.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db.area.inareaset">
+ <xs:sequence>
+ <xs:element name="area">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.area.inareaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.areaset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.areaset.linkends.attribute">
+ <xs:attributeGroup ref="db:db.linkends.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.areaset.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.areaset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="db:db.common.idreq.attributes"/>
+ <xs:attributeGroup ref="db:db.area.units.attribute"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ <xs:attribute ref="xlink:href"/>
+ <xs:attributeGroup ref="xlink:type"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:element name="areaset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.area.inareaset"/>
+ <xs:attributeGroup ref="db:db.areaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.screenco.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.screenco.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.screenco.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="screenco" substitutionGroup="db:db.verbatim.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.screenco.info"/>
+ <xs:element ref="db:areaspec"/>
+ <xs:element ref="db:screen"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.screenco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.imageobjectco.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imageobjectco.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.imageobjectco.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="imageobjectco" substitutionGroup="db:db.mediaobject.content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.imageobjectco.info"/>
+ <xs:element ref="db:areaspec"/>
+ <xs:element maxOccurs="unbounded" ref="db:imageobject"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:calloutlist"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.imageobjectco.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.co.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.co.linkends.attribute">
+ <xs:attributeGroup ref="db:db.linkends.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.co.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.co.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="db:db.common.idreq.attributes"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:element name="co">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.co.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.coref.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.coref.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.coref.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.linkend.attribute"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:element name="coref">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.coref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/calstbl.xsd b/slides/schema/xsd/calstbl.xsd
new file mode 100644
index 0000000..bf1b447
--- /dev/null
+++ b/slides/schema/xsd/calstbl.xsd
@@ -0,0 +1,1425 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: calstbl.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="db.char.attribute">
+ <xs:attribute name="char" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.charoff.attribute">
+ <xs:attribute name="charoff" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ <xs:maxExclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.frame.attribute">
+ <xs:attribute name="frame" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all">
+ <xs:annotation>
+ <xs:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Frame only the bottom of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sides">
+ <xs:annotation>
+ <xs:documentation>Frame the left and right sides of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Frame the top of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="topbot">
+ <xs:annotation>
+ <xs:documentation>Frame the top and bottom of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colsep.attribute">
+ <xs:attribute name="colsep" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.rowsep.attribute">
+ <xs:attribute name="rowsep" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orient.attribute">
+ <xs:attribute name="orient" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="land">
+ <xs:annotation>
+ <xs:documentation>90 degrees counter-clockwise from the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="port">
+ <xs:annotation>
+ <xs:documentation>The same orientation as the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tabstyle.attribute">
+ <xs:attribute name="tabstyle" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.rowheader.attribute">
+ <xs:attribute name="rowheader" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol">
+ <xs:annotation>
+ <xs:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="norowheader">
+ <xs:annotation>
+ <xs:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.align.attribute">
+ <xs:attribute name="align" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned on a particular character.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Left and right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.valign.attribute">
+ <xs:attribute name="valign" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.specify-col-by-colname.attributes">
+ <xs:attribute name="colname" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.specify-col-by-namest.attributes">
+ <xs:attribute name="namest" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.specify-span-by-spanspec.attributes">
+ <xs:attribute name="spanname" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.specify-span-directly.attributes">
+ <xs:attribute name="namest" use="required"/>
+ <xs:attribute name="nameend" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.column-spec.attributes">
+ <xs:attribute name="colname"/>
+ <xs:attribute name="namest"/>
+ <xs:attribute name="spanname"/>
+ <xs:attribute name="nameend"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colname.attribute">
+ <xs:attribute name="colname" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.spanname.attribute">
+ <xs:attribute name="spanname" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tgroup.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tgroup.tgroupstyle.attribute">
+ <xs:attribute name="tgroupstyle" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tgroup.cols.attribute">
+ <xs:attribute name="cols" use="required" type="xs:positiveInteger"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tgroup.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff">
+ <xs:simpleType>
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ <xs:maxExclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="tgroupstyle"/>
+ <xs:attributeGroup ref="db:db.tgroup.cols.attribute"/>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned on a particular character.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Left and right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="tgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:spanspec"/>
+ <xs:group minOccurs="0" ref="db:db.cals.thead"/>
+ <xs:group minOccurs="0" ref="db:db.cals.tfoot"/>
+ <xs:group ref="db:db.cals.tbody"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.tgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.colspec.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colspec.colnum.attribute">
+ <xs:attribute name="colnum" use="required" type="xs:positiveInteger"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colspec.colwidth.attribute">
+ <xs:attribute name="colwidth" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colspec.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="colnum" type="xs:positiveInteger"/>
+ <xs:attribute name="char"/>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="colwidth"/>
+ <xs:attribute name="charoff">
+ <xs:simpleType>
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ <xs:maxExclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="colname"/>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned on a particular character.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Left and right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="colspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.colspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.spanspec.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.spanspec.namest.attribute">
+ <xs:attribute name="namest" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.spanspec.nameend.attribute">
+ <xs:attribute name="nameend" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.spanspec.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.spanname.attribute"/>
+ <xs:attributeGroup ref="db:db.spanspec.namest.attribute"/>
+ <xs:attributeGroup ref="db:db.spanspec.nameend.attribute"/>
+ <xs:attribute name="char"/>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="charoff">
+ <xs:simpleType>
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ <xs:maxExclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned on a particular character.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Left and right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="spanspec">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.spanspec.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.thead.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.thead.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.thead">
+ <xs:sequence>
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colspec"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.row"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.cals.thead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.tfoot.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.tfoot.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.tfoot">
+ <xs:sequence>
+ <xs:element name="tfoot">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colspec"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.row"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.cals.tfoot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.tbody.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.tbody.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.tbody">
+ <xs:sequence>
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.row"/>
+ <xs:attributeGroup ref="db:db.cals.tbody.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.row.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.row.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.row">
+ <xs:sequence>
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:entry"/>
+ <xs:element ref="db:entrytbl"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.row.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.entry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entry.morerows.attribute">
+ <xs:attribute name="morerows" use="required" type="xs:integer"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entry.rotate.attribute">
+ <xs:attribute name="rotate" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>Do not rotate the cell.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Rotate the cell 90 degrees counter-clockwise.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="charoff">
+ <xs:simpleType>
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ <xs:maxExclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="morerows" type="xs:integer"/>
+ <xs:attributeGroup ref="db:db.column-spec.attributes"/>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rotate">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>Do not rotate the cell.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Rotate the cell 90 degrees counter-clockwise.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned on a particular character.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Left and right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="entry">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.entry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.entrytbl.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entrytbl.tgroupstyle.attribute">
+ <xs:attribute name="tgroupstyle" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entrytbl.cols.attribute">
+ <xs:attribute name="cols" use="required" type="xs:positiveInteger"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entrytbl.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff">
+ <xs:simpleType>
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ <xs:maxExclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="db:db.column-spec.attributes"/>
+ <xs:attribute name="tgroupstyle"/>
+ <xs:attribute name="cols" type="xs:positiveInteger"/>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned on a particular character.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Left and right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right justified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="entrytbl">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colspec"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:spanspec"/>
+ <xs:group minOccurs="0" ref="db:db.cals.entrytbl.thead"/>
+ <xs:group ref="db:db.cals.entrytbl.tbody"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.entrytbl.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.entrytbl.thead.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.entrytbl.thead.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.entrytbl.thead">
+ <xs:sequence>
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colspec"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.entrytbl.row"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.cals.entrytbl.thead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.entrytbl.tbody.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.entrytbl.tbody.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.entrytbl.tbody">
+ <xs:sequence>
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.entrytbl.row"/>
+ <xs:attributeGroup ref="db:db.cals.entrytbl.tbody.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.entrytbl.row.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.entrytbl.row.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Aligned in the middle.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned at the top of the entry.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.entrytbl.row">
+ <xs:sequence>
+ <xs:element name="row">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:entry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.entrytbl.row.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.table.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.table.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.table.attlist">
+ <xs:attribute name="role"/>
+ <xs:attribute name="label"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="land">
+ <xs:annotation>
+ <xs:documentation>90 degrees counter-clockwise from the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="port">
+ <xs:annotation>
+ <xs:documentation>The same orientation as the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="frame">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all">
+ <xs:annotation>
+ <xs:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Frame only the bottom of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sides">
+ <xs:annotation>
+ <xs:documentation>Frame the left and right sides of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Frame the top of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="topbot">
+ <xs:annotation>
+ <xs:documentation>Frame the top and bottom of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ <xs:attribute name="shortentry">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>Indicates that the full title should be used.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Indicates that the short short title (titleabbrev) should be used.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="tocentry">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>Indicates that the table should not occur in the List of Tables.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Indicates that the table should appear in the List of Tables.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowheader">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol">
+ <xs:annotation>
+ <xs:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="norowheader">
+ <xs:annotation>
+ <xs:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.table.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.onlyreq"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.cals.table">
+ <xs:sequence>
+ <xs:element name="table">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.cals.table.info"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:alt"/>
+ <xs:group ref="db:db.indexing.inlines"/>
+ <xs:element ref="db:textobject"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="db:tgroup"/>
+ </xs:choice>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.cals.table.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cals.informaltable.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cals.informaltable.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="land">
+ <xs:annotation>
+ <xs:documentation>90 degrees counter-clockwise from the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="port">
+ <xs:annotation>
+ <xs:documentation>The same orientation as the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="colsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No column separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a column separator rule on the right</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowsep">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>No row separator rule.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Provide a row separator rule below</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="frame">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all">
+ <xs:annotation>
+ <xs:documentation>Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Frame only the bottom of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sides">
+ <xs:annotation>
+ <xs:documentation>Frame the left and right sides of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Frame the top of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="topbot">
+ <xs:annotation>
+ <xs:documentation>Frame the top and bottom of the table.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ <xs:attribute name="rowheader">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="firstcol">
+ <xs:annotation>
+ <xs:documentation>Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="norowheader">
+ <xs:annotation>
+ <xs:documentation>Indicates that entries in the first column have no special significance with respect to column headers.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.cals.informaltable.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.cals.informaltable">
+ <xs:sequence>
+ <xs:element name="informaltable">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.cals.informaltable.info"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:alt"/>
+ <xs:group ref="db:db.indexing.inlines"/>
+ <xs:element ref="db:textobject"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="db:tgroup"/>
+ </xs:choice>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.cals.informaltable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
diff --git a/slides/schema/xsd/core.xsd b/slides/schema/xsd/core.xsd
new file mode 100644
index 0000000..12e7d64
--- /dev/null
+++ b/slides/schema/xsd/core.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: docbook.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook-slides" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+</xs:schema>
diff --git a/slides/schema/xsd/db.xsd b/slides/schema/xsd/db.xsd
new file mode 100644
index 0000000..1166405
--- /dev/null
+++ b/slides/schema/xsd/db.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:include schemaLocation="pool.xsd"/>
+ <xs:include schemaLocation="hier.xsd"/>
+ <xs:include schemaLocation="annotations.xsd"/>
+ <xs:include schemaLocation="xlink1.xsd"/>
+ <xs:include schemaLocation="sect1.xsd"/>
+ <xs:include schemaLocation="refentry.xsd"/>
+ <xs:include schemaLocation="refsect1.xsd"/>
+ <xs:include schemaLocation="glossary.xsd"/>
+ <xs:include schemaLocation="bibliography.xsd"/>
+ <xs:include schemaLocation="index.xsd"/>
+ <xs:include schemaLocation="toc.xsd"/>
+ <xs:include schemaLocation="tasks.xsd"/>
+ <xs:include schemaLocation="callouts.xsd"/>
+ <xs:include schemaLocation="ebnf.xsd"/>
+ <xs:include schemaLocation="calstbl.xsd"/>
+ <xs:include schemaLocation="htmltbl.xsd"/>
+ <xs:include schemaLocation="msgset.xsd"/>
+ <xs:include schemaLocation="qandaset.xsd"/>
+ <xs:include schemaLocation="math.xsd"/>
+ <xs:include schemaLocation="mathml.xsd"/>
+ <xs:include schemaLocation="svg.xsd"/>
+ <xs:include schemaLocation="markup.xsd"/>
+ <xs:include schemaLocation="product.xsd"/>
+ <xs:include schemaLocation="gui.xsd"/>
+ <xs:include schemaLocation="keyboard.xsd"/>
+ <xs:include schemaLocation="os.xsd"/>
+ <xs:include schemaLocation="programming.xsd"/>
+ <xs:include schemaLocation="admonitions.xsd"/>
+ <xs:include schemaLocation="error.xsd"/>
+ <xs:include schemaLocation="technical.xsd"/>
+ <xs:include schemaLocation="topic.xsd"/>
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+</xs:schema>
diff --git a/slides/schema/xsd/docbook.xsd b/slides/schema/xsd/docbook.xsd
new file mode 100644
index 0000000..9fe8fad
--- /dev/null
+++ b/slides/schema/xsd/docbook.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook-slides" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:include schemaLocation="docbook1.xsd"/>
+ <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: docbook.rnc 7661 2008-02-06 13:52:59Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+ -->
+</xs:schema>
diff --git a/slides/schema/xsd/docbook1.xsd b/slides/schema/xsd/docbook1.xsd
new file mode 100644
index 0000000..50669f7
--- /dev/null
+++ b/slides/schema/xsd/docbook1.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: docbook.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook-slides" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:include schemaLocation="core.xsd"/>
+ <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+</xs:schema>
diff --git a/slides/schema/xsd/ebnf.xsd b/slides/schema/xsd/ebnf.xsd
new file mode 100644
index 0000000..08a5f14
--- /dev/null
+++ b/slides/schema/xsd/ebnf.xsd
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: ebnf.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.productionset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.productionset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.productionset.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="productionset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.productionset.info"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:production"/>
+ <xs:element ref="db:productionrecap"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.productionset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.production.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.production.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="db:db.common.idreq.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="production">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:lhs"/>
+ <xs:element ref="db:rhs"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:constraint"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.production.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.lhs.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.lhs.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="lhs">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.lhs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.rhs.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.rhs.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="rhs">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:nonterminal"/>
+ <xs:element ref="db:lineannotation"/>
+ <xs:element ref="db:sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.rhs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.nonterminal.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.nonterminal.def.attribute">
+ <xs:attribute name="def" use="required" type="xs:anyURI"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.nonterminal.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.nonterminal.def.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="nonterminal" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.nonterminal.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.constraint.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.constraint.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.req.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="constraint">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.constraint.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.productionrecap.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.productionrecap.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.req.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="productionrecap">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.productionrecap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.constraintdef.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.constraintdef.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.constraintdef.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="constraintdef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.constraintdef.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.constraintdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/error.xsd b/slides/schema/xsd/error.xsd
new file mode 100644
index 0000000..3b08196
--- /dev/null
+++ b/slides/schema/xsd/error.xsd
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="db.error.inlines" abstract="true"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.errorcode.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.errorcode.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="errorcode" substitutionGroup="db:db.error.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.errorcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.errorname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.errorname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="errorname" substitutionGroup="db:db.error.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.errorname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.errortext.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.errortext.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="errortext" substitutionGroup="db:db.error.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.errortext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.errortype.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.errortype.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="errortype" substitutionGroup="db:db.error.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.errortype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/glossary.xsd b/slides/schema/xsd/glossary.xsd
new file mode 100644
index 0000000..9a11e84
--- /dev/null
+++ b/slides/schema/xsd/glossary.xsd
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: glossary.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.glossary.inlines">
+ <xs:choice>
+ <xs:group ref="db:db.firstterm"/>
+ <xs:group ref="db:db.glossterm"/>
+ <xs:group ref="db:db._firstterm"/>
+ <xs:group ref="db:db._glossterm"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.baseform.attribute">
+ <xs:attribute name="baseform"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glosslist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glosslist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.glosslist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="glosslist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="db:db.glosslist.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.glosslist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glossentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossentry.sortas.attribute">
+ <xs:attribute name="sortas" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="sortas"/>
+ </xs:attributeGroup>
+ <xs:element name="glossentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.glossterm"/>
+ <xs:element minOccurs="0" ref="db:acronym"/>
+ <xs:element minOccurs="0" ref="db:abbrev"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.indexterm"/>
+ <xs:choice>
+ <xs:element ref="db:glosssee"/>
+ <xs:element maxOccurs="unbounded" ref="db:glossdef"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.glossentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glossdef.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossdef.subject.attribute">
+ <xs:attribute name="subject" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossdef.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="subject"/>
+ </xs:attributeGroup>
+ <xs:element name="glossdef">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:glossseealso"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.glossdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glosssee.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glosssee.otherterm.attribute">
+ <xs:attribute name="otherterm" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glosssee.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:element name="glosssee">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.glosssee.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glossseealso.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossseealso.otherterm.attribute">
+ <xs:attribute name="otherterm" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossseealso.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="otherterm" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:element name="glossseealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.glossseealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.firstterm.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.firstterm.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.baseform.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db.firstterm">
+ <xs:sequence>
+ <xs:element name="firstterm">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.firstterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db._firstterm.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db._firstterm.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.baseform.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db._firstterm">
+ <xs:sequence>
+ <xs:element name="firstterm">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db._firstterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glossterm.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossterm.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.baseform.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db.glossterm">
+ <xs:sequence>
+ <xs:element name="glossterm">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.glossterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db._glossterm.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db._glossterm.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.baseform.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db._glossterm">
+ <xs:sequence>
+ <xs:element name="glossterm">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db._glossterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glossary.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossary.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossary.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.glossary.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="glossary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.glossary.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:glossdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:glossentry"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="db:bibliography"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.glossary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.glossdiv.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossdiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.glossdiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.glossdiv.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="glossdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.glossdiv.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:glossentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.glossdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.termdef.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.termdef.attlist">
+ <xs:attribute name="role"/>
+ <xs:attribute name="sortas"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.baseform.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="termdef" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.termdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/gui.xsd b/slides/schema/xsd/gui.xsd
new file mode 100644
index 0000000..56fdb04
--- /dev/null
+++ b/slides/schema/xsd/gui.xsd
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.keycombination.contentmodel">
+ <xs:choice>
+ <xs:element ref="db:mousebutton"/>
+ <xs:choice>
+ <xs:element ref="db:keycap"/>
+ <xs:element ref="db:keycombo"/>
+ <xs:element ref="db:keysym"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.gui.inlines">
+ <xs:choice>
+ <xs:element ref="db:guiicon"/>
+ <xs:element ref="db:guibutton"/>
+ <xs:element ref="db:guimenuitem"/>
+ <xs:element ref="db:guimenu"/>
+ <xs:element ref="db:guisubmenu"/>
+ <xs:element ref="db:guilabel"/>
+ <xs:element ref="db:menuchoice"/>
+ <xs:element ref="db:mousebutton"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.guibutton.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.guibutton.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="guibutton">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:accel"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.guibutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.guiicon.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.guiicon.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="guiicon">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:accel"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.guiicon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.guilabel.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.guilabel.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="guilabel">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:accel"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.guilabel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.guimenu.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.guimenu.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="guimenu">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:accel"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.guimenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.guimenuitem.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.guimenuitem.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="guimenuitem">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:accel"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.guimenuitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.guisubmenu.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.guisubmenu.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="guisubmenu">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:accel"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.guisubmenu.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.menuchoice.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.menuchoice.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="menuchoice">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:shortcut"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:guibutton"/>
+ <xs:element ref="db:guiicon"/>
+ <xs:element ref="db:guilabel"/>
+ <xs:element ref="db:guimenu"/>
+ <xs:element ref="db:guimenuitem"/>
+ <xs:element ref="db:guisubmenu"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.menuchoice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.mousebutton.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.mousebutton.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="mousebutton">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.mousebutton.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/hier.xsd b/slides/schema/xsd/hier.xsd
new file mode 100644
index 0000000..59a9750
--- /dev/null
+++ b/slides/schema/xsd/hier.xsd
@@ -0,0 +1,606 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: hier.rnc 8994 2011-04-19 20:07:33Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="db.status.attribute">
+ <xs:attribute name="status" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:group name="db.toplevel.sections">
+ <xs:choice>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:section"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:sect1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:refentry"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.toplevel.blocks.or.sections">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.toplevel.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.toplevel.sections"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.recursive.sections">
+ <xs:choice>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:section"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:refentry"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.recursive.blocks.or.sections">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.recursive.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.recursive.sections"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:element name="db.divisions" abstract="true"/>
+ <xs:element name="db.components" abstract="true"/>
+ <xs:group name="db.navigation.components">
+ <xs:choice>
+ <xs:element ref="db:glossary"/>
+ <xs:element ref="db:bibliography"/>
+ <xs:element ref="db:index"/>
+ <xs:element ref="db:toc"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.component.contentmodel">
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ <xs:group ref="db:db.toplevel.blocks.or.sections"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:element name="db.setindex.components" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.setindex.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:indexentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.setindex.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="db.toc.components">
+ <xs:sequence>
+ <xs:element ref="db:toc"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="db.set.components" abstract="true"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.set.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.set.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.set.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.set.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="set" substitutionGroup="db:db.set.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.set.info"/>
+ <xs:group minOccurs="0" ref="db:db.toc.components"/>
+ <xs:element maxOccurs="unbounded" ref="db:db.set.components"/>
+ <xs:element minOccurs="0" ref="db:db.setindex.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.set.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.book.components">
+ <xs:choice>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db.navigation.components"/>
+ <xs:element ref="db:db.components"/>
+ <xs:element ref="db:db.divisions"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:topic"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.book.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.book.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.book.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.book.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="book" substitutionGroup="db:db.set.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.book.info"/>
+ <xs:group ref="db:db.book.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.book.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.dedication.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.dedication.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.dedication.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.dedication.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="dedication" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.dedication.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.dedication.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.acknowledgements.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.acknowledgements.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.acknowledgements.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.acknowledgements.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="acknowledgements" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.acknowledgements.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.acknowledgements.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.colophon.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colophon.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.colophon.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.colophon.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="colophon" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.colophon.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.colophon.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.appendix.contentmodel">
+ <xs:choice>
+ <xs:group ref="db:db.component.contentmodel"/>
+ <xs:element maxOccurs="unbounded" ref="db:topic"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.appendix.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.appendix.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.appendix.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.appendix.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="appendix" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.appendix.info"/>
+ <xs:group ref="db:db.appendix.contentmodel"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.appendix.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.chapter.contentmodel">
+ <xs:choice>
+ <xs:group ref="db:db.component.contentmodel"/>
+ <xs:element maxOccurs="unbounded" ref="db:topic"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.chapter.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.chapter.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.chapter.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.chapter.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="chapter" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.chapter.info"/>
+ <xs:group ref="db:db.chapter.contentmodel"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.chapter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.part.components">
+ <xs:choice>
+ <xs:choice>
+ <xs:group ref="db:db.navigation.components"/>
+ <xs:element ref="db:db.components"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:element ref="db:refentry"/>
+ <xs:element ref="db:reference"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.part.contentmodel">
+ <xs:choice>
+ <xs:group maxOccurs="unbounded" ref="db:db.part.components"/>
+ <xs:element maxOccurs="unbounded" ref="db:topic"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.part.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.part.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.part.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.part.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="part" substitutionGroup="db:db.divisions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.part.info"/>
+ <xs:element minOccurs="0" ref="db:partintro"/>
+ <xs:group ref="db:db.part.contentmodel"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.part.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.preface.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.preface.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.preface.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.preface.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="preface" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.preface.info"/>
+ <xs:group ref="db:db.component.contentmodel"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.preface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.partintro.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.partintro.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.partintro.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.partintro.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="partintro">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.partintro.info"/>
+ <xs:group ref="db:db.toplevel.blocks.or.sections"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.partintro.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.section.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.section.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.section.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.section.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="section">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.section.info"/>
+ <xs:group ref="db:db.recursive.blocks.or.sections"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.section.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.simplesect.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplesect.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplesect.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.simplesect.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="simplesect">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.simplesect.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.simplesect.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.article.components">
+ <xs:sequence>
+ <xs:group ref="db:db.toplevel.sections"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.article.navcomponents">
+ <xs:choice>
+ <xs:group ref="db:db.navigation.components"/>
+ <xs:element ref="db:acknowledgements"/>
+ <xs:element ref="db:dedication"/>
+ <xs:element ref="db:appendix"/>
+ <xs:element ref="db:colophon"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.article.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.article.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="faq">
+ <xs:annotation>
+ <xs:documentation>A collection of frequently asked questions.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="journalarticle">
+ <xs:annotation>
+ <xs:documentation>An article in a journal or other periodical.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="productsheet">
+ <xs:annotation>
+ <xs:documentation>A description of a product.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="specification">
+ <xs:annotation>
+ <xs:documentation>A specification.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="techreport">
+ <xs:annotation>
+ <xs:documentation>A technical report.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="whitepaper">
+ <xs:annotation>
+ <xs:documentation>A white paper.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.article.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.article.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.article.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.article.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ <xs:attribute name="class" type="db:db.article.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.article.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="article" substitutionGroup="db:db.components">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.article.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.article.navcomponents"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.article.components"/>
+ </xs:sequence>
+ <xs:group ref="db:db.article.components"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.article.navcomponents"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.article.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/htmltbl.xsd b/slides/schema/xsd/htmltbl.xsd
new file mode 100644
index 0000000..61c68a4
--- /dev/null
+++ b/slides/schema/xsd/htmltbl.xsd
@@ -0,0 +1,536 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: htmltbl.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="db.html.coreattrs">
+ <xs:attribute name="class"/>
+ <xs:attribute name="style"/>
+ <xs:attribute name="title"/>
+ </xs:attributeGroup>
+ <!-- dir isn't listed here because it's already a common attribute -->
+ <xs:attributeGroup name="db.html.i18n">
+ <xs:attribute name="lang"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.events">
+ <xs:attribute name="onclick"/>
+ <xs:attribute name="ondblclick"/>
+ <xs:attribute name="onmousedown"/>
+ <xs:attribute name="onmouseup"/>
+ <xs:attribute name="onmouseover"/>
+ <xs:attribute name="onmousemove"/>
+ <xs:attribute name="onmouseout"/>
+ <xs:attribute name="onkeypress"/>
+ <xs:attribute name="onkeydown"/>
+ <xs:attribute name="onkeyup"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.attrs">
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.html.coreattrs"/>
+ <xs:attributeGroup ref="db:db.html.i18n"/>
+ <xs:attributeGroup ref="db:db.html.events"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.cellhalign">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left-flush data/Left-justify text. This is the default value for table data.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Center data/Center-justify text. This is the default value for table headers.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right-flush data/Right-justify text.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Double-justify text.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char"/>
+ <xs:attribute name="charoff">
+ <xs:simpleType>
+ <xs:union memberTypes="xs:integer">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[0-9]+%"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.cellvalign">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Cell data is flush with the top of the cell.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Cell data is centered vertically within the cell. This is the default value.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Cell data is flush with the bottom of the cell.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="baseline">
+ <xs:annotation>
+ <xs:documentation>All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.table.attributes">
+ <xs:attribute name="summary"/>
+ <xs:attribute name="width">
+ <xs:simpleType>
+ <xs:union memberTypes="xs:integer">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[0-9]+%"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="border" type="xs:nonNegativeInteger"/>
+ <xs:attribute name="frame">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="void">
+ <xs:annotation>
+ <xs:documentation>No sides. This is the default value.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="above">
+ <xs:annotation>
+ <xs:documentation>The top side only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="below">
+ <xs:annotation>
+ <xs:documentation>The bottom side only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="hsides">
+ <xs:annotation>
+ <xs:documentation>The top and bottom sides only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="lhs">
+ <xs:annotation>
+ <xs:documentation>The left-hand side only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="rhs">
+ <xs:annotation>
+ <xs:documentation>The right-hand side only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="vsides">
+ <xs:annotation>
+ <xs:documentation>The right and left sides only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="box">
+ <xs:annotation>
+ <xs:documentation>All four sides.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="border">
+ <xs:annotation>
+ <xs:documentation>All four sides.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rules">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>No rules. This is the default value.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="groups">
+ <xs:annotation>
+ <xs:documentation>Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="rows">
+ <xs:annotation>
+ <xs:documentation>Rules will appear between rows only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="cols">
+ <xs:annotation>
+ <xs:documentation>Rules will appear between columns only.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="all">
+ <xs:annotation>
+ <xs:documentation>Rules will appear between all rows and columns.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="cellspacing">
+ <xs:simpleType>
+ <xs:union memberTypes="xs:integer">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[0-9]+%"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="cellpadding">
+ <xs:simpleType>
+ <xs:union memberTypes="xs:integer">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[0-9]+%"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.tablecell.attributes">
+ <xs:attribute name="abbr"/>
+ <xs:attribute name="axis"/>
+ <xs:attribute name="headers"/>
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="row">
+ <xs:annotation>
+ <xs:documentation>The current cell provides header information for the rest of the row that contains it</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="col">
+ <xs:annotation>
+ <xs:documentation>The current cell provides header information for the rest of the column that contains it.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="rowgroup">
+ <xs:annotation>
+ <xs:documentation>The header cell provides header information for the rest of the row group that contains it.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="colgroup">
+ <xs:annotation>
+ <xs:documentation>The header cell provides header information for the rest of the column group that contains it.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="rowspan" type="xs:nonNegativeInteger"/>
+ <xs:attribute name="colspan" type="xs:nonNegativeInteger"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.table.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="db.html.table.model">
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="db:db.html.table.info"/>
+ <xs:group ref="db:db.html.caption"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colgroup"/>
+ </xs:choice>
+ <xs:group minOccurs="0" ref="db:db.html.thead"/>
+ <xs:group minOccurs="0" ref="db:db.html.tfoot"/>
+ <xs:choice>
+ <xs:group maxOccurs="unbounded" ref="db:db.html.tbody"/>
+ <xs:element maxOccurs="unbounded" ref="db:tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:group name="db.html.informaltable.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="db.html.informaltable.model">
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="db:db.html.informaltable.info"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:col"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:colgroup"/>
+ </xs:choice>
+ <xs:group minOccurs="0" ref="db:db.html.thead"/>
+ <xs:group minOccurs="0" ref="db:db.html.tfoot"/>
+ <xs:choice>
+ <xs:group maxOccurs="unbounded" ref="db:db.html.tbody"/>
+ <xs:element maxOccurs="unbounded" ref="db:tr"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.table.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.table.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.html.table.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.table.attributes"/>
+ <xs:attribute name="role"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="orient">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="land">
+ <xs:annotation>
+ <xs:documentation>90 degrees counter-clockwise from the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="port">
+ <xs:annotation>
+ <xs:documentation>The same orientation as the rest of the text flow.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ <xs:attribute name="tabstyle"/>
+ <xs:attribute name="floatstyle"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.table">
+ <xs:sequence>
+ <xs:element name="table">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.html.table.model">
+ <xs:attributeGroup ref="db:db.html.table.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.informaltable.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.table.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.informaltable">
+ <xs:sequence>
+ <xs:element name="informaltable">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.html.informaltable.model">
+ <xs:attributeGroup ref="db:db.html.informaltable.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.caption.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.caption">
+ <xs:sequence>
+ <xs:element name="caption">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.html.caption.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.col.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attribute name="span" type="xs:nonNegativeInteger"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:element name="col">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.html.col.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.colgroup.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attribute name="span" type="xs:nonNegativeInteger"/>
+ <xs:attribute name="width"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:element name="colgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:col"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.html.colgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.thead.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.thead">
+ <xs:sequence>
+ <xs:element name="thead">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:tr"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.html.thead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.tfoot.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.tfoot">
+ <xs:sequence>
+ <xs:element name="tfoot">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:tr"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.html.tfoot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.tbody.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:group name="db.html.tbody">
+ <xs:sequence>
+ <xs:element name="tbody">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:tr"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.html.tbody.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.tr.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:th"/>
+ <xs:element ref="db:td"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.html.tr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.th.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.tablecell.attributes"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:element name="th">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.html.th.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.html.td.attlist">
+ <xs:attributeGroup ref="db:db.html.attrs"/>
+ <xs:attributeGroup ref="db:db.html.tablecell.attributes"/>
+ <xs:attributeGroup ref="db:db.html.cellhalign"/>
+ <xs:attributeGroup ref="db:db.html.cellvalign"/>
+ </xs:attributeGroup>
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.html.td.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/index.xsd b/slides/schema/xsd/index.xsd
new file mode 100644
index 0000000..3635f95
--- /dev/null
+++ b/slides/schema/xsd/index.xsd
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: index.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.significance.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="normal">
+ <xs:annotation>
+ <xs:documentation>Normal</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="preferred">
+ <xs:annotation>
+ <xs:documentation>Preferred</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.significance.attribute">
+ <xs:attribute name="significance" use="required" type="db:db.significance.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.zone.attribute">
+ <xs:attribute name="zone" use="required" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.pagenum.attribute">
+ <xs:attribute name="pagenum" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.scope.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all">
+ <xs:annotation>
+ <xs:documentation>All indexes</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="global">
+ <xs:annotation>
+ <xs:documentation>The global index (as for a combined index of a set of books)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="local">
+ <xs:annotation>
+ <xs:documentation>The local index (the index for this document only)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.scope.attribute">
+ <xs:attribute name="scope" use="required" type="db:db.scope.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sortas.attribute">
+ <xs:attribute name="sortas" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.index.type.attribute">
+ <xs:attribute name="type" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.itermset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.itermset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="itermset">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.indexterm.singular"/>
+ <xs:attributeGroup ref="db:db.itermset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:complexType name="db.indexterm.contentmodel">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:primary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="db:secondary"/>
+ <xs:choice minOccurs="0">
+ <xs:sequence>
+ <xs:element ref="db:tertiary"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="db:see"/>
+ <xs:element maxOccurs="unbounded" ref="db:seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="db:see"/>
+ <xs:element maxOccurs="unbounded" ref="db:seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="db:see"/>
+ <xs:element maxOccurs="unbounded" ref="db:seealso"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.indexterm.singular.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.singular.class.attribute">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="singular">
+ <xs:annotation>
+ <xs:documentation>A singular index term</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.singular.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="significance" type="db:db.significance.enumeration"/>
+ <xs:attribute name="zone" type="xs:IDREFS"/>
+ <xs:attribute name="pagenum"/>
+ <xs:attribute name="scope" type="db:db.scope.enumeration"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="singular">
+ <xs:annotation>
+ <xs:documentation>A singular index term</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:group name="db.indexterm.singular">
+ <xs:sequence>
+ <xs:element name="indexterm">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.indexterm.contentmodel">
+ <xs:attributeGroup ref="db:db.indexterm.singular.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.indexterm.startofrange.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.startofrange.class.attribute">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="startofrange">
+ <xs:annotation>
+ <xs:documentation>The start of a range</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.startofrange.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="significance" type="db:db.significance.enumeration"/>
+ <xs:attribute name="zone" type="xs:IDREFS"/>
+ <xs:attribute name="pagenum"/>
+ <xs:attribute name="scope" type="db:db.scope.enumeration"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="db:db.indexterm.startofrange.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db.indexterm.startofrange">
+ <xs:sequence>
+ <xs:element name="indexterm">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.indexterm.contentmodel">
+ <xs:attributeGroup ref="db:db.indexterm.startofrange.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.indexterm.endofrange.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.endofrange.class.attribute">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="endofrange">
+ <xs:annotation>
+ <xs:documentation>The end of a range</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.endofrange.startref.attribute">
+ <xs:attribute name="startref" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexterm.endofrange.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.indexterm.endofrange.class.attribute"/>
+ <xs:attributeGroup ref="db:db.indexterm.endofrange.startref.attribute"/>
+ </xs:attributeGroup>
+ <xs:group name="db.indexterm.endofrange">
+ <xs:sequence>
+ <xs:element name="indexterm">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.indexterm.endofrange.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:group name="db.indexterm">
+ <xs:choice>
+ <xs:group ref="db:db.indexterm.singular"/>
+ <xs:group ref="db:db.indexterm.startofrange"/>
+ <xs:group ref="db:db.indexterm.endofrange"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.primary.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.primary.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="sortas"/>
+ </xs:attributeGroup>
+ <xs:element name="primary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.primary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.secondary.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.secondary.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="sortas"/>
+ </xs:attributeGroup>
+ <xs:element name="secondary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.secondary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tertiary.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tertiary.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="sortas"/>
+ </xs:attributeGroup>
+ <xs:element name="tertiary">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.tertiary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.see.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.see.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="see">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.see.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.seealso.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.seealso.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="seealso">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.seealso.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.index.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.index.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.index.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ <xs:attribute name="type"/>
+ </xs:attributeGroup>
+ <xs:group name="db.index.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <!--
+ Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
+ Authors can use an empty index to indicate where a generated index should
+ appear.
+ -->
+ <xs:element name="index">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.index.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:indexdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:indexentry"/>
+ <xs:element ref="db:segmentedlist"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.index.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.setindex.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.setindex.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.setindex.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ <xs:attribute name="type"/>
+ </xs:attributeGroup>
+ <xs:group name="db.setindex.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="setindex" substitutionGroup="db:db.setindex.components"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.indexdiv.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexdiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexdiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.indexdiv.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="indexdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.indexdiv.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:indexentry"/>
+ <xs:element ref="db:segmentedlist"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.indexdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.indexentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.indexentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="indexentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:primaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:seeie"/>
+ <xs:element ref="db:seealsoie"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:secondaryie"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:seeie"/>
+ <xs:element ref="db:seealsoie"/>
+ <xs:element ref="db:tertiaryie"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.indexentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.primaryie.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.primaryie.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:element name="primaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.primaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.secondaryie.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.secondaryie.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:element name="secondaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.secondaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tertiaryie.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tertiaryie.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:element name="tertiaryie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.tertiaryie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.seeie.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.seeie.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:element name="seeie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.seeie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.seealsoie.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.seealsoie.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="linkends" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:element name="seealsoie">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.seealsoie.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/keyboard.xsd b/slides/schema/xsd/keyboard.xsd
new file mode 100644
index 0000000..26ca4d7
--- /dev/null
+++ b/slides/schema/xsd/keyboard.xsd
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.keyboard.inlines">
+ <xs:choice>
+ <xs:element ref="db:keycombo"/>
+ <xs:element ref="db:keycap"/>
+ <xs:element ref="db:keycode"/>
+ <xs:element ref="db:keysym"/>
+ <xs:element ref="db:shortcut"/>
+ <xs:element ref="db:accel"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.keycap.function.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="alt">
+ <xs:annotation>
+ <xs:documentation>The "Alt" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="backspace">
+ <xs:annotation>
+ <xs:documentation>The "Backspace" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="command">
+ <xs:annotation>
+ <xs:documentation>The "Command" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="control">
+ <xs:annotation>
+ <xs:documentation>The "Control" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="delete">
+ <xs:annotation>
+ <xs:documentation>The "Delete" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="down">
+ <xs:annotation>
+ <xs:documentation>The down arrow</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="end">
+ <xs:annotation>
+ <xs:documentation>The "End" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="enter">
+ <xs:annotation>
+ <xs:documentation>The "Enter" or "Return" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="escape">
+ <xs:annotation>
+ <xs:documentation>The "Escape" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="home">
+ <xs:annotation>
+ <xs:documentation>The "Home" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="insert">
+ <xs:annotation>
+ <xs:documentation>The "Insert" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>The left arrow</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="meta">
+ <xs:annotation>
+ <xs:documentation>The "Meta" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="option">
+ <xs:annotation>
+ <xs:documentation>The "Option" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="pagedown">
+ <xs:annotation>
+ <xs:documentation>The page down key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="pageup">
+ <xs:annotation>
+ <xs:documentation>The page up key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>The right arrow</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="shift">
+ <xs:annotation>
+ <xs:documentation>The "Shift" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="space">
+ <xs:annotation>
+ <xs:documentation>The spacebar</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="tab">
+ <xs:annotation>
+ <xs:documentation>The "Tab" key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="up">
+ <xs:annotation>
+ <xs:documentation>The up arrow</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.keycap.function-enum.attribute">
+ <xs:attribute name="function" type="db:db.keycap.function.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycap.function-other.attributes">
+ <xs:attribute name="function">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard function key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherfunction" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycap.function.attrib">
+ <xs:attribute name="function">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.keycap.function.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard function key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherfunction"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycap.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycap.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.keycap.function.attrib"/>
+ </xs:attributeGroup>
+ <xs:element name="keycap">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.keycap.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.keycode.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycode.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="keycode">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.keycode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.keycombo.action.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="click">
+ <xs:annotation>
+ <xs:documentation>A (single) mouse click.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="double-click">
+ <xs:annotation>
+ <xs:documentation>A double mouse click.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="press">
+ <xs:annotation>
+ <xs:documentation>A mouse or key press.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="seq">
+ <xs:annotation>
+ <xs:documentation>Sequential clicks or presses.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="simul">
+ <xs:annotation>
+ <xs:documentation>Simultaneous clicks or presses.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.keycombo.action-enum.attribute">
+ <xs:attribute name="action" type="db:db.keycombo.action.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycombo.action-other.attributes">
+ <xs:attribute name="action">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard action</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otheraction" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycombo.action.attrib">
+ <xs:attribute name="action">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.keycombo.action.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard action</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otheraction"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycombo.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keycombo.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.keycombo.action.attrib"/>
+ </xs:attributeGroup>
+ <xs:element name="keycombo">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.keycombination.contentmodel"/>
+ <xs:attributeGroup ref="db:db.keycombo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.keysym.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keysym.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="keysym">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.keysym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.accel.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.accel.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="accel">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.accel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.shortcut.action.attrib">
+ <xs:attributeGroup ref="db:db.keycombo.action.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.shortcut.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.shortcut.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.shortcut.action.attrib"/>
+ </xs:attributeGroup>
+ <xs:element name="shortcut">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.keycombination.contentmodel"/>
+ <xs:attributeGroup ref="db:db.shortcut.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/markup.xsd b/slides/schema/xsd/markup.xsd
new file mode 100644
index 0000000..d550bd5
--- /dev/null
+++ b/slides/schema/xsd/markup.xsd
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="db.markup.inlines" abstract="true"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.markup.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.markup.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="markup" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.markup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tag.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.tag.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="attribute">
+ <xs:annotation>
+ <xs:documentation>An attribute</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="attvalue">
+ <xs:annotation>
+ <xs:documentation>An attribute value</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="element">
+ <xs:annotation>
+ <xs:documentation>An element</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="emptytag">
+ <xs:annotation>
+ <xs:documentation>An empty element tag</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="endtag">
+ <xs:annotation>
+ <xs:documentation>An end tag</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="genentity">
+ <xs:annotation>
+ <xs:documentation>A general entity</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="localname">
+ <xs:annotation>
+ <xs:documentation>The local name part of a qualified name</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="namespace">
+ <xs:annotation>
+ <xs:documentation>A namespace</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="numcharref">
+ <xs:annotation>
+ <xs:documentation>A numeric character reference</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="paramentity">
+ <xs:annotation>
+ <xs:documentation>A parameter entity</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="pi">
+ <xs:annotation>
+ <xs:documentation>A processing instruction</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="prefix">
+ <xs:annotation>
+ <xs:documentation>The prefix part of a qualified name</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="comment">
+ <xs:annotation>
+ <xs:documentation>An SGML comment</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="starttag">
+ <xs:annotation>
+ <xs:documentation>A start tag</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="xmlpi">
+ <xs:annotation>
+ <xs:documentation>An XML processing instruction</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.tag.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.tag.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tag.namespace.attribute">
+ <xs:attribute name="namespace" use="required" type="xs:anyURI"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tag.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.tag.class.enumeration"/>
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ </xs:attributeGroup>
+ <xs:element name="tag" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.tag.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.symbol.class.attribute">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit">
+ <xs:annotation>
+ <xs:documentation>The value is a limit of some kind</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.symbol.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.symbol.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit">
+ <xs:annotation>
+ <xs:documentation>The value is a limit of some kind</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="symbol" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.symbol.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.token.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.token.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="token" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.token.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.literal.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.literal.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="literal" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.literal.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="code.language.attribute">
+ <xs:attribute name="language" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.code.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.code.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <xs:element name="code" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db.programming.inlines"/>
+ <xs:group ref="db:db._text"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.code.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.constant.class.attribute">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit">
+ <xs:annotation>
+ <xs:documentation>The value is a limit of some kind</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.constant.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.constant.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="limit">
+ <xs:annotation>
+ <xs:documentation>The value is a limit of some kind</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="constant" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.constant.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/math.xsd b/slides/schema/xsd/math.xsd
new file mode 100644
index 0000000..032568a
--- /dev/null
+++ b/slides/schema/xsd/math.xsd
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: math.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="db.math.inlines" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ <xs:group ref="db:db.inlineequation.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.inlineequation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="db.initializer.inlines">
+ <xs:choice>
+ <xs:element ref="db:mathphrase"/>
+ <xs:element ref="db:db.markup.inlines"/>
+ <xs:group ref="db:db._text"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:group name="db.equation.content">
+ <xs:choice>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:mediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="db:mathphrase"/>
+ </xs:choice>
+ <xs:group maxOccurs="unbounded" ref="dbs:db._any.mml"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.inlineequation.content">
+ <xs:choice>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:inlinemediaobject"/>
+ <xs:element maxOccurs="unbounded" ref="db:mathphrase"/>
+ </xs:choice>
+ <xs:group maxOccurs="unbounded" ref="dbs:db._any.mml"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.equation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.equation.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.equation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ <xs:attribute name="floatstyle"/>
+ </xs:attributeGroup>
+ <xs:group name="db.equation.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="equation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.equation.info"/>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ <xs:group ref="db:db.equation.content"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.equation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.informalequation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalequation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.informalequation.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="informalequation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.informalequation.info"/>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ <xs:group ref="db:db.equation.content"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.informalequation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.inlineequation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.inlineequation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="inlineequation" substitutionGroup="db:db.math.inlines"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.mathphrase.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.mathphrase.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="mathphrase">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:group ref="db:db.ubiq.inlines"/>
+ <xs:group ref="db:db._emphasis"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.mathphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/mathml.xsd b/slides/schema/xsd/mathml.xsd
new file mode 100644
index 0000000..9814b90
--- /dev/null
+++ b/slides/schema/xsd/mathml.xsd
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: mathml.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ============================================================ -->
+ <xs:attributeGroup name="db.imagedata.mathml.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.mathml.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="format">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="mathml">
+ <xs:annotation>
+ <xs:documentation>Specifies MathML.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align" type="db:db.imagedata.align.enumeration"/>
+ <xs:attribute name="valign" type="db:db.imagedata.valign.enumeration"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="scalefit" type="db:db.imagedata.scalefit.enumeration"/>
+ <xs:attribute name="scale" type="xs:positiveInteger"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ </xs:attributeGroup>
+ <xs:group name="db.imagedata.mathml.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.imagedata.mathml">
+ <xs:sequence>
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.imagedata.mathml.info"/>
+ <xs:group maxOccurs="unbounded" ref="dbs:db._any.mml"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.imagedata.mathml.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ============================================================ -->
+</xs:schema>
diff --git a/slides/schema/xsd/msgset.xsd b/slides/schema/xsd/msgset.xsd
new file mode 100644
index 0000000..c7f8bb0
--- /dev/null
+++ b/slides/schema/xsd/msgset.xsd
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: msgset.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.msgset.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="msgset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.msgset.info"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:msgentry"/>
+ <xs:element maxOccurs="unbounded" ref="db:simplemsgentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msgset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="msgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:msg"/>
+ <xs:element minOccurs="0" ref="db:msginfo"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.simplemsgentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplemsgentry.msgaud.attribute">
+ <xs:attribute name="msgaud" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplemsgentry.msgorig.attribute">
+ <xs:attribute name="msgorig" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplemsgentry.msglevel.attribute">
+ <xs:attribute name="msglevel" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplemsgentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="msgaud"/>
+ <xs:attribute name="msgorig"/>
+ <xs:attribute name="msglevel"/>
+ </xs:attributeGroup>
+ <xs:element name="simplemsgentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:msgtext"/>
+ <xs:element maxOccurs="unbounded" ref="db:msgexplan"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.simplemsgentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msg.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msg.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.msg.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="msg">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.msg.info"/>
+ <xs:element ref="db:msgmain"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:msgsub"/>
+ <xs:element ref="db:msgrel"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgmain.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgmain.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.msgmain.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="msgmain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.msgmain.info"/>
+ <xs:element ref="db:msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msgmain.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgsub.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgsub.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.msgsub.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="msgsub">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.msgsub.info"/>
+ <xs:element ref="db:msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msgsub.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgrel.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgrel.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.msgrel.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="msgrel">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.msgrel.info"/>
+ <xs:element ref="db:msgtext"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msgrel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgtext.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgtext.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="msgtext">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="db:db.msgtext.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msginfo.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msginfo.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="msginfo">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:msglevel"/>
+ <xs:element ref="db:msgorig"/>
+ <xs:element ref="db:msgaud"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.msginfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msglevel.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msglevel.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="msglevel">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.msglevel.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgorig.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgorig.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="msgorig">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.msgorig.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgaud.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgaud.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="msgaud">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.msgaud.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.msgexplan.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.msgexplan.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.msgexplan.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="msgexplan">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.msgexplan.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.msgexplan.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/os.xsd b/slides/schema/xsd/os.xsd
new file mode 100644
index 0000000..8bd46d0
--- /dev/null
+++ b/slides/schema/xsd/os.xsd
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:element name="db.synopsis.blocks" abstract="true"/>
+ <xs:element name="db.os.inlines" abstract="true"/>
+ <!-- ====================================================================== -->
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.prompt.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.prompt.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="prompt" substitutionGroup="db:db.os.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.prompt.inlines"/>
+ <xs:attributeGroup ref="db:db.prompt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.envar.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.envar.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="envar" substitutionGroup="db:db.os.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.envar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.filename.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="devicefile">
+ <xs:annotation>
+ <xs:documentation>A device</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="directory">
+ <xs:annotation>
+ <xs:documentation>A directory</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="extension">
+ <xs:annotation>
+ <xs:documentation>A filename extension</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="headerfile">
+ <xs:annotation>
+ <xs:documentation>A header file (as for a programming language)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="libraryfile">
+ <xs:annotation>
+ <xs:documentation>A library file</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="partition">
+ <xs:annotation>
+ <xs:documentation>A partition (as of a hard disk)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="symlink">
+ <xs:annotation>
+ <xs:documentation>A symbolic link</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.filename.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.filename.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.filename.path.attribute">
+ <xs:attribute name="path" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.filename.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.filename.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="path"/>
+ <xs:attribute name="class" type="db:db.filename.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="filename" substitutionGroup="db:db.os.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.filename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.command.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.command.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="command" substitutionGroup="db:db.os.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.command.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.computeroutput.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.computeroutput.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="computeroutput" substitutionGroup="db:db.os.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.computeroutput.inlines"/>
+ <xs:attributeGroup ref="db:db.computeroutput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.userinput.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.userinput.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="userinput" substitutionGroup="db:db.os.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.userinput.inlines"/>
+ <xs:attributeGroup ref="db:db.userinput.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.cmdsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cmdsynopsis.sepchar.attribute">
+ <xs:attribute name="sepchar" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cmdsynopsis.cmdlength.attribute">
+ <xs:attribute name="cmdlength" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cmdsynopsis.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cmdsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="sepchar"/>
+ <xs:attribute name="cmdlength"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:group name="db.cmdsynopsis.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="cmdsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.cmdsynopsis.info"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:command"/>
+ <xs:element ref="db:arg"/>
+ <xs:group ref="db:db.group"/>
+ <xs:element ref="db:sbr"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:synopfragment"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.cmdsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.rep.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="norepeat">
+ <xs:annotation>
+ <xs:documentation>Can not be repeated.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="repeat">
+ <xs:annotation>
+ <xs:documentation>Can be repeated.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.rep.attribute">
+ <xs:attribute name="rep" use="required" type="db:db.rep.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.choice.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt">
+ <xs:annotation>
+ <xs:documentation>Formatted to indicate that it is optional.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="plain">
+ <xs:annotation>
+ <xs:documentation>Formatted without indication.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="req">
+ <xs:annotation>
+ <xs:documentation>Formatted to indicate that it is required.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.choice.opt.attribute">
+ <xs:attribute name="choice" use="required" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.choice.req.attribute">
+ <xs:attribute name="choice" use="required" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.arg.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.arg.rep.attribute">
+ <xs:attributeGroup ref="db:db.rep.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.arg.choice.attribute">
+ <xs:attributeGroup ref="db:db.choice.opt.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.arg.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="rep" type="db:db.rep.enumeration"/>
+ <xs:attribute name="choice" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="arg">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:arg"/>
+ <xs:group ref="db:db.group"/>
+ <xs:element ref="db:option"/>
+ <xs:element ref="db:synopfragmentref"/>
+ <xs:element ref="db:sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.arg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.group.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.rep.attribute">
+ <xs:attributeGroup ref="db:db.rep.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.choice.attribute">
+ <xs:attributeGroup ref="db:db.choice.opt.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="rep" type="db:db.rep.enumeration"/>
+ <xs:attribute name="choice" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.group">
+ <xs:sequence>
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:arg"/>
+ <xs:group ref="db:db.group"/>
+ <xs:element ref="db:option"/>
+ <xs:element ref="db:synopfragmentref"/>
+ <xs:element ref="db:replaceable"/>
+ <xs:element ref="db:sbr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.group.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.sbr.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sbr.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="sbr">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.sbr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.synopfragment.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.synopfragment.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="synopfragment">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:arg"/>
+ <xs:group ref="db:db.group"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.synopfragment.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.synopfragmentref.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.synopfragmentref.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.linkend.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="synopfragmentref">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.synopfragmentref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/pool.xsd b/slides/schema/xsd/pool.xsd
new file mode 100644
index 0000000..c0ecb6e
--- /dev/null
+++ b/slides/schema/xsd/pool.xsd
@@ -0,0 +1,4834 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <!--
+ The start tokens are somewhat arbitrary. To resolve RFE #1899655, the
+ TC concluded that anything with an info element was a reasonable start
+ element. That's mostly what has been done, with a few extra elements
+ where the patterns seemed to warrant it. If you need more, just ask.
+ -->
+ <!-- ====================================================================== -->
+ <xs:group name="db._any">
+ <xs:sequence>
+ <xs:any processContents="skip"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.arch.attribute">
+ <xs:attribute name="arch" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.audience.attribute">
+ <xs:attribute name="audience" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.condition.attribute">
+ <xs:attribute name="condition" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.conformance.attribute">
+ <xs:attribute name="conformance" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.os.attribute">
+ <xs:attribute name="os" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.revision.attribute">
+ <xs:attribute name="revision" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.security.attribute">
+ <xs:attribute name="security" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.userlevel.attribute">
+ <xs:attribute name="userlevel" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.vendor.attribute">
+ <xs:attribute name="vendor" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.wordsize.attribute">
+ <xs:attribute name="wordsize" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.effectivity.attributes">
+ <xs:attribute name="arch"/>
+ <xs:attribute name="audience"/>
+ <xs:attribute name="condition"/>
+ <xs:attribute name="conformance"/>
+ <xs:attribute name="os"/>
+ <xs:attribute name="revision"/>
+ <xs:attribute name="security"/>
+ <xs:attribute name="userlevel"/>
+ <xs:attribute name="vendor"/>
+ <xs:attribute name="wordsize"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.endterm.attribute">
+ <xs:attribute name="endterm" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.linkend.attribute">
+ <xs:attribute name="linkend" use="required" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.linkends.attribute">
+ <xs:attribute name="linkends" use="required" type="xs:IDREFS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.href.attribute">
+ <xs:attribute ref="xlink:href" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.type.attribute">
+ <xs:attributeGroup ref="xlink:type"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.role.attribute">
+ <xs:attribute ref="xlink:role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.arcrole.attribute">
+ <xs:attribute ref="xlink:arcrole" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.title.attribute">
+ <xs:attribute ref="xlink:title" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.xlink.show.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="new">
+ <xs:annotation>
+ <xs:documentation>An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="replace">
+ <xs:annotation>
+ <xs:documentation>An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="embed">
+ <xs:annotation>
+ <xs:documentation>An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.xlink.show.attribute">
+ <xs:attribute ref="xlink:show" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.xlink.actuate.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="onLoad">
+ <xs:annotation>
+ <xs:documentation>An application should traverse to the ending resource immediately on loading the starting resource.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="onRequest">
+ <xs:annotation>
+ <xs:documentation>An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.xlink.actuate.attribute">
+ <xs:attribute ref="xlink:actuate" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.href.attributes">
+ <xs:attributeGroup ref="db:db.xlink.href.attribute"/>
+ <xs:attributeGroup ref="xlink:type"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.xml.id.attribute">
+ <xs:attribute ref="xml:id" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.version.attribute">
+ <xs:attribute name="version" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xml.lang.attribute">
+ <xs:attribute ref="xml:lang" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xml.base.attribute">
+ <xs:attribute ref="xml:base" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.remap.attribute">
+ <xs:attribute name="remap" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xreflabel.attribute">
+ <xs:attribute name="xreflabel" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xrefstyle.attribute">
+ <xs:attribute name="xrefstyle" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.revisionflag.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="changed">
+ <xs:annotation>
+ <xs:documentation>The element has been changed.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="added">
+ <xs:annotation>
+ <xs:documentation>The element is new (has been added to the document).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="deleted">
+ <xs:annotation>
+ <xs:documentation>The element has been deleted.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="off">
+ <xs:annotation>
+ <xs:documentation>Explicitly turns off revision markup for this element.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.revisionflag.attribute">
+ <xs:attribute name="revisionflag" use="required" type="db:db.revisionflag.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.dir.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ltr">
+ <xs:annotation>
+ <xs:documentation>Left-to-right text</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="rtl">
+ <xs:annotation>
+ <xs:documentation>Right-to-left text</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="lro">
+ <xs:annotation>
+ <xs:documentation>Left-to-right override</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="rlo">
+ <xs:annotation>
+ <xs:documentation>Right-to-left override</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.dir.attribute">
+ <xs:attribute name="dir" use="required" type="db:db.dir.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.common.base.attributes">
+ <xs:attribute name="version"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute name="remap"/>
+ <xs:attribute name="xreflabel"/>
+ <xs:attribute name="revisionflag" type="db:db.revisionflag.enumeration"/>
+ <xs:attribute name="dir" type="db:db.dir.enumeration"/>
+ <xs:attributeGroup ref="db:db.effectivity.attributes"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.common.idreq.attributes">
+ <xs:attributeGroup ref="db:db.xml.id.attribute"/>
+ <xs:attributeGroup ref="db:db.common.base.attributes"/>
+ <xs:attribute name="annotations"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.common.linking.attributes">
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ <xs:attribute ref="xlink:href"/>
+ <xs:attributeGroup ref="xlink:type"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.common.req.linking.attributes">
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ <xs:attribute ref="xlink:href"/>
+ <xs:attributeGroup ref="xlink:type"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.common.data.attributes">
+ <xs:attribute name="format"/>
+ <xs:attribute name="fileref" type="xs:anyURI"/>
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.verbatim.continuation.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues">
+ <xs:annotation>
+ <xs:documentation>Line numbering continues from the immediately preceding element with the same name.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="restarts">
+ <xs:annotation>
+ <xs:documentation>Line numbering restarts (begins at 1, usually).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.verbatim.continuation.attribute">
+ <xs:attribute name="continuation" use="required" type="db:db.verbatim.continuation.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.verbatim.linenumbering.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="numbered">
+ <xs:annotation>
+ <xs:documentation>Lines are numbered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="unnumbered">
+ <xs:annotation>
+ <xs:documentation>Lines are not numbered.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.verbatim.linenumbering.attribute">
+ <xs:attribute name="linenumbering" use="required" type="db:db.verbatim.linenumbering.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.verbatim.startinglinenumber.attribute">
+ <xs:attribute name="startinglinenumber" use="required" type="xs:integer"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.verbatim.language.attribute">
+ <xs:attribute name="language" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.verbatim.xml.space.attribute">
+ <xs:attributeGroup ref="xml:space"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.verbatim.attributes">
+ <xs:attribute name="continuation" type="db:db.verbatim.continuation.enumeration"/>
+ <xs:attribute name="linenumbering" type="db:db.verbatim.linenumbering.enumeration"/>
+ <xs:attribute name="startinglinenumber" type="xs:integer"/>
+ <xs:attribute name="language"/>
+ <xs:attributeGroup ref="xml:space"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.label.attribute">
+ <xs:attribute name="label" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.width.characters.attribute">
+ <xs:attribute name="width" use="required" type="xs:nonNegativeInteger"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.spacing.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="compact">
+ <xs:annotation>
+ <xs:documentation>The spacing should be "compact".</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="normal">
+ <xs:annotation>
+ <xs:documentation>The spacing should be "normal".</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.spacing.attribute">
+ <xs:attribute name="spacing" use="required" type="db:db.spacing.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.pgwide.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>The element should be rendered in the current text flow (with the flow column width).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>The element should be rendered across the full text page.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.pgwide.attribute">
+ <xs:attribute name="pgwide" use="required" type="db:db.pgwide.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.language.attribute">
+ <xs:attribute name="language" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.performance.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="optional">
+ <xs:annotation>
+ <xs:documentation>The content describes an optional step or steps.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="required">
+ <xs:annotation>
+ <xs:documentation>The content describes a required step or steps.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.performance.attribute">
+ <xs:attribute name="performance" use="required" type="db:db.performance.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.floatstyle.attribute">
+ <xs:attribute name="floatstyle" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.width.attribute">
+ <xs:attribute name="width" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.depth.attribute">
+ <xs:attribute name="depth" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.contentwidth.attribute">
+ <xs:attribute name="contentwidth" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.contentdepth.attribute">
+ <xs:attribute name="contentdepth" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.scalefit.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>False (do not scale-to-fit; anamorphic scaling may occur)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>True (scale-to-fit; anamorphic scaling is forbidden)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.scale.attribute">
+ <xs:attribute name="scale" use="required" type="xs:positiveInteger"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.halign.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="center">
+ <xs:annotation>
+ <xs:documentation>Centered horizontally</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="char">
+ <xs:annotation>
+ <xs:documentation>Aligned horizontally on the specified character</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="justify">
+ <xs:annotation>
+ <xs:documentation>Fully justified (left and right margins or edges)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="left">
+ <xs:annotation>
+ <xs:documentation>Left aligned</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="right">
+ <xs:annotation>
+ <xs:documentation>Right aligned</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="db.valign.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="bottom">
+ <xs:annotation>
+ <xs:documentation>Aligned on the bottom of the region</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="middle">
+ <xs:annotation>
+ <xs:documentation>Centered vertically</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="top">
+ <xs:annotation>
+ <xs:documentation>Aligned on the top of the region</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.biblio.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="doi">
+ <xs:annotation>
+ <xs:documentation>A digital object identifier.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isbn">
+ <xs:annotation>
+ <xs:documentation>An international standard book number.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isrn">
+ <xs:annotation>
+ <xs:documentation>An international standard technical report number (ISO 10444).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="issn">
+ <xs:annotation>
+ <xs:documentation>An international standard serial number.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="libraryofcongress">
+ <xs:annotation>
+ <xs:documentation>A Library of Congress reference number.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="pubsnumber">
+ <xs:annotation>
+ <xs:documentation>A publication number (an internal number or possibly organizational standard).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="uri">
+ <xs:annotation>
+ <xs:documentation>A Uniform Resource Identifier</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.biblio.class-enum.attribute">
+ <xs:attribute name="class" type="db:db.biblio.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblio.class-other.attribute">
+ <xs:attribute name="otherclass" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblio.class-other.attributes">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates that the identifier is some 'other' kind.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="db:db.biblio.class-other.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblio.class.attribute">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.biblio.class.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates that the identifier is some 'other' kind.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:group name="db.ubiq.inlines">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:inlinemediaobject"/>
+ <xs:element ref="db:remark"/>
+ <xs:group ref="db:db.link.inlines"/>
+ <xs:element ref="db:alt"/>
+ <xs:element ref="db:trademark"/>
+ <xs:element ref="db:abbrev"/>
+ <xs:element ref="db:acronym"/>
+ <xs:element ref="db:date"/>
+ <xs:group ref="db:db._emphasis"/>
+ <xs:element ref="db:footnote"/>
+ <xs:element ref="db:footnoteref"/>
+ <xs:group ref="db:db._foreignphrase"/>
+ <xs:group ref="db:db._phrase"/>
+ <xs:group ref="db:db._quote"/>
+ <xs:element ref="db:subscript"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:wordasword"/>
+ </xs:choice>
+ <xs:element ref="db:annotation"/>
+ <xs:choice>
+ <xs:group ref="db:db._firstterm"/>
+ <xs:group ref="db:db._glossterm"/>
+ </xs:choice>
+ <xs:group ref="db:db.indexterm"/>
+ <xs:element ref="db:coref"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db._text">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db.ubiq.inlines"/>
+ <xs:group ref="db:db._phrase"/>
+ <xs:element ref="db:replaceable"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db._title">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:title"/>
+ <xs:element ref="db:titleabbrev"/>
+ <xs:element ref="db:subtitle"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db._title.req">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:title"/>
+ <xs:element ref="db:titleabbrev"/>
+ <xs:element ref="db:subtitle"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db._title.only">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:title"/>
+ <xs:element ref="db:titleabbrev"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db._title.onlyreq">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:title"/>
+ <xs:element ref="db:titleabbrev"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db._info">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group ref="db:db._title"/>
+ <xs:group minOccurs="0" ref="db:db.titleforbidden.info"/>
+ </xs:sequence>
+ <xs:group minOccurs="0" ref="db:db.info"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db._info.title.req">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group ref="db:db._title.req"/>
+ <xs:group minOccurs="0" ref="db:db.titleforbidden.info"/>
+ </xs:sequence>
+ <xs:group ref="db:db.titlereq.info"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db._info.title.only">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group ref="db:db._title.only"/>
+ <xs:group minOccurs="0" ref="db:db.titleforbidden.info"/>
+ </xs:sequence>
+ <xs:group ref="db:db.titleonly.info"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db._info.title.onlyreq">
+ <xs:choice>
+ <xs:sequence>
+ <xs:group ref="db:db._title.onlyreq"/>
+ <xs:group minOccurs="0" ref="db:db.titleforbidden.info"/>
+ </xs:sequence>
+ <xs:group ref="db:db.titleonlyreq.info"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db._info.title.forbidden">
+ <xs:sequence>
+ <xs:group minOccurs="0" ref="db:db.titleforbidden.info"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:group name="db.all.inlines">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:group ref="db:db.ubiq.inlines"/>
+ <xs:group ref="db:db.general.inlines"/>
+ <xs:group ref="db:db.domain.inlines"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.general.inlines">
+ <xs:choice>
+ <xs:group ref="db:db.publishing.inlines"/>
+ <xs:element ref="db:db.product.inlines"/>
+ <xs:element ref="db:db.bibliography.inlines"/>
+ <xs:element ref="db:db.graphic.inlines"/>
+ <xs:group ref="db:db.indexing.inlines"/>
+ <xs:group ref="db:db.link.inlines"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.domain.inlines">
+ <xs:choice>
+ <xs:element ref="db:db.technical.inlines"/>
+ <xs:element ref="db:db.math.inlines"/>
+ <xs:element ref="db:db.markup.inlines"/>
+ <xs:group ref="db:db.gui.inlines"/>
+ <xs:group ref="db:db.keyboard.inlines"/>
+ <xs:element ref="db:db.os.inlines"/>
+ <xs:group ref="db:db.programming.inlines"/>
+ <xs:element ref="db:db.error.inlines"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="db.technical.inlines" abstract="true"/>
+ <xs:element name="db.product.inlines" abstract="true"/>
+ <xs:element name="db.bibliography.inlines" abstract="true"/>
+ <xs:group name="db.publishing.inlines">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:abbrev"/>
+ <xs:element ref="db:acronym"/>
+ <xs:element ref="db:date"/>
+ <xs:group ref="db:db.emphasis"/>
+ <xs:element ref="db:footnote"/>
+ <xs:element ref="db:footnoteref"/>
+ <xs:group ref="db:db.foreignphrase"/>
+ <xs:group ref="db:db.phrase"/>
+ <xs:group ref="db:db.quote"/>
+ <xs:element ref="db:subscript"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:wordasword"/>
+ </xs:choice>
+ <xs:group ref="db:db.glossary.inlines"/>
+ <xs:element ref="db:coref"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="db.graphic.inlines" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.inlinemediaobject.info"/>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ <xs:element maxOccurs="unbounded" ref="db:db.mediaobject.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.inlinemediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="db.indexing.inlines">
+ <xs:sequence>
+ <xs:group ref="db:db.indexterm"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.link.inlines">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:xref"/>
+ <xs:element ref="db:link"/>
+ <xs:element ref="db:olink"/>
+ <xs:element ref="db:anchor"/>
+ </xs:choice>
+ <xs:element ref="db:biblioref"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:group name="db.nopara.blocks">
+ <xs:choice>
+ <xs:choice>
+ <xs:group ref="db:db.list.blocks"/>
+ <xs:group ref="db:db.formal.blocks"/>
+ <xs:group ref="db:db.informal.blocks"/>
+ <xs:element ref="db:db.publishing.blocks"/>
+ <xs:element ref="db:db.graphic.blocks"/>
+ <xs:group ref="db:db.technical.blocks"/>
+ <xs:element ref="db:db.verbatim.blocks"/>
+ <xs:element ref="db:bridgehead"/>
+ <xs:element ref="db:remark"/>
+ <xs:element ref="db:revhistory"/>
+ </xs:choice>
+ <xs:group ref="db:db.indexterm"/>
+ <xs:element ref="db:db.synopsis.blocks"/>
+ <xs:element ref="db:db.admonition.blocks"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.para.blocks">
+ <xs:choice>
+ <xs:element ref="db:anchor"/>
+ <xs:element ref="db:para"/>
+ <xs:element ref="db:formalpara"/>
+ <xs:element ref="db:simpara"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.all.blocks">
+ <xs:choice>
+ <xs:choice>
+ <xs:group ref="db:db.nopara.blocks"/>
+ <xs:group ref="db:db.para.blocks"/>
+ </xs:choice>
+ <xs:element ref="db:annotation"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.formal.blocks">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:example"/>
+ <xs:element ref="db:figure"/>
+ <xs:group ref="db:db.table"/>
+ </xs:choice>
+ <xs:element ref="db:equation"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.informal.blocks">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:informalexample"/>
+ <xs:element ref="db:informalfigure"/>
+ <xs:group ref="db:db.informaltable"/>
+ </xs:choice>
+ <xs:element ref="db:informalequation"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="db.publishing.blocks" abstract="true"/>
+ <xs:element name="db.graphic.blocks" abstract="true"/>
+ <xs:group name="db.technical.blocks">
+ <xs:choice>
+ <xs:element ref="db:procedure"/>
+ <xs:element ref="db:task"/>
+ <xs:choice>
+ <xs:element ref="db:productionset"/>
+ <xs:element ref="db:constraintdef"/>
+ </xs:choice>
+ <xs:element ref="db:msgset"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.list.blocks">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:itemizedlist"/>
+ <xs:element ref="db:orderedlist"/>
+ <xs:element ref="db:procedure"/>
+ <xs:element ref="db:simplelist"/>
+ <xs:element ref="db:variablelist"/>
+ <xs:element ref="db:segmentedlist"/>
+ </xs:choice>
+ <xs:element ref="db:glosslist"/>
+ <xs:element ref="db:bibliolist"/>
+ <xs:element ref="db:calloutlist"/>
+ <xs:element ref="db:qandaset"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="db.verbatim.blocks" abstract="true"/>
+ <!-- ====================================================================== -->
+ <xs:group name="db.info.extension">
+ <xs:sequence>
+ <xs:group ref="db:db._any"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.info.elements">
+ <xs:choice>
+ <xs:choice>
+ <xs:element ref="db:abstract"/>
+ <xs:element ref="db:address"/>
+ <xs:element ref="db:artpagenums"/>
+ <xs:element ref="db:author"/>
+ <xs:element ref="db:authorgroup"/>
+ <xs:element ref="db:authorinitials"/>
+ <xs:element ref="db:bibliocoverage"/>
+ <xs:element ref="db:biblioid"/>
+ <xs:element ref="db:bibliosource"/>
+ <xs:element ref="db:collab"/>
+ <xs:element ref="db:confgroup"/>
+ <xs:element ref="db:contractsponsor"/>
+ <xs:element ref="db:contractnum"/>
+ <xs:element ref="db:copyright"/>
+ <xs:element ref="db:cover"/>
+ <xs:element ref="db:date"/>
+ <xs:element ref="db:edition"/>
+ <xs:element ref="db:editor"/>
+ <xs:element ref="db:issuenum"/>
+ <xs:element ref="db:keywordset"/>
+ <xs:element ref="db:legalnotice"/>
+ <xs:element ref="db:mediaobject"/>
+ <xs:element ref="db:org"/>
+ <xs:element ref="db:orgname"/>
+ <xs:element ref="db:othercredit"/>
+ <xs:element ref="db:pagenums"/>
+ <xs:element ref="db:printhistory"/>
+ <xs:element ref="db:pubdate"/>
+ <xs:element ref="db:publisher"/>
+ <xs:element ref="db:publishername"/>
+ <xs:element ref="db:releaseinfo"/>
+ <xs:element ref="db:revhistory"/>
+ <xs:element ref="db:seriesvolnums"/>
+ <xs:element ref="db:subjectset"/>
+ <xs:element ref="db:volumenum"/>
+ <xs:group ref="db:db.info.extension"/>
+ </xs:choice>
+ <xs:element ref="db:annotation"/>
+ <xs:element ref="db:extendedlink"/>
+ <xs:choice>
+ <xs:element ref="db:bibliomisc"/>
+ <xs:element ref="db:bibliomset"/>
+ <xs:element ref="db:bibliorelation"/>
+ <xs:element ref="db:biblioset"/>
+ </xs:choice>
+ <xs:element ref="db:itermset"/>
+ <xs:choice>
+ <xs:element ref="db:productname"/>
+ <xs:element ref="db:productnumber"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.bibliographic.elements">
+ <xs:choice>
+ <xs:group ref="db:db.info.elements"/>
+ <xs:group ref="db:db.publishing.inlines"/>
+ <xs:element ref="db:citerefentry"/>
+ <xs:element ref="db:citetitle"/>
+ <xs:element ref="db:citebiblioid"/>
+ <xs:element ref="db:person"/>
+ <xs:element ref="db:personblurb"/>
+ <xs:element ref="db:personname"/>
+ <xs:element ref="db:subtitle"/>
+ <xs:element ref="db:title"/>
+ <xs:element ref="db:titleabbrev"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.title.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.title.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.title.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.titleabbrev.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.titleabbrev.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="titleabbrev">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.titleabbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.subtitle.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subtitle.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="subtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.subtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.info.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.info.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.info">
+ <xs:sequence>
+ <xs:element name="info">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._title"/>
+ <xs:group ref="db:db.info.elements"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.titlereq.info.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.titlereq.info.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.titlereq.info">
+ <xs:sequence>
+ <xs:element name="info">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._title.req"/>
+ <xs:group ref="db:db.info.elements"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.titlereq.info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.titleonly.info.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.titleonly.info.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.titleonly.info">
+ <xs:sequence>
+ <xs:element name="info">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._title.only"/>
+ <xs:group ref="db:db.info.elements"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.titleonly.info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.titleonlyreq.info.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.titleonlyreq.info.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.titleonlyreq.info">
+ <xs:sequence>
+ <xs:element name="info">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._title.onlyreq"/>
+ <xs:group ref="db:db.info.elements"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.titleonlyreq.info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.titleforbidden.info.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.titleforbidden.info.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.titleforbidden.info">
+ <xs:sequence>
+ <xs:element name="info">
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.info.elements"/>
+ <xs:attributeGroup ref="db:db.titleforbidden.info.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.subjectset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subjectset.scheme.attribute">
+ <xs:attribute name="scheme" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subjectset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="scheme" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:element name="subjectset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:subject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.subjectset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.subject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subject.weight.attribute">
+ <xs:attribute name="weight" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="weight"/>
+ </xs:attributeGroup>
+ <xs:element name="subject">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:subjectterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.subject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.subjectterm.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subjectterm.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="subjectterm">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.subjectterm.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.keywordset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keywordset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="keywordset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:keyword"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.keywordset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.keyword.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.keyword.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="keyword">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.keyword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.table.choice">
+ <xs:choice>
+ <xs:group ref="db:db.cals.table"/>
+ <xs:group ref="db:db.html.table"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.informaltable.choice">
+ <xs:choice>
+ <xs:group ref="db:db.cals.informaltable"/>
+ <xs:group ref="db:db.html.informaltable"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.table">
+ <xs:sequence>
+ <xs:group ref="db:db.table.choice"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.informaltable">
+ <xs:sequence>
+ <xs:group ref="db:db.informaltable.choice"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.procedure.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.procedure.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.procedure.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="procedure">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.procedure.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.procedure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.step.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.step.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="performance" type="db:db.performance.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.step.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <!--
+ This content model is blocks*, step|stepalternatives, blocks* but
+ expressed this way it avoids UPA issues in XSD and DTD versions
+ -->
+ <xs:element name="step">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.step.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:sequence minOccurs="0">
+ <xs:choice>
+ <xs:element ref="db:substeps"/>
+ <xs:element ref="db:stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="db:substeps"/>
+ <xs:element ref="db:stepalternatives"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.step.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.stepalternatives.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.stepalternatives.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="performance" type="db:db.performance.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.stepalternatives.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="stepalternatives">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.stepalternatives.info"/>
+ <xs:element maxOccurs="unbounded" ref="db:step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.stepalternatives.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.substeps.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.substeps.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="performance" type="db:db.performance.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="substeps">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:step"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.substeps.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.sidebar.floatstyle.attribute">
+ <xs:attributeGroup ref="db:db.floatstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sidebar.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sidebar.attlist">
+ <xs:attribute name="role"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.sidebar.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="sidebar" substitutionGroup="db:db.publishing.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.sidebar.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.sidebar.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.abstract.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.abstract.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.abstract.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="abstract">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.abstract.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.para.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.abstract.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.personblurb.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.personblurb.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.personblurb.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="personblurb">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.personblurb.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.para.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.personblurb.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.blockquote.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.blockquote.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.blockquote.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="blockquote" substitutionGroup="db:db.publishing.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.blockquote.info"/>
+ <xs:element minOccurs="0" ref="db:attribution"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.blockquote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.attribution.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.attribution.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="attribution">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:person"/>
+ <xs:element ref="db:personname"/>
+ <xs:element ref="db:citetitle"/>
+ <xs:element ref="db:citation"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.attribution.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.bridgehead.renderas.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="sect1">
+ <xs:annotation>
+ <xs:documentation>Render as a first-level section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sect2">
+ <xs:annotation>
+ <xs:documentation>Render as a second-level section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sect3">
+ <xs:annotation>
+ <xs:documentation>Render as a third-level section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sect4">
+ <xs:annotation>
+ <xs:documentation>Render as a fourth-level section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sect5">
+ <xs:annotation>
+ <xs:documentation>Render as a fifth-level section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.bridgehead.renderas-enum.attribute">
+ <xs:attribute name="renderas" type="db:db.bridgehead.renderas.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bridgehead.renderas-other.attribute">
+ <xs:attribute name="otherrenderas" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bridgehead.renderas-other.attributes">
+ <xs:attribute name="renderas" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Identifies a non-standard rendering</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="db:db.bridgehead.renderas-other.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bridgehead.renderas.attribute">
+ <xs:attribute name="renderas">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.bridgehead.renderas.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Identifies a non-standard rendering</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherrenderas" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bridgehead.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bridgehead.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.bridgehead.renderas.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="bridgehead">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.bridgehead.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.remark.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.remark.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="remark">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.remark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.epigraph.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.epigraph.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.epigraph.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="epigraph" substitutionGroup="db:db.publishing.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.epigraph.info"/>
+ <xs:element minOccurs="0" ref="db:attribution"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:group ref="db:db.para.blocks"/>
+ <xs:element ref="db:literallayout"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.epigraph.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.footnote.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.footnote.label.attribute">
+ <xs:attribute name="label" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.footnote.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:element name="footnote">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="db:db.footnote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.formalpara.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.formalpara.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.formalpara.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.onlyreq"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="formalpara">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.formalpara.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.indexing.inlines"/>
+ <xs:element ref="db:para"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.formalpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.para.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.para.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.para.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="para">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:group ref="db:db.para.info"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db.all.inlines"/>
+ <xs:group ref="db:db.nopara.blocks"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.para.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.simpara.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simpara.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.simpara.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="simpara">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:group ref="db:db.simpara.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.simpara.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.itemizedlist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.itemizedlist.mark.attribute">
+ <xs:attribute name="mark" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.itemizedlist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="spacing" type="db:db.spacing.enumeration"/>
+ <xs:attribute name="mark" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:group name="db.itemizedlist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="itemizedlist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.itemizedlist.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.itemizedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.orderedlist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.orderedlist.continuation.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="continues">
+ <xs:annotation>
+ <xs:documentation>Specifies that numbering should begin where the preceding list left off</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="restarts">
+ <xs:annotation>
+ <xs:documentation>Specifies that numbering should begin again at 1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.orderedlist.continuation.attribute">
+ <xs:attribute name="continuation" use="required" type="db:db.orderedlist.continuation.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orderedlist.startingnumber.attribute">
+ <xs:attribute name="startingnumber" use="required" type="xs:integer"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.orderedlist.inheritnum.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ignore">
+ <xs:annotation>
+ <xs:documentation>Specifies that numbering should ignore list nesting</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="inherit">
+ <xs:annotation>
+ <xs:documentation>Specifies that numbering should inherit from outer-level lists</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.orderedlist.inheritnum.attribute">
+ <xs:attribute name="inheritnum" use="required" type="db:db.orderedlist.inheritnum.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.orderedlist.numeration.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="arabic">
+ <xs:annotation>
+ <xs:documentation>Specifies Arabic numeration (1, 2, 3, …)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="upperalpha">
+ <xs:annotation>
+ <xs:documentation>Specifies upper-case alphabetic numeration (A, B, C, …)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="loweralpha">
+ <xs:annotation>
+ <xs:documentation>Specifies lower-case alphabetic numeration (a, b, c, …)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="upperroman">
+ <xs:annotation>
+ <xs:documentation>Specifies upper-case Roman numeration (I, II, III, …)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="lowerroman">
+ <xs:annotation>
+ <xs:documentation>Specifies lower-case Roman numeration (i, ii, iii …)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.orderedlist.numeration.attribute">
+ <xs:attribute name="numeration" use="required" type="db:db.orderedlist.numeration.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orderedlist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="spacing" type="db:db.spacing.enumeration"/>
+ <xs:attribute name="continuation" type="db:db.orderedlist.continuation.enumeration"/>
+ <xs:attribute name="startingnumber" type="xs:integer"/>
+ <xs:attribute name="inheritnum" type="db:db.orderedlist.inheritnum.enumeration"/>
+ <xs:attribute name="numeration" type="db:db.orderedlist.numeration.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.orderedlist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="orderedlist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.orderedlist.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.orderedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.listitem.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.listitem.override.attribute">
+ <xs:attribute name="override" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.listitem.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="override" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:element name="listitem">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="db:db.listitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.segmentedlist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.segmentedlist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.segmentedlist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="segmentedlist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.segmentedlist.info"/>
+ <xs:element maxOccurs="unbounded" ref="db:segtitle"/>
+ <xs:element maxOccurs="unbounded" ref="db:seglistitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.segmentedlist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.segtitle.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.segtitle.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="segtitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.segtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.seglistitem.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.seglistitem.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="seglistitem">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:seg"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.seglistitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.seg.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.seg.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="seg">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.seg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.simplelist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.simplelist.type.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="horiz">
+ <xs:annotation>
+ <xs:documentation>A tabular presentation in row-major order.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="vert">
+ <xs:annotation>
+ <xs:documentation>A tabular presentation in column-major order.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="inline">
+ <xs:annotation>
+ <xs:documentation>An inline presentation, usually a comma-delimited list.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.simplelist.type.attribute">
+ <xs:attribute name="type" use="required" type="db:db.simplelist.type.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplelist.columns.attribute">
+ <xs:attribute name="columns" use="required" type="xs:integer"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.simplelist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="type" type="db:db.simplelist.type.enumeration"/>
+ <xs:attribute name="columns" type="xs:integer"/>
+ </xs:attributeGroup>
+ <xs:element name="simplelist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:member"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.simplelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.member.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.member.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="member">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.member.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.variablelist.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.variablelist.termlength.attribute">
+ <xs:attribute name="termlength" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.variablelist.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="spacing" type="db:db.spacing.enumeration"/>
+ <xs:attribute name="termlength"/>
+ </xs:attributeGroup>
+ <xs:group name="db.variablelist.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="variablelist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.variablelist.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element maxOccurs="unbounded" ref="db:varlistentry"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.variablelist.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.varlistentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.varlistentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="varlistentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:term"/>
+ <xs:element ref="db:listitem"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.varlistentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.term.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.term.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="term">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.term.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.example.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.example.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.example.width.attribute">
+ <xs:attributeGroup ref="db:db.width.characters.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.example.pgwide.attribute">
+ <xs:attributeGroup ref="db:db.pgwide.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.example.floatstyle.attribute">
+ <xs:attributeGroup ref="db:db.floatstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.example.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="width" type="xs:nonNegativeInteger"/>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.example.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.onlyreq"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="example">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.example.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.example.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.informalexample.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalexample.width.attribute">
+ <xs:attributeGroup ref="db:db.width.characters.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalexample.floatstyle.attribute">
+ <xs:attributeGroup ref="db:db.floatstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalexample.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="floatstyle"/>
+ <xs:attribute name="width" type="xs:nonNegativeInteger"/>
+ </xs:attributeGroup>
+ <xs:group name="db.informalexample.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="informalexample">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.informalexample.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.informalexample.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.verbatim.inlines">
+ <xs:choice>
+ <xs:choice>
+ <xs:group ref="db:db.all.inlines"/>
+ <xs:element ref="db:lineannotation"/>
+ </xs:choice>
+ <xs:element ref="db:co"/>
+ </xs:choice>
+ </xs:group>
+ <xs:complexType name="db.verbatim.contentmodel" mixed="true">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ <xs:choice>
+ <xs:element ref="db:textobject"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.verbatim.inlines"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.literallayout.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.literallayout.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="monospaced">
+ <xs:annotation>
+ <xs:documentation>The literal layout should be formatted with a monospaced font</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="normal">
+ <xs:annotation>
+ <xs:documentation>The literal layout should be formatted with the current font</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.literallayout.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.literallayout.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.literallayout.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ <xs:attribute name="class" type="db:db.literallayout.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="literallayout" substitutionGroup="db:db.verbatim.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.verbatim.contentmodel">
+ <xs:attributeGroup ref="db:db.literallayout.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.screen.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.screen.width.attribute">
+ <xs:attributeGroup ref="db:db.width.characters.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.screen.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ <xs:attribute name="width" type="xs:nonNegativeInteger"/>
+ </xs:attributeGroup>
+ <xs:element name="screen" substitutionGroup="db:db.verbatim.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.verbatim.contentmodel">
+ <xs:attributeGroup ref="db:db.screen.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.screenshot.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.screenshot.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.screenshot.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="screenshot" substitutionGroup="db:db.graphic.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.screenshot.info"/>
+ <xs:element ref="db:mediaobject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.screenshot.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.figure.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.figure.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.figure.pgwide.attribute">
+ <xs:attributeGroup ref="db:db.pgwide.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.figure.floatstyle.attribute">
+ <xs:attributeGroup ref="db:db.floatstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.figure.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ <xs:attribute name="floatstyle"/>
+ </xs:attributeGroup>
+ <xs:group name="db.figure.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.onlyreq"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="figure">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.figure.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.figure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.informalfigure.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalfigure.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalfigure.pgwide.attribute">
+ <xs:attributeGroup ref="db:db.pgwide.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalfigure.floatstyle.attribute">
+ <xs:attributeGroup ref="db:db.floatstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.informalfigure.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="pgwide" type="db:db.pgwide.enumeration"/>
+ <xs:attribute name="floatstyle"/>
+ </xs:attributeGroup>
+ <xs:group name="db.informalfigure.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="informalfigure">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.informalfigure.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.informalfigure.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:element name="db.mediaobject.content" abstract="true"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.mediaobject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.mediaobject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.mediaobject.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="mediaobject" substitutionGroup="db:db.graphic.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.mediaobject.info"/>
+ <xs:element minOccurs="0" ref="db:alt"/>
+ <xs:element maxOccurs="unbounded" ref="db:db.mediaobject.content"/>
+ <xs:group minOccurs="0" ref="db:db.caption"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.mediaobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.inlinemediaobject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.inlinemediaobject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.inlinemediaobject.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="inlinemediaobject" substitutionGroup="db:db.graphic.inlines"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.videoobject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videoobject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.videoobject.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="videoobject" substitutionGroup="db:db.mediaobject.content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.videoobject.info"/>
+ <xs:element ref="db:videodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.videoobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.audioobject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.audioobject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.audioobject.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="audioobject" substitutionGroup="db:db.mediaobject.content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.audioobject.info"/>
+ <xs:element ref="db:audiodata"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.audioobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.imageobject.content">
+ <xs:choice>
+ <xs:group ref="db:db.imagedata"/>
+ <xs:group ref="db:db.imagedata.mathml"/>
+ <xs:group ref="db:db.imagedata.svg"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.imageobject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imageobject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.imageobject.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="imageobject" substitutionGroup="db:db.mediaobject.content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.imageobject.info"/>
+ <xs:group ref="db:db.imageobject.content"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.imageobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.textobject.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.textobject.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.textobject.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="textobject" substitutionGroup="db:db.mediaobject.content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.textobject.info"/>
+ <xs:choice>
+ <xs:group ref="db:db.phrase"/>
+ <xs:element ref="db:textdata"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.textobject.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.videodata.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.videodata.align.enumeration">
+ <xs:restriction base="db:db.halign.enumeration"/>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.videodata.align.attribute">
+ <xs:attribute name="align" use="required" type="db:db.videodata.align.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.videodata.valign.enumeration">
+ <xs:restriction base="db:db.valign.enumeration"/>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.videodata.valign.attribute">
+ <xs:attribute name="valign" use="required" type="db:db.videodata.valign.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videodata.width.attribute">
+ <xs:attributeGroup ref="db:db.width.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videodata.depth.attribute">
+ <xs:attributeGroup ref="db:db.depth.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videodata.contentwidth.attribute">
+ <xs:attributeGroup ref="db:db.contentwidth.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videodata.contentdepth.attribute">
+ <xs:attributeGroup ref="db:db.contentdepth.attribute"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.videodata.scalefit.enumeration">
+ <xs:restriction base="db:db.scalefit.enumeration"/>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.videodata.scalefit.attribute">
+ <xs:attribute name="scalefit" use="required" type="db:db.videodata.scalefit.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videodata.scale.attribute">
+ <xs:attributeGroup ref="db:db.scale.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.videodata.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.data.attributes"/>
+ <xs:attribute name="align" type="db:db.videodata.align.enumeration"/>
+ <xs:attribute name="valign" type="db:db.videodata.valign.enumeration"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="scalefit" type="db:db.videodata.scalefit.enumeration"/>
+ <xs:attribute name="scale" type="xs:positiveInteger"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ </xs:attributeGroup>
+ <xs:complexType name="db.videodata.info">
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:complexType>
+ <xs:element name="videodata">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.videodata.info">
+ <xs:attributeGroup ref="db:db.videodata.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.audiodata.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.audiodata.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.data.attributes"/>
+ </xs:attributeGroup>
+ <xs:complexType name="db.audiodata.info">
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:complexType>
+ <xs:element name="audiodata">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.audiodata.info">
+ <xs:attributeGroup ref="db:db.audiodata.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.imagedata.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.imagedata.align.enumeration">
+ <xs:restriction base="db:db.halign.enumeration"/>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.imagedata.align.attribute">
+ <xs:attribute name="align" use="required" type="db:db.imagedata.align.enumeration"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.imagedata.valign.enumeration">
+ <xs:restriction base="db:db.valign.enumeration"/>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.imagedata.valign.attribute">
+ <xs:attribute name="valign" use="required" type="db:db.imagedata.valign.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.width.attribute">
+ <xs:attributeGroup ref="db:db.width.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.depth.attribute">
+ <xs:attributeGroup ref="db:db.depth.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.contentwidth.attribute">
+ <xs:attributeGroup ref="db:db.contentwidth.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.contentdepth.attribute">
+ <xs:attributeGroup ref="db:db.contentdepth.attribute"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.imagedata.scalefit.enumeration">
+ <xs:restriction base="db:db.scalefit.enumeration"/>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.imagedata.scalefit.attribute">
+ <xs:attribute name="scalefit" use="required" type="db:db.imagedata.scalefit.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.scale.attribute">
+ <xs:attributeGroup ref="db:db.scale.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.data.attributes"/>
+ <xs:attribute name="align" type="db:db.imagedata.align.enumeration"/>
+ <xs:attribute name="valign" type="db:db.imagedata.valign.enumeration"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="scalefit" type="db:db.imagedata.scalefit.enumeration"/>
+ <xs:attribute name="scale" type="xs:positiveInteger"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ </xs:attributeGroup>
+ <xs:complexType name="db.imagedata.info">
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:complexType>
+ <xs:group name="db.imagedata">
+ <xs:sequence>
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.imagedata.info">
+ <xs:attributeGroup ref="db:db.imagedata.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.textdata.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.textdata.encoding.attribute">
+ <xs:attribute name="encoding" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.textdata.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.data.attributes"/>
+ <xs:attribute name="encoding"/>
+ </xs:attributeGroup>
+ <xs:complexType name="db.textdata.info">
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:complexType>
+ <xs:element name="textdata">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.textdata.info">
+ <xs:attributeGroup ref="db:db.textdata.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.caption.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.caption.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.caption.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.caption">
+ <xs:sequence>
+ <xs:element name="caption">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.caption.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.caption.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.address.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.address.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="address" substitutionGroup="db:db.publishing.blocks">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:personname"/>
+ <xs:element ref="db:orgname"/>
+ <xs:element ref="db:pob"/>
+ <xs:element ref="db:street"/>
+ <xs:element ref="db:city"/>
+ <xs:element ref="db:state"/>
+ <xs:element ref="db:postcode"/>
+ <xs:element ref="db:country"/>
+ <xs:element ref="db:phone"/>
+ <xs:element ref="db:fax"/>
+ <xs:element ref="db:email"/>
+ <xs:element ref="db:uri"/>
+ <xs:element ref="db:otheraddr"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.address.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.street.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.street.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="street">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.street.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.pob.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.pob.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="pob">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.pob.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.postcode.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.postcode.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="postcode">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.postcode.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.city.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.city.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="city">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.city.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.state.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.state.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="state">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.state.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.country.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.country.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="country">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.country.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.phone.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.phone.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="phone">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.phone.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.fax.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.fax.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="fax">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.fax.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.otheraddr.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.otheraddr.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="otheraddr">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.otheraddr.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.affiliation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.affiliation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="affiliation">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:shortaffil"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:jobtitle"/>
+ <xs:choice>
+ <xs:element minOccurs="0" ref="db:org"/>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:orgname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:orgdiv"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:address"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.affiliation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.shortaffil.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.shortaffil.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="shortaffil">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.shortaffil.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.jobtitle.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.jobtitle.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="jobtitle" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.jobtitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.orgname.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="consortium">
+ <xs:annotation>
+ <xs:documentation>A consortium</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="corporation">
+ <xs:annotation>
+ <xs:documentation>A corporation</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="informal">
+ <xs:annotation>
+ <xs:documentation>An informal organization</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="nonprofit">
+ <xs:annotation>
+ <xs:documentation>A non-profit organization</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.orgname.class-enum.attribute">
+ <xs:attribute name="class" use="required" type="db:db.orgname.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orgname.class-other.attributes">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard organization class</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orgname.class.attribute">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.orgname.class.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard organization class</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orgname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orgname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.orgname.class.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates a non-standard organization class</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <xs:element name="orgname" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.orgname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.orgdiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.orgdiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="orgdiv">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.orgdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.artpagenums.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.artpagenums.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="artpagenums">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.artpagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.personname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.personname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="personname" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType mixed="true">
+ <xs:choice>
+ <xs:group ref="db:db._text"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:honorific"/>
+ <xs:element ref="db:firstname"/>
+ <xs:element ref="db:surname"/>
+ <xs:element ref="db:lineage"/>
+ <xs:element ref="db:othername"/>
+ </xs:choice>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:honorific"/>
+ <xs:element ref="db:givenname"/>
+ <xs:element ref="db:surname"/>
+ <xs:element ref="db:lineage"/>
+ <xs:element ref="db:othername"/>
+ </xs:choice>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.personname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.person.author.contentmodel">
+ <xs:sequence>
+ <xs:element ref="db:personname"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:personblurb"/>
+ <xs:element ref="db:affiliation"/>
+ <xs:element ref="db:email"/>
+ <xs:element ref="db:uri"/>
+ <xs:element ref="db:address"/>
+ <xs:element ref="db:contrib"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.org.author.contentmodel">
+ <xs:sequence>
+ <xs:element ref="db:orgname"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:orgdiv"/>
+ <xs:element ref="db:affiliation"/>
+ <xs:element ref="db:email"/>
+ <xs:element ref="db:uri"/>
+ <xs:element ref="db:address"/>
+ <xs:element ref="db:contrib"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="db.credit.contentmodel">
+ <xs:choice>
+ <xs:group ref="db:db.person.author.contentmodel"/>
+ <xs:group ref="db:db.org.author.contentmodel"/>
+ </xs:choice>
+ </xs:complexType>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.author.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.author.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="author" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.credit.contentmodel">
+ <xs:attributeGroup ref="db:db.author.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.authorgroup.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.authorgroup.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="authorgroup">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:author"/>
+ <xs:element ref="db:editor"/>
+ <xs:element ref="db:othercredit"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.authorgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.collab.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.collab.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="collab">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:person"/>
+ <xs:element ref="db:personname"/>
+ <xs:element ref="db:org"/>
+ <xs:element ref="db:orgname"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:affiliation"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.collab.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.authorinitials.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.authorinitials.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="authorinitials">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.authorinitials.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.person.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.person.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="person" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:personname"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:address"/>
+ <xs:element ref="db:affiliation"/>
+ <xs:element ref="db:email"/>
+ <xs:element ref="db:uri"/>
+ <xs:element ref="db:personblurb"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.person.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.org.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.org.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="org" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:orgname"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:address"/>
+ <xs:element ref="db:affiliation"/>
+ <xs:element ref="db:email"/>
+ <xs:element ref="db:uri"/>
+ <xs:element ref="db:orgdiv"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.org.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.confgroup.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.confgroup.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="confgroup">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:confdates"/>
+ <xs:element ref="db:conftitle"/>
+ <xs:element ref="db:confnum"/>
+ <xs:element ref="db:confsponsor"/>
+ <xs:element ref="db:address"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.confgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.confdates.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.confdates.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="confdates">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.confdates.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.conftitle.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.conftitle.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="conftitle">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.conftitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.confnum.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.confnum.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="confnum">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.confnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.confsponsor.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.confsponsor.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="confsponsor">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.confsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.contractnum.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.contractnum.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="contractnum">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.contractnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.contractsponsor.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.contractsponsor.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="contractsponsor">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.contractsponsor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.copyright.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.copyright.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="copyright">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:year"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:holder"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.copyright.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.year.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.year.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="year">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.year.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.holder.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.holder.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="holder">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.holder.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.cover.contentmodel">
+ <xs:choice>
+ <xs:choice>
+ <xs:group ref="db:db.para.blocks"/>
+ <xs:group ref="db:db.list.blocks"/>
+ <xs:group ref="db:db.informal.blocks"/>
+ <xs:element ref="db:db.publishing.blocks"/>
+ <xs:element ref="db:db.graphic.blocks"/>
+ <xs:group ref="db:db.technical.blocks"/>
+ <xs:element ref="db:db.verbatim.blocks"/>
+ <xs:element ref="db:bridgehead"/>
+ <xs:element ref="db:remark"/>
+ <xs:element ref="db:revhistory"/>
+ </xs:choice>
+ <xs:element ref="db:db.synopsis.blocks"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attributeGroup name="db.cover.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.cover.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="cover">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.cover.contentmodel"/>
+ <xs:attributeGroup ref="db:db.cover.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.date.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.date.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="date">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.date.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.edition.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.edition.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="edition">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.edition.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.editor.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.editor.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="editor" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.credit.contentmodel">
+ <xs:attributeGroup ref="db:db.editor.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.biblioid.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.biblioid.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.biblio.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="biblioid">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.biblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.citebiblioid.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.citebiblioid.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.biblio.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="citebiblioid" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.citebiblioid.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.bibliosource.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliosource.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.biblio.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="bibliosource">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.bibliosource.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.bibliorelation.type.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="hasformat">
+ <xs:annotation>
+ <xs:documentation>The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="haspart">
+ <xs:annotation>
+ <xs:documentation>The described resource includes the referenced resource either physically or logically</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="hasversion">
+ <xs:annotation>
+ <xs:documentation>The described resource has a version, edition, or adaptation, namely, the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isformatof">
+ <xs:annotation>
+ <xs:documentation>The described resource is the same intellectual content of the referenced resource, but presented in another format</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ispartof">
+ <xs:annotation>
+ <xs:documentation>The described resource is a physical or logical part of the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isreferencedby">
+ <xs:annotation>
+ <xs:documentation>The described resource is referenced, cited, or otherwise pointed to by the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isreplacedby">
+ <xs:annotation>
+ <xs:documentation>The described resource is supplanted, displaced, or superceded by the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isrequiredby">
+ <xs:annotation>
+ <xs:documentation>The described resource is required by the referenced resource, either physically or logically</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="isversionof">
+ <xs:annotation>
+ <xs:documentation>The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="references">
+ <xs:annotation>
+ <xs:documentation>The described resource references, cites, or otherwise points to the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="replaces">
+ <xs:annotation>
+ <xs:documentation>The described resource supplants, displaces, or supersedes the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="requires">
+ <xs:annotation>
+ <xs:documentation>The described resource requires the referenced resource to support its function, delivery, or coherence of content</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.bibliorelation.type-enum.attribute">
+ <xs:attribute name="type" type="db:db.bibliorelation.type.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliorelation.type-other.attributes">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="othertype">
+ <xs:annotation>
+ <xs:documentation>The described resource has a non-standard relationship with the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertype" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliorelation.type.attribute">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.bibliorelation.type.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="othertype">
+ <xs:annotation>
+ <xs:documentation>The described resource has a non-standard relationship with the referenced resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertype" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliorelation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliorelation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.biblio.class.attribute"/>
+ <xs:attributeGroup ref="db:db.bibliorelation.type.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="bibliorelation">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.bibliorelation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.bibliocoverage.spacial.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmipoint">
+ <xs:annotation>
+ <xs:documentation>The DCMI Point identifies a point in space using its geographic coordinates</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="iso3166">
+ <xs:annotation>
+ <xs:documentation>ISO 3166 Codes for the representation of names of countries</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="dcmibox">
+ <xs:annotation>
+ <xs:documentation>The DCMI Box identifies a region of space using its geographic limits</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="tgn">
+ <xs:annotation>
+ <xs:documentation>The Getty Thesaurus of Geographic Names</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.bibliocoverage.spatial-enum.attribute">
+ <xs:attribute name="spatial" type="db:db.bibliocoverage.spacial.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.spatial-other.attributes">
+ <xs:attribute name="spatial">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="otherspatial">
+ <xs:annotation>
+ <xs:documentation>Identifies a non-standard type of coverage</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherspatial" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.spatial.attribute">
+ <xs:attribute name="spatial">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.bibliocoverage.spacial.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="otherspatial">
+ <xs:annotation>
+ <xs:documentation>Identifies a non-standard type of coverage</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherspatial" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.bibliocoverage.temporal.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="dcmiperiod">
+ <xs:annotation>
+ <xs:documentation>A specification of the limits of a time interval</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="w3c-dtf">
+ <xs:annotation>
+ <xs:documentation>W3C Encoding rules for dates and times—a profile based on ISO 8601</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.bibliocoverage.temporal-enum.attribute">
+ <xs:attribute name="temporal" type="db:db.bibliocoverage.temporal.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.temporal-other.attributes">
+ <xs:attribute name="temporal">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="othertemporal">
+ <xs:annotation>
+ <xs:documentation>Specifies a non-standard type of coverage</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertemporal" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.temporal.attribute">
+ <xs:attribute name="temporal">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.bibliocoverage.temporal.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="othertemporal">
+ <xs:annotation>
+ <xs:documentation>Specifies a non-standard type of coverage</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="othertemporal" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.coverage.attrib">
+ <xs:attributeGroup ref="db:db.bibliocoverage.spatial.attribute"/>
+ <xs:attributeGroup ref="db:db.bibliocoverage.temporal.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.bibliocoverage.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.bibliocoverage.coverage.attrib"/>
+ </xs:attributeGroup>
+ <xs:element name="bibliocoverage">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.bibliocoverage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.legalnotice.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.legalnotice.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.legalnotice.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="legalnotice">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.legalnotice.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.legalnotice.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.othercredit.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="copyeditor">
+ <xs:annotation>
+ <xs:documentation>A copy editor</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="graphicdesigner">
+ <xs:annotation>
+ <xs:documentation>A graphic designer</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Some other contributor</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="productioneditor">
+ <xs:annotation>
+ <xs:documentation>A production editor</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="technicaleditor">
+ <xs:annotation>
+ <xs:documentation>A technical editor</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="translator">
+ <xs:annotation>
+ <xs:documentation>A translator</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="indexer">
+ <xs:annotation>
+ <xs:documentation>An indexer</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="proofreader">
+ <xs:annotation>
+ <xs:documentation>A proof-reader</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="coverdesigner">
+ <xs:annotation>
+ <xs:documentation>A cover designer</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="interiordesigner">
+ <xs:annotation>
+ <xs:documentation>An interior designer</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="illustrator">
+ <xs:annotation>
+ <xs:documentation>An illustrator</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="reviewer">
+ <xs:annotation>
+ <xs:documentation>A reviewer</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="typesetter">
+ <xs:annotation>
+ <xs:documentation>A typesetter</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="conversion">
+ <xs:annotation>
+ <xs:documentation>A converter (a persons responsible for conversion, not an application)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.othercredit.class-enum.attribute">
+ <xs:attribute name="class" type="db:db.othercredit.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.othercredit.class-other.attribute">
+ <xs:attribute name="otherclass" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.othercredit.class-other.attributes">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Identifies a non-standard contribution</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="db:db.othercredit.class-other.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.othercredit.class.attribute">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.othercredit.class.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Identifies a non-standard contribution</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.othercredit.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.othercredit.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.othercredit.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="othercredit">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.credit.contentmodel">
+ <xs:attributeGroup ref="db:db.othercredit.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.pagenums.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.pagenums.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="pagenums">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.pagenums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.contrib.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.contrib.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="contrib">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.contrib.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.honorific.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.honorific.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="honorific">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.honorific.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.firstname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.firstname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="firstname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.firstname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.givenname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.givenname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="givenname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.givenname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.surname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.surname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="surname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.surname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.lineage.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.lineage.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="lineage">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.lineage.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.othername.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.othername.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="othername">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.othername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.printhistory.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.printhistory.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="printhistory">
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.para.blocks"/>
+ <xs:attributeGroup ref="db:db.printhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.pubdate.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.pubdate.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="pubdate">
+ <xs:complexType mixed="true">
+ <xs:attributeGroup ref="db:db.pubdate.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.publisher.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.publisher.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="publisher">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:publishername"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:address"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.publisher.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.publishername.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.publishername.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="publishername">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.publishername.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.releaseinfo.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.releaseinfo.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="releaseinfo">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.releaseinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.revhistory.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.revhistory.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.revhistory.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="revhistory">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.revhistory.info"/>
+ <xs:element maxOccurs="unbounded" ref="db:revision"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.revhistory.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.revision.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.revision.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="revision">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:revnumber"/>
+ <xs:element ref="db:date"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:authorinitials"/>
+ <xs:element ref="db:author"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element ref="db:revremark"/>
+ <xs:element ref="db:revdescription"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.revision.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.revnumber.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.revnumber.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="revnumber">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.revnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.revremark.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.revremark.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="revremark">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.revremark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.revdescription.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.revdescription.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="revdescription">
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="db:db.revdescription.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.seriesvolnums.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.seriesvolnums.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="seriesvolnums">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.seriesvolnums.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.volumenum.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.volumenum.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="volumenum">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.volumenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.issuenum.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.issuenum.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="issuenum">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.issuenum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.package.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.package.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="package" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.package.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.email.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.email.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="email" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.email.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.lineannotation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.lineannotation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="lineannotation">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.lineannotation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.parameter.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command">
+ <xs:annotation>
+ <xs:documentation>A command</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="function">
+ <xs:annotation>
+ <xs:documentation>A function</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="option">
+ <xs:annotation>
+ <xs:documentation>An option</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.parameter.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.parameter.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.parameter.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.parameter.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.parameter.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="parameter" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.parameter.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.replaceable.inlines">
+ <xs:choice>
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:co"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.replaceable.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="command">
+ <xs:annotation>
+ <xs:documentation>A command</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="function">
+ <xs:annotation>
+ <xs:documentation>A function</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="option">
+ <xs:annotation>
+ <xs:documentation>An option</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="parameter">
+ <xs:annotation>
+ <xs:documentation>A parameter</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.replaceable.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.replaceable.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.replaceable.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.replaceable.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.replaceable.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="replaceable" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.replaceable.inlines"/>
+ <xs:attributeGroup ref="db:db.replaceable.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.uri.type.attribute">
+ <xs:attribute name="type"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.uri.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.uri.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.uri.type.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="uri" substitutionGroup="db:db.markup.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.uri.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.abbrev.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.abbrev.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="abbrev">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ <xs:element ref="db:trademark"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.abbrev.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.acronym.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.acronym.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="acronym">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:superscript"/>
+ <xs:element ref="db:subscript"/>
+ <xs:element ref="db:trademark"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.acronym.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.citation.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.citation.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="citation" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.citation.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.citerefentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.citerefentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="citerefentry" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="db:refentrytitle"/>
+ <xs:element minOccurs="0" ref="db:manvolnum"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.citerefentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refentrytitle.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refentrytitle.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refentrytitle">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.refentrytitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.manvolnum.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.manvolnum.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="manvolnum">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.manvolnum.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.citetitle.pubwork.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="article">
+ <xs:annotation>
+ <xs:documentation>An article</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="bbs">
+ <xs:annotation>
+ <xs:documentation>A bulletin board system</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="book">
+ <xs:annotation>
+ <xs:documentation>A book</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="cdrom">
+ <xs:annotation>
+ <xs:documentation>A CD-ROM</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="chapter">
+ <xs:annotation>
+ <xs:documentation>A chapter (as of a book)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="dvd">
+ <xs:annotation>
+ <xs:documentation>A DVD</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="emailmessage">
+ <xs:annotation>
+ <xs:documentation>An email message</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="gopher">
+ <xs:annotation>
+ <xs:documentation>A gopher page</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="journal">
+ <xs:annotation>
+ <xs:documentation>A journal</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="manuscript">
+ <xs:annotation>
+ <xs:documentation>A manuscript</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="newsposting">
+ <xs:annotation>
+ <xs:documentation>A posting to a newsgroup</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="part">
+ <xs:annotation>
+ <xs:documentation>A part (as of a book)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="refentry">
+ <xs:annotation>
+ <xs:documentation>A reference entry</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="section">
+ <xs:annotation>
+ <xs:documentation>A section (as of a book or article)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="series">
+ <xs:annotation>
+ <xs:documentation>A series</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="set">
+ <xs:annotation>
+ <xs:documentation>A set (as of books)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="webpage">
+ <xs:annotation>
+ <xs:documentation>A web page</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="wiki">
+ <xs:annotation>
+ <xs:documentation>A wiki page</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.citetitle.pubwork.attribute">
+ <xs:attribute name="pubwork" use="required" type="db:db.citetitle.pubwork.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.citetitle.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.citetitle.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="pubwork" type="db:db.citetitle.pubwork.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="citetitle" substitutionGroup="db:db.bibliography.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.citetitle.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.emphasis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.emphasis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.emphasis">
+ <xs:sequence>
+ <xs:element name="emphasis">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.emphasis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:group name="db._emphasis">
+ <xs:sequence>
+ <xs:element name="emphasis">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.emphasis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.foreignphrase.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.foreignphrase.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.foreignphrase">
+ <xs:sequence>
+ <xs:element name="foreignphrase">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.general.inlines"/>
+ <xs:attributeGroup ref="db:db.foreignphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db._foreignphrase.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db._foreignphrase.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db._foreignphrase">
+ <xs:sequence>
+ <xs:element name="foreignphrase">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db._foreignphrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.phrase.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.phrase.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.phrase">
+ <xs:sequence>
+ <xs:element name="phrase">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.phrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:group name="db._phrase">
+ <xs:sequence>
+ <xs:element name="phrase">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.phrase.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.quote.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.quote.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.quote">
+ <xs:sequence>
+ <xs:element name="quote">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.quote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db._quote.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db._quote.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db._quote">
+ <xs:sequence>
+ <xs:element name="quote">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db._quote.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.subscript.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.subscript.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="subscript">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.subscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.superscript.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.superscript.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="superscript">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.superscript.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.trademark.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="copyright">
+ <xs:annotation>
+ <xs:documentation>A copyright</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="registered">
+ <xs:annotation>
+ <xs:documentation>A registered copyright</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="service">
+ <xs:annotation>
+ <xs:documentation>A service</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="trade">
+ <xs:annotation>
+ <xs:documentation>A trademark</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.trademark.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.trademark.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.trademark.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.trademark.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.trademark.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="trademark" substitutionGroup="db:db.product.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.trademark.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.wordasword.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.wordasword.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="wordasword">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.wordasword.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.footnoteref.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.footnoteref.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.footnoteref.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.linkend.attribute"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:element name="footnoteref">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.footnoteref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.xref.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xref.xrefstyle.attribute">
+ <xs:attributeGroup ref="db:db.xrefstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xref.endterm.attribute">
+ <xs:attributeGroup ref="db:db.endterm.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xref.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.req.linking.attributes"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:element name="xref">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.xref.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.link.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.link.xrefstyle.attribute">
+ <xs:attributeGroup ref="db:db.xrefstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.link.endterm.attribute">
+ <xs:attributeGroup ref="db:db.endterm.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.link.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.req.linking.attributes"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="endterm" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:element name="link">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.link.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.olink.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.olink.xrefstyle.attribute">
+ <xs:attributeGroup ref="db:db.xrefstyle.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.olink.localinfo.attribute">
+ <xs:attribute name="localinfo" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.olink.targetdoc.attribute">
+ <xs:attribute name="targetdoc" use="required" type="xs:anyURI"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.olink.targetptr.attribute">
+ <xs:attribute name="targetptr" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.olink.type.attribute">
+ <xs:attribute name="type" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.olink.attlist">
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="targetdoc" type="xs:anyURI"/>
+ <xs:attribute name="role"/>
+ <xs:attribute name="xrefstyle"/>
+ <xs:attribute name="localinfo"/>
+ <xs:attribute name="targetptr"/>
+ <xs:attribute name="type"/>
+ </xs:attributeGroup>
+ <xs:element name="olink">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.olink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.anchor.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.anchor.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="db:db.common.idreq.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="anchor">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.anchor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.alt.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.alt.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="alt">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:inlinemediaobject"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.alt.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/product.xsd b/slides/schema/xsd/product.xsd
new file mode 100644
index 0000000..097f3e7
--- /dev/null
+++ b/slides/schema/xsd/product.xsd
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.productname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.productname.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="copyright">
+ <xs:annotation>
+ <xs:documentation>A name with a copyright</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="registered">
+ <xs:annotation>
+ <xs:documentation>A name with a registered copyright</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="service">
+ <xs:annotation>
+ <xs:documentation>A name of a service</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="trade">
+ <xs:annotation>
+ <xs:documentation>A name which is trademarked</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.productname.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.productname.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.productname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.productname.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="productname" substitutionGroup="db:db.product.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.productname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.productnumber.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.productnumber.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="productnumber" substitutionGroup="db:db.product.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.productnumber.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.database.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="altkey">
+ <xs:annotation>
+ <xs:documentation>An alternate or secondary key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="constraint">
+ <xs:annotation>
+ <xs:documentation>A constraint</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="datatype">
+ <xs:annotation>
+ <xs:documentation>A data type</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="field">
+ <xs:annotation>
+ <xs:documentation>A field</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="foreignkey">
+ <xs:annotation>
+ <xs:documentation>A foreign key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="group">
+ <xs:annotation>
+ <xs:documentation>A group</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="index">
+ <xs:annotation>
+ <xs:documentation>An index</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="key1">
+ <xs:annotation>
+ <xs:documentation>The first or primary key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="key2">
+ <xs:annotation>
+ <xs:documentation>An alternate or secondary key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="name">
+ <xs:annotation>
+ <xs:documentation>A name</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="primarykey">
+ <xs:annotation>
+ <xs:documentation>The primary key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="procedure">
+ <xs:annotation>
+ <xs:documentation>A (stored) procedure</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="record">
+ <xs:annotation>
+ <xs:documentation>A record</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="rule">
+ <xs:annotation>
+ <xs:documentation>A rule</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="secondarykey">
+ <xs:annotation>
+ <xs:documentation>The secondary key</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="table">
+ <xs:annotation>
+ <xs:documentation>A table</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="user">
+ <xs:annotation>
+ <xs:documentation>A user</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="view">
+ <xs:annotation>
+ <xs:documentation>A view</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.database.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.database.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.database.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.database.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.database.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="database" substitutionGroup="db:db.product.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.database.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.application.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="hardware">
+ <xs:annotation>
+ <xs:documentation>A hardware application</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="software">
+ <xs:annotation>
+ <xs:documentation>A software application</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.application.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.application.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.application.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.application.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="class" type="db:db.application.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="application" substitutionGroup="db:db.product.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.application.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.hardware.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.hardware.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="hardware" substitutionGroup="db:db.product.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.hardware.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/programming.xsd b/slides/schema/xsd/programming.xsd
new file mode 100644
index 0000000..225920c
--- /dev/null
+++ b/slides/schema/xsd/programming.xsd
@@ -0,0 +1,749 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.programming.inlines">
+ <xs:choice>
+ <xs:element ref="db:function"/>
+ <xs:element ref="db:parameter"/>
+ <xs:element ref="db:varname"/>
+ <xs:element ref="db:returnvalue"/>
+ <xs:element ref="db:type"/>
+ <xs:element ref="db:classname"/>
+ <xs:element ref="db:exceptionname"/>
+ <xs:element ref="db:interfacename"/>
+ <xs:element ref="db:methodname"/>
+ <xs:element ref="db:modifier"/>
+ <xs:element ref="db:initializer"/>
+ <xs:element ref="db:db.oo.inlines"/>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="db.oo.inlines" abstract="true"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.synopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.synopsis.label.attribute">
+ <xs:attributeGroup ref="db:db.label.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.synopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:element name="synopsis" substitutionGroup="db:db.verbatim.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.verbatim.contentmodel">
+ <xs:attributeGroup ref="db:db.synopsis.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.funcsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.funcsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <xs:group name="db.funcsynopsis.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="funcsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.funcsynopsis.info"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:funcsynopsisinfo"/>
+ <xs:element ref="db:funcprototype"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.funcsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.funcsynopsisinfo.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.funcsynopsisinfo.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="funcsynopsisinfo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.verbatim.contentmodel">
+ <xs:attributeGroup ref="db:db.funcsynopsisinfo.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.funcprototype.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.funcprototype.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="funcprototype">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:element ref="db:funcdef"/>
+ <xs:choice>
+ <xs:element ref="db:void"/>
+ <xs:element ref="db:varargs"/>
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:paramdef"/>
+ <xs:group ref="db:db.group.paramdef"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="db:varargs"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.funcprototype.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.funcdef.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.funcdef.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="funcdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:type"/>
+ <xs:element ref="db:function"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.funcdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.function.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.function.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="function">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.function.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.void.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.void.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="void">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.void.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.varargs.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.varargs.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="varargs">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.varargs.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.group.paramdef.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.paramdef.choice.attribute">
+ <xs:attributeGroup ref="db:db.choice.opt.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.paramdef.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="choice" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.group.paramdef">
+ <xs:sequence>
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:paramdef"/>
+ <xs:group ref="db:db.group.paramdef"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.group.paramdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.paramdef.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.paramdef.choice.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="opt">
+ <xs:annotation>
+ <xs:documentation>Formatted to indicate that it is optional.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="req">
+ <xs:annotation>
+ <xs:documentation>Formatted to indicate that it is required.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.paramdef.choice.attribute">
+ <xs:attribute name="choice" use="required" type="db:db.paramdef.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.paramdef.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="choice" type="db:db.paramdef.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="paramdef">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db._text"/>
+ <xs:element ref="db:initializer"/>
+ <xs:element ref="db:type"/>
+ <xs:element ref="db:parameter"/>
+ <xs:element ref="db:funcparams"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.paramdef.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.funcparams.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.funcparams.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="funcparams">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.funcparams.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.classsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.classsynopsis.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="class">
+ <xs:annotation>
+ <xs:documentation>This is the synopsis of a class</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="interface">
+ <xs:annotation>
+ <xs:documentation>This is the synopsis of an interface</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.classsynopsis.class.attribute">
+ <xs:attribute name="class" use="required" type="db:db.classsynopsis.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.classsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ <xs:attribute name="class" type="db:db.classsynopsis.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="classsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:db.oo.inlines"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:classsynopsisinfo"/>
+ <xs:element ref="db:methodsynopsis"/>
+ <xs:element ref="db:constructorsynopsis"/>
+ <xs:element ref="db:destructorsynopsis"/>
+ <xs:element ref="db:fieldsynopsis"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.classsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.classsynopsisinfo.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.classsynopsisinfo.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="classsynopsisinfo">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.verbatim.contentmodel">
+ <xs:attributeGroup ref="db:db.classsynopsisinfo.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.ooclass.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.ooclass.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="ooclass" substitutionGroup="db:db.oo.inlines">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:package"/>
+ <xs:element ref="db:modifier"/>
+ </xs:choice>
+ <xs:element ref="db:classname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.ooclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.oointerface.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.oointerface.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="oointerface" substitutionGroup="db:db.oo.inlines">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:package"/>
+ <xs:element ref="db:modifier"/>
+ </xs:choice>
+ <xs:element ref="db:interfacename"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.oointerface.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.ooexception.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.ooexception.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="ooexception" substitutionGroup="db:db.oo.inlines">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:package"/>
+ <xs:element ref="db:modifier"/>
+ </xs:choice>
+ <xs:element ref="db:exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.ooexception.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.modifier.xml.space.attribute">
+ <xs:attributeGroup ref="xml:space1"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.modifier.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.modifier.attlist">
+ <xs:attributeGroup ref="xml:space1"/>
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="modifier">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.modifier.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.interfacename.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.interfacename.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="interfacename">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.interfacename.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.exceptionname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.exceptionname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="exceptionname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.exceptionname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.fieldsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.fieldsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <xs:element name="fieldsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:element minOccurs="0" ref="db:type"/>
+ <xs:element ref="db:varname"/>
+ <xs:element minOccurs="0" ref="db:initializer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.fieldsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.initializer.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.initializer.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="initializer">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.initializer.inlines"/>
+ <xs:attributeGroup ref="db:db.initializer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.constructorsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.constructorsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <xs:element name="constructorsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:element minOccurs="0" ref="db:methodname"/>
+ <xs:choice>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:methodparam"/>
+ <xs:group ref="db:db.group.methodparam"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="db:void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.constructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.destructorsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.destructorsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <xs:element name="destructorsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:element minOccurs="0" ref="db:methodname"/>
+ <xs:choice>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:methodparam"/>
+ <xs:group ref="db:db.group.methodparam"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="db:void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:exceptionname"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.destructorsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.methodsynopsis.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.methodsynopsis.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="language"/>
+ </xs:attributeGroup>
+ <xs:element name="methodsynopsis" substitutionGroup="db:db.synopsis.blocks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="db:type"/>
+ <xs:element ref="db:void"/>
+ </xs:choice>
+ <xs:element ref="db:methodname"/>
+ <xs:choice>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:methodparam"/>
+ <xs:group ref="db:db.group.methodparam"/>
+ </xs:choice>
+ <xs:element ref="db:void"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:exceptionname"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.methodsynopsis.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.methodname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.methodname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="methodname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.methodname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.methodparam.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.methodparam.rep.attribute">
+ <xs:attributeGroup ref="db:db.rep.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.methodparam.choice.attribute">
+ <xs:attributeGroup ref="db:db.choice.req.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.methodparam.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="rep" type="db:db.rep.enumeration"/>
+ <xs:attribute name="choice" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:element name="methodparam">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:element minOccurs="0" ref="db:type"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ <xs:element ref="db:parameter"/>
+ <xs:element minOccurs="0" ref="db:initializer"/>
+ </xs:sequence>
+ <xs:element ref="db:funcparams"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:modifier"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.methodparam.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.group.methodparam.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.methodparam.choice.attribute">
+ <xs:attributeGroup ref="db:db.choice.opt.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.group.methodparam.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="choice" type="db:db.choice.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.group.methodparam">
+ <xs:sequence>
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:methodparam"/>
+ <xs:group ref="db:db.group.methodparam"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.group.methodparam.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.varname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.varname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="varname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.varname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.returnvalue.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.returnvalue.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="returnvalue">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.returnvalue.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.type.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.type.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="type">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.type.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.classname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.classname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="classname">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.classname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.programlisting.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.programlisting.width.attribute">
+ <xs:attributeGroup ref="db:db.width.characters.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.programlisting.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.verbatim.attributes"/>
+ <xs:attribute name="width" type="xs:nonNegativeInteger"/>
+ </xs:attributeGroup>
+ <xs:element name="programlisting" substitutionGroup="db:db.verbatim.blocks">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="db:db.verbatim.contentmodel">
+ <xs:attributeGroup ref="db:db.programlisting.attlist"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/qandaset.xsd b/slides/schema/xsd/qandaset.xsd
new file mode 100644
index 0000000..6bb9ee2
--- /dev/null
+++ b/slides/schema/xsd/qandaset.xsd
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: qandaset.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.qandaset.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:simpleType name="db.qandaset.defaultlabel.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="none">
+ <xs:annotation>
+ <xs:documentation>No labels</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="number">
+ <xs:annotation>
+ <xs:documentation>Numeric labels</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="qanda">
+ <xs:annotation>
+ <xs:documentation>"Q:" and "A:" labels</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.qandaset.defaultlabel.attribute">
+ <xs:attribute name="defaultlabel" use="required" type="db:db.qandaset.defaultlabel.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.qandaset.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="defaultlabel" type="db:db.qandaset.defaultlabel.enumeration"/>
+ </xs:attributeGroup>
+ <xs:group name="db.qandaset.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="qandaset">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.qandaset.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="db:qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.qandaset.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.qandadiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.qandadiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.qandadiv.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="qandadiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.qandadiv.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:qandadiv"/>
+ <xs:element maxOccurs="unbounded" ref="db:qandaentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.qandadiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.qandaentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.qandaentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.qandaentry.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="qandaentry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.qandaentry.info"/>
+ <xs:element ref="db:question"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:answer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.qandaentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.question.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.question.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="question">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:label"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.question.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.answer.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.answer.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="answer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:label"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.answer.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.label.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.label.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="label">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.label.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/refentry.xsd b/slides/schema/xsd/refentry.xsd
new file mode 100644
index 0000000..4c0aa83
--- /dev/null
+++ b/slides/schema/xsd/refentry.xsd
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: refentry.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.toplevel.refsection">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:refsection"/>
+ <xs:element maxOccurs="unbounded" ref="db:refsect1"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group name="db.secondlevel.refsection">
+ <xs:choice>
+ <xs:element maxOccurs="unbounded" ref="db:refsection"/>
+ <xs:element maxOccurs="unbounded" ref="db:refsect2"/>
+ </xs:choice>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:element name="db.reference.components" abstract="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.indexterm"/>
+ <xs:group ref="db:db.refentry.info"/>
+ <xs:element minOccurs="0" ref="db:refmeta"/>
+ <xs:element maxOccurs="unbounded" ref="db:refnamediv"/>
+ <xs:element minOccurs="0" ref="db:refsynopsisdiv"/>
+ <xs:group ref="db:db.toplevel.refsection"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.reference.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.reference.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.reference.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="status"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:group name="db.reference.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="reference" substitutionGroup="db:db.divisions">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.reference.info"/>
+ <xs:element minOccurs="0" ref="db:partintro"/>
+ <xs:element maxOccurs="unbounded" ref="db:db.reference.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.reference.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refentry.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="status"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:group name="db.refentry.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="refentry" substitutionGroup="db:db.reference.components"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refmeta.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refmeta.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refmeta">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.indexterm"/>
+ <xs:element ref="db:refentrytitle"/>
+ <xs:element minOccurs="0" ref="db:manvolnum"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:refmiscinfo"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.indexterm"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refmeta.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.refmiscinfo.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="source">
+ <xs:annotation>
+ <xs:documentation>The name of the software product or component to which this topic applies</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="version">
+ <xs:annotation>
+ <xs:documentation>The version of the software product or component to which this topic applies</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="manual">
+ <xs:annotation>
+ <xs:documentation>The section title of the reference page (e.g., User Commands)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="sectdesc">
+ <xs:annotation>
+ <xs:documentation>The section title of the reference page (believed synonymous with "manual" but in wide use)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="software">
+ <xs:annotation>
+ <xs:documentation>The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.refmiscinfo.class-enum.attribute">
+ <xs:attribute name="class" type="db:db.refmiscinfo.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refmiscinfo.class-other.attribute">
+ <xs:attribute name="otherclass" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refmiscinfo.class-other.attributes">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates that the information is some 'other' kind.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="db:db.refmiscinfo.class-other.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refmiscinfo.class.attribute">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.refmiscinfo.class.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates that the information is some 'other' kind.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refmiscinfo.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refmiscinfo.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.refmiscinfo.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="refmiscinfo">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.refmiscinfo.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refnamediv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refnamediv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refnamediv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="db:refdescriptor"/>
+ <xs:element maxOccurs="unbounded" ref="db:refname"/>
+ <xs:element ref="db:refpurpose"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:refclass"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refnamediv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refdescriptor.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refdescriptor.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refdescriptor">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.refdescriptor.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refname.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refname.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refname">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.refname.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refpurpose.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refpurpose.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refpurpose">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.refpurpose.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refclass.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refclass.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="refclass">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:application"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refclass.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refsynopsisdiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsynopsisdiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.refsynopsisdiv.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="refsynopsisdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.refsynopsisdiv.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.secondlevel.refsection"/>
+ </xs:sequence>
+ <xs:group ref="db:db.secondlevel.refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refsynopsisdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refsection.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsection.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsection.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="status"/>
+ <xs:attribute name="label"/>
+ </xs:attributeGroup>
+ <xs:group name="db.refsection.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="refsection">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.refsection.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:refsection"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:refsection"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refsection.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/refsect1.xsd b/slides/schema/xsd/refsect1.xsd
new file mode 100644
index 0000000..f0d984c
--- /dev/null
+++ b/slides/schema/xsd/refsect1.xsd
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: refsect1.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:group name="db.refsect1.sections">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:refsect2"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:attributeGroup name="db.refsect1.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsect1.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsect1.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.refsect1.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="refsect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.refsect1.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.refsect1.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.refsect1.sections"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refsect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.refsect2.sections">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:refsect3"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:attributeGroup name="db.refsect2.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsect2.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsect2.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.refsect2.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="refsect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.refsect2.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.refsect2.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.refsect2.sections"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refsect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.refsect3.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsect3.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.refsect3.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.refsect3.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="refsect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.refsect3.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.refsect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/sect1.xsd b/slides/schema/xsd/sect1.xsd
new file mode 100644
index 0000000..2fbff4d
--- /dev/null
+++ b/slides/schema/xsd/sect1.xsd
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: sect1.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:group name="db.sect1.sections">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:sect2"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attributeGroup name="db.sect1.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect1.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect1.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.sect1.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="sect1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.sect1.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.sect1.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.sect1.sections"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.sect1.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.sect2.sections">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:sect3"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attributeGroup name="db.sect2.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect2.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect2.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.sect2.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="sect2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.sect2.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.sect2.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.sect2.sections"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.sect2.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.sect3.sections">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:sect4"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attributeGroup name="db.sect3.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect3.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect3.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.sect3.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="sect3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.sect3.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.sect3.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.sect3.sections"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.sect3.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.sect4.sections">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:sect5"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attributeGroup name="db.sect4.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect4.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect4.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.sect4.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="sect4">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.sect4.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.sect4.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.sect4.sections"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.sect4.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:group name="db.sect5.sections">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:attributeGroup name="db.sect5.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect5.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.sect5.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.sect5.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="sect5">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.sect5.info"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:group minOccurs="0" ref="db:db.sect5.sections"/>
+ </xs:sequence>
+ <xs:group ref="db:db.sect5.sections"/>
+ </xs:choice>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.sect5.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/slides.xsd b/slides/schema/xsd/slides.xsd
new file mode 100644
index 0000000..01f819e
--- /dev/null
+++ b/slides/schema/xsd/slides.xsd
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook-slides" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:include schemaLocation="docbook.xsd"/>
+ <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- See http://docbook.org/ns/docbook-slides -->
+ <!--
+ This file is part of DocBook Slides V5.0
+
+ Copyright 2012 Gabor Kovesdan
+
+ Release: $Id$
+
+ Permission to use, copy, modify and distribute the DocBook Slides
+ schema and its accompanying documentation for any purpose and without
+ fee is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook Slides schema in any way, label your schema
+ as a variant of DocBook Slides. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+ -->
+ <!-- Avoid ID clashes -->
+ <xs:attributeGroup name="db._any.attribute">
+ <xs:anyAttribute processContents="skip"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.common.attributes">
+ <xs:attribute ref="xml:id"/>
+ <xs:attributeGroup ref="db:db.common.base.attributes"/>
+ <xs:attribute name="annotations"/>
+ <xs:attributeGroup ref="dbs:dbs.style.attributes"/>
+ </xs:attributeGroup>
+ <!-- Any element and attribute from the SVG namespace -->
+ <xs:group name="db._any.svg">
+ <xs:sequence>
+ <xs:any namespace="http://www.w3.org/2000/svg" processContents="skip"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Any element and attribute from the MathML namespace -->
+ <xs:group name="db._any.mml">
+ <xs:sequence>
+ <xs:any namespace="http://www.w3.org/1998/Math/MathML" processContents="skip"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- Any attribute from any namespace -->
+ <xs:attributeGroup name="dbs._any.attribute">
+ <xs:anyAttribute processContents="skip"/>
+ </xs:attributeGroup>
+ <xs:group name="dbs.all.content">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="db:db.all.blocks"/>
+ <xs:element ref="dbs:speakernotes"/>
+ <xs:element ref="dbs:handoutnotes"/>
+ <xs:group ref="dbs:db._any.svg"/>
+ <xs:group ref="dbs:db._any.mml"/>
+ <xs:element ref="dbs:block"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="block">
+ <xs:annotation>
+ <xs:documentation>Indicates a formatting block that can have its own styling applied</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dbs:dbs.all.content"/>
+ <xs:attributeGroup ref="dbs:dbs.block.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="dbs.block.role.attribute">
+ <xs:attribute name="role" use="required">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the block element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.block.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.block.attlist">
+ <xs:attribute name="role">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the block element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:element name="slides">
+ <xs:annotation>
+ <xs:documentation>Root element of a slides document</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ <xs:element minOccurs="0" ref="dbs:speakernotes"/>
+ <xs:element minOccurs="0" ref="dbs:handoutnotes"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="dbs:foil"/>
+ <xs:element ref="dbs:foilgroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="dbs:dbs.slides.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="dbs.slides.role.attribute">
+ <xs:attribute name="role" use="required">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the slides element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.slides.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.slides.attlist">
+ <xs:attribute name="role">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the slides element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:element name="foilgroup">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dbs:dbs.all.content"/>
+ <xs:element maxOccurs="unbounded" ref="dbs:foil"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="dbs:dbs.foilgroup.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="dbs.foilgroup.role.attribute">
+ <xs:attribute name="role" use="required">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the foilgroup element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.foilgroup.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.foilgroup.attlist">
+ <xs:attribute name="role">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the foilgroup element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:element name="foil">
+ <xs:annotation>
+ <xs:documentation>Indicates a foil that may have some info and content</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="dbs:dbs.all.content"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="dbs:dbs.foil.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="dbs.foil.role.attribute">
+ <xs:attribute name="role" use="required">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the foil element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.foil.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.foil.attlist">
+ <xs:attribute name="role">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the foil element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:element name="speakernotes">
+ <xs:annotation>
+ <xs:documentation>Indicates notes for the speaker</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="dbs:dbs.speakernotes.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="dbs.speakernotes.role.attribute">
+ <xs:attribute name="role" use="required">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the speakernotes element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.speakernotes.attlist">
+ <xs:attribute name="role">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the speakernotes element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="handoutnotes">
+ <xs:annotation>
+ <xs:documentation>Indicates notes that are meant for printed copies</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:attributeGroup ref="dbs:dbs.handoutnotes.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="dbs.handoutnotes.role.attribute">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the handoutnotes element</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="role" use="required">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the handoutnotes element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.handoutnotes.attlist">
+ <xs:attribute name="role">
+ <xs:annotation>
+ <xs:documentation>Role attribute for the handoutnotes element</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.style.attributes">
+ <xs:attribute name="incremental" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Attribute indicating an incremental part</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>disabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>enabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="collapsible" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Attribute indicating a collapsible part</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>disabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>enabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="expanded">
+ <xs:annotation>
+ <xs:documentation>enabled and expanded by default</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="style" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Attribute indicating a formatting style class</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.incremental.attribute">
+ <xs:attribute name="incremental" use="required" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Attribute indicating an incremental part</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>disabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>enabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.collapsible.attribute">
+ <xs:attribute name="collapsible" use="required" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Attribute indicating a collapsible part</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>disabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>enabled</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="expanded">
+ <xs:annotation>
+ <xs:documentation>enabled and expanded by default</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="dbs.style.attribute">
+ <xs:attribute name="style" use="required" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Attribute indicating a formatting style class</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/slides/schema/xsd/svg.xsd b/slides/schema/xsd/svg.xsd
new file mode 100644
index 0000000..d6dfbf6
--- /dev/null
+++ b/slides/schema/xsd/svg.xsd
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: svg.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ============================================================ -->
+ <xs:attributeGroup name="db.imagedata.svg.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.imagedata.svg.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="format">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="svg">
+ <xs:annotation>
+ <xs:documentation>Specifies SVG.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="align" type="db:db.imagedata.align.enumeration"/>
+ <xs:attribute name="valign" type="db:db.imagedata.valign.enumeration"/>
+ <xs:attribute name="width"/>
+ <xs:attribute name="contentwidth"/>
+ <xs:attribute name="scalefit" type="db:db.imagedata.scalefit.enumeration"/>
+ <xs:attribute name="scale" type="xs:positiveInteger"/>
+ <xs:attribute name="depth"/>
+ <xs:attribute name="contentdepth"/>
+ </xs:attributeGroup>
+ <xs:group name="db.imagedata.svg.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.forbidden"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="db.imagedata.svg">
+ <xs:sequence>
+ <xs:element name="imagedata">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.imagedata.svg.info"/>
+ <xs:group maxOccurs="unbounded" ref="dbs:db._any.svg"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.imagedata.svg.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:group>
+ <!-- ============================================================ -->
+</xs:schema>
diff --git a/slides/schema/xsd/tasks.xsd b/slides/schema/xsd/tasks.xsd
new file mode 100644
index 0000000..beb1996
--- /dev/null
+++ b/slides/schema/xsd/tasks.xsd
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: tasks.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:group name="db.task.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.task.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.task.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="task">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.task.info"/>
+ <xs:element minOccurs="0" ref="db:tasksummary"/>
+ <xs:element minOccurs="0" ref="db:taskprerequisites"/>
+ <xs:element ref="db:procedure"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:example"/>
+ <xs:element minOccurs="0" ref="db:taskrelated"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.task.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tasksummary.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tasksummary.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.tasksummary.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="tasksummary">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.tasksummary.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.tasksummary.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.taskprerequisites.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.taskprerequisites.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.taskprerequisites.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="taskprerequisites">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.taskprerequisites.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.taskprerequisites.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.taskrelated.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.taskrelated.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.taskrelated.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="taskrelated">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.taskrelated.info"/>
+ <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.taskrelated.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/technical.xsd b/slides/schema/xsd/technical.xsd
new file mode 100644
index 0000000..51cf930
--- /dev/null
+++ b/slides/schema/xsd/technical.xsd
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: pool.rnc 7466 2007-09-27 14:03:55Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <!-- ====================================================================== -->
+ <xs:simpleType name="db.systemitem.class.enumeration">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="daemon">
+ <xs:annotation>
+ <xs:documentation>A daemon or other system process (syslogd)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="domainname">
+ <xs:annotation>
+ <xs:documentation>A domain name (example.com)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="etheraddress">
+ <xs:annotation>
+ <xs:documentation>An ethernet address (00:05:4E:49:FD:8E)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="event">
+ <xs:annotation>
+ <xs:documentation>An event of some sort (SIGHUP)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="eventhandler">
+ <xs:annotation>
+ <xs:documentation>An event handler of some sort (hangup)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="filesystem">
+ <xs:annotation>
+ <xs:documentation>A filesystem (ext3)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="fqdomainname">
+ <xs:annotation>
+ <xs:documentation>A fully qualified domain name (my.example.com)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="groupname">
+ <xs:annotation>
+ <xs:documentation>A group name (wheel)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ipaddress">
+ <xs:annotation>
+ <xs:documentation>An IP address (127.0.0.1)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="library">
+ <xs:annotation>
+ <xs:documentation>A library (libncurses)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="macro">
+ <xs:annotation>
+ <xs:documentation>A macro</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="netmask">
+ <xs:annotation>
+ <xs:documentation>A netmask (255.255.255.192)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="newsgroup">
+ <xs:annotation>
+ <xs:documentation>A newsgroup (comp.text.xml)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="osname">
+ <xs:annotation>
+ <xs:documentation>An operating system name (Hurd)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="process">
+ <xs:annotation>
+ <xs:documentation>A process (gnome-cups-icon)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="protocol">
+ <xs:annotation>
+ <xs:documentation>A protocol (ftp)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="resource">
+ <xs:annotation>
+ <xs:documentation>A resource</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="securitycontext">
+ <xs:annotation>
+ <xs:documentation>A security context (a role, permission, or security token, for example)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="server">
+ <xs:annotation>
+ <xs:documentation>A server (mail.example.com)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="service">
+ <xs:annotation>
+ <xs:documentation>A service (ppp)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="systemname">
+ <xs:annotation>
+ <xs:documentation>A system name (hephaistos)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="username">
+ <xs:annotation>
+ <xs:documentation>A user name (ndw)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:attributeGroup name="db.systemitem.class-enum.attribute">
+ <xs:attribute name="class" type="db:db.systemitem.class.enumeration"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.systemitem.class-other.attribute">
+ <xs:attribute name="otherclass" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.systemitem.class-other.attributes">
+ <xs:attribute name="class" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates that the system item is some 'other' kind.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="db:db.systemitem.class-other.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.systemitem.class.attribute">
+ <xs:attribute name="class">
+ <xs:simpleType>
+ <xs:union memberTypes="db:db.systemitem.class.enumeration">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="other">
+ <xs:annotation>
+ <xs:documentation>Indicates that the system item is some 'other' kind.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="otherclass" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.systemitem.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.systemitem.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attributeGroup ref="db:db.systemitem.class.attribute"/>
+ </xs:attributeGroup>
+ <xs:element name="systemitem" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.systemitem.inlines"/>
+ <xs:attributeGroup ref="db:db.systemitem.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.option.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.option.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="option" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.option.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.optional.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.optional.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="optional" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.optional.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.property.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.property.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:element name="property" substitutionGroup="db:db.technical.inlines">
+ <xs:complexType mixed="true">
+ <xs:group ref="db:db._text"/>
+ <xs:attributeGroup ref="db:db.property.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/toc.xsd b/slides/schema/xsd/toc.xsd
new file mode 100644
index 0000000..630a3fa
--- /dev/null
+++ b/slides/schema/xsd/toc.xsd
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: toc.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="db.toc.pagenum.attribute">
+ <xs:attribute name="pagenum" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.toc.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.toc.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ </xs:attributeGroup>
+ <xs:group name="db.toc.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.only"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="toc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.toc.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="db:tocdiv"/>
+ <xs:element ref="db:tocentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.toc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tocdiv.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tocdiv.pagenum.attribute">
+ <xs:attributeGroup ref="db:db.toc.pagenum.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tocdiv.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="pagenum"/>
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:group name="db.tocdiv.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="tocdiv">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.tocdiv.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:tocdiv"/>
+ <xs:element ref="db:tocentry"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.tocdiv.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.tocentry.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tocentry.pagenum.attribute">
+ <xs:attributeGroup ref="db:db.toc.pagenum.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.tocentry.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attribute name="pagenum"/>
+ <xs:attribute name="linkend" type="xs:IDREF"/>
+ </xs:attributeGroup>
+ <xs:element name="tocentry">
+ <xs:complexType mixed="true">
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.inlines"/>
+ <xs:attributeGroup ref="db:db.tocentry.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/topic.xsd b/slides/schema/xsd/topic.xsd
new file mode 100644
index 0000000..f20c894
--- /dev/null
+++ b/slides/schema/xsd/topic.xsd
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: hier.rnc 8569 2010-01-15 00:23:46Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.topic.status.attribute">
+ <xs:attributeGroup ref="db:db.status.attribute"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.topic.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.topic.type.attribute">
+ <xs:attribute name="type" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.topic.attlist">
+ <xs:attribute name="role"/>
+ <xs:attribute name="type"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+ <xs:attribute name="label"/>
+ <xs:attribute name="status"/>
+ </xs:attributeGroup>
+ <xs:group name="db.topic.info">
+ <xs:sequence>
+ <xs:group ref="db:db._info.title.req"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="topic">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="db:db.topic.info"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ <xs:group ref="db:db.toplevel.blocks.or.sections"/>
+ <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="db:db.topic.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/xlink.xsd b/slides/schema/xsd/xlink.xsd
new file mode 100644
index 0000000..28558d3
--- /dev/null
+++ b/slides/schema/xsd/xlink.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/1999/xlink" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attribute name="href" type="xs:anyURI"/>
+ <xs:attributeGroup name="type">
+ <xs:attribute name="type" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="simple">
+ <xs:annotation>
+ <xs:documentation>An XLink simple link</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attribute name="role" type="xs:anyURI"/>
+ <xs:attribute name="arcrole" type="xs:anyURI"/>
+ <xs:attribute name="title"/>
+ <xs:attribute name="show" type="db:db.xlink.show.enumeration"/>
+ <xs:attribute name="actuate" type="db:db.xlink.actuate.enumeration"/>
+ <xs:attribute name="from" type="xs:NMTOKEN"/>
+ <xs:attribute name="label" type="xs:NMTOKEN"/>
+ <xs:attribute name="to" type="xs:NMTOKEN"/>
+ <xs:attributeGroup name="type1">
+ <xs:attribute name="type" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="extended">
+ <xs:annotation>
+ <xs:documentation>An XLink extended link</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="type2">
+ <xs:attribute name="type" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="locator">
+ <xs:annotation>
+ <xs:documentation>An XLink locator link</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="type3">
+ <xs:attribute name="type" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="arc">
+ <xs:annotation>
+ <xs:documentation>An XLink arc link</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/slides/schema/xsd/xlink1.xsd b/slides/schema/xsd/xlink1.xsd
new file mode 100644
index 0000000..100eff8
--- /dev/null
+++ b/slides/schema/xsd/xlink1.xsd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of DocBook V5.0
+
+ Copyright 1992-2008 HaL Computer Systems, Inc.,
+ O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+ Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+ Organization for the Advancement of Structured Information
+ Standards (OASIS).
+
+ Release: $Id: xlink.rnc 8931 2010-10-20 13:29:20Z nwalsh $
+
+ Permission to use, copy, modify and distribute the DocBook schema
+ and its accompanying documentation for any purpose and without fee
+ is hereby granted in perpetuity, provided that the above copyright
+ notice and this paragraph appear in all copies. The copyright
+ holders make no representation about the suitability of the schema
+ for any purpose. It is provided "as is" without expressed or implied
+ warranty.
+
+ If you modify the DocBook schema in any way, label your schema as a
+ variant of DocBook. See the reference documentation
+ (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+ for more information.
+
+ Please direct all questions, bug reports, or suggestions for changes
+ to the docbook@lists.oasis-open.org mailing list. For more
+ information, see http://www.oasis-open.org/docbook/.
+
+ ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <xs:attributeGroup name="db.xlink.from.attribute">
+ <xs:attribute ref="xlink:from" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.label.attribute">
+ <xs:attribute ref="xlink:label" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.xlink.to.attribute">
+ <xs:attribute ref="xlink:to" use="required"/>
+ </xs:attributeGroup>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.extendedlink.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.extendedlink.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="xlink:type1"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:title"/>
+ </xs:attributeGroup>
+ <xs:element name="extendedlink">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="db:locator"/>
+ <xs:element ref="db:arc"/>
+ </xs:choice>
+ <xs:attributeGroup ref="db:db.extendedlink.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.locator.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.locator.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="xlink:type2"/>
+ <xs:attributeGroup ref="db:db.xlink.href.attribute"/>
+ <xs:attribute ref="xlink:role"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:label"/>
+ </xs:attributeGroup>
+ <xs:element name="locator">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.locator.attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- ====================================================================== -->
+ <xs:attributeGroup name="db.arc.role.attribute">
+ <xs:attribute name="role" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="db.arc.attlist">
+ <xs:attribute name="role"/>
+ <xs:attributeGroup ref="dbs:db.common.attributes"/>
+ <xs:attributeGroup ref="xlink:type3"/>
+ <xs:attribute ref="xlink:arcrole"/>
+ <xs:attribute ref="xlink:title"/>
+ <xs:attribute ref="xlink:show"/>
+ <xs:attribute ref="xlink:actuate"/>
+ <xs:attribute ref="xlink:from"/>
+ <xs:attribute ref="xlink:to"/>
+ </xs:attributeGroup>
+ <xs:element name="arc">
+ <xs:complexType>
+ <xs:attributeGroup ref="db:db.arc.attlist"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/slides/schema/xsd/xml.xsd b/slides/schema/xsd/xml.xsd
new file mode 100644
index 0000000..24c87a9
--- /dev/null
+++ b/slides/schema/xsd/xml.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
+ <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="lang"/>
+ <xs:attribute name="base" type="xs:anyURI"/>
+ <xs:attributeGroup name="space">
+ <xs:attribute name="space" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preserve">
+ <xs:annotation>
+ <xs:documentation>Whitespace must be preserved.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="space1">
+ <xs:attribute name="space" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="preserve">
+ <xs:annotation>
+ <xs:documentation>Extra whitespace and line breaks must be preserved.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/slides/slidy/.htaccess b/slides/slidy/.htaccess
new file mode 100755
index 0000000..d395348
--- /dev/null
+++ b/slides/slidy/.htaccess
@@ -0,0 +1,28 @@
+Options +MultiViews
+LanguagePriority en
+AddLanguage pt-br .pt-br
+
+<Files ~ "*.html">
+
+ForceType 'text/html; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.xhtml">
+
+ForceType 'application/xhtml+xml; charset=utf-8'
+
+</Files>
+
+<Files ~ *.css">
+
+ForceType 'text/css; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.js">
+
+ForceType 'text/javascript; charset=utf-8'
+
+</Files>
+mkdir
diff --git a/slides/slidy/Overview.html b/slides/slidy/Overview.html
new file mode 100755
index 0000000..69f72f6
--- /dev/null
+++ b/slides/slidy/Overview.html
@@ -0,0 +1,911 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-US">
+<head>
+<meta name="generator" content=
+"HTML Tidy for Linux/x86 (vers 1st November 2003), see www.w3.org" />
+<title>HTML Slidy</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content=
+"Copyright &#169; 2005-2010 W3C (MIT, ERCIM, Keio)" />
+<meta name="duration" content="5" />
+<meta name="font-size-adjustment" content="-2" />
+<link rel="stylesheet" href="styles/slidy.css" type="text/css" />
+<link rel="stylesheet" href="styles/w3c-blue.css" type="text/css" />
+<script src="scripts/slidy.js" charset="utf-8" type="text/javascript">
+</script>
+</head>
+<body>
+<div class="background"><img alt="" id="head-icon"
+src="graphics/icon-blue.png" /><object id="head-logo"
+data="graphics/w3c-logo-white.svg" type="image/svg+xml"
+title="W3C logo"><a href="http://www.w3.org/"><img
+alt="W3C logo" id="head-logo-fallback"
+src="graphics/w3c-logo-white.gif" /></a></object></div>
+
+<div class="background slanty">
+<img src="graphics/w3c-logo-slanted.jpg" alt="slanted W3C logo" />
+</div>
+<div class="slide cover title">
+ <!-- hidden style graphics to ensure they are saved with other content -->
+ <img class="hidden" src="graphics/bullet.png" alt="" />
+ <img class="hidden" src="graphics/fold.gif" alt="" />
+ <img class="hidden" src="graphics/unfold.gif" alt="" />
+ <img class="hidden" src="graphics/fold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/nofold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/unfold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-fold.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-unfold.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-fold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-nofold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-unfold-dim.gif" alt="" />
+
+<img src="graphics/keys2.jpg" alt="Cover page images (keys)"
+ class="cover" /><br clear="all" />
+<h1>HTML Slidy: Slide Shows in HTML and XHTML</h1>
+
+<p><a href="http://www.w3.org/People/Raggett/">Dave Raggett</a>,
+&lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;<br />
+<br />
+<br />
+<br />
+<br /><em>Hit the space bar or swipe left for next slide</em></p>
+</div>
+
+<div class="slide">
+<h1>Slide Shows in HTML and XHTML</h1>
+
+<ul>
+<li>You can now create accessible slide shows with ease</li>
+
+<li>Works across browsers and is operated like PowerPoint
+
+<ul>
+<li>Advance to next slide with mouse click, space bar or swipe left</li>
+
+<li>Move forward/backward between slides with Cursor Left,
+Cursor Right, <strong>Pg Up</strong> and <strong>Pg Dn</strong>
+keys, or swipe left or right</li>
+
+<li><strong>Home</strong> key for first slide, <strong>End</strong>
+ key for last slide</li>
+
+<li>The "<strong>C</strong>" key for an automatically generated
+table of contents, or click on "contents" on the toolbar or
+swipe up or down</li>
+
+<li>Function <strong>F11</strong> to go full screen and back</li>
+
+<li>The "<strong>F</strong>" key toggles the display of the footer</li>
+
+<li>The "<strong>A</strong>" key toggles display of current vs all
+slides
+
+<ul>
+<li>Try it now to see how to include notes for handouts (this is
+explained in the notes following this slide)</li>
+</ul>
+</li>
+
+<li>Font sizes automatically adapt to browser window size
+
+<ul>
+<li>use <strong>S</strong> and <strong>B</strong> keys for
+manual control (or &lt; and &gt;, or the <strong>-</strong> and
+<strong>+</strong> keys on the number pad</li>
+<li>Use CSS to set a relative font size on a given slide to make
+the content bigger or smaller than on other slides</li>
+</ul>
+</li>
+
+<li>Switching off JavaScript reveals all slides</li>
+</ul>
+</li>
+
+<li><em>Now move to next slide to see how it works</em></li>
+</ul>
+
+<p class="copyright"><a rel="Copyright" href=
+"http://www.w3.org/Consortium/Legal/ipr-notice#Copyright" shape=
+"rect">Copyright</a> &copy; 2005-2010 <a href="/"><acronym title=
+"World Wide Web Consortium">W3C</acronym></a> <sup>&reg;</sup>
+(<a href="http://www.csail.mit.edu/"><acronym title=
+"Massachusetts Institute of Technology">MIT</acronym></a>, <a href=
+"http://www.ercim.org/"><acronym title=
+"European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights
+Reserved.</p>
+</div>
+
+<div class="handout">
+<p>For handouts, its often useful to include extra notes using a
+div element with class="handout" following each slide, as in:</p>
+
+<pre>
+&lt;div class="slide"&gt;
+ <em>... your slide content ...</em>
+&lt;/div&gt;
+
+&lt;div class="handout"&gt;
+ <em>... stuff that only appears in the handouts ...</em>
+&lt;/div&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>What you need to do</h1>
+
+<ul>
+<li>Each presentation is a single XHTML file</li>
+
+<li>Each slide is enclosed in <em>&lt;div class="slide"&gt; ...
+&lt;/div&gt;</em>
+
+<ul>
+<li>The div element will be created automatically for h1
+elements that are direct children of the body element.</li>
+</ul>
+
+</li>
+
+<li>Use regular markup within each slide</li>
+
+<li>The document head includes two links:
+<ul>
+<li>The slide show style sheet:
+<a href=
+"http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css">http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css</a></li>
+
+<li>The slide show script: <a href=
+"http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js">http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js</a></li>
+
+<li>Or you can link to the compressed version of the script which is about
+one seventh the size, see <a href=
+"http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js.gz">http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js.gz</a></li>
+<li>If you are using XHTML, remember to use &lt;/script&gt; and
+&lt;/style&gt; as per <a
+href="http://www.w3.org/TR/xhtml1/#C_3">Appendix C.3</a></li>
+</ul>
+</li>
+</ul>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"&gt;
+&lt;head&gt;
+ &lt;title&gt;Slide Shows in XHTML&lt;/title&gt;
+ &lt;meta name="copyright"
+ content="Copyright &amp;#169; 2005 your copyright notice" /&gt;
+ &lt;link rel="stylesheet" type="text/css" media="screen, projection, print"
+ href="http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css" /&gt;
+ &lt;script src="http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js"
+ charset="utf-8" type="text/javascript"&gt;&lt;/script&gt;
+ &lt;style type="text/css"&gt;
+ &lt;!-- your custom style rules --&gt;
+ &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+ ... your slides marked up in XHTML ...
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>To get the W3C Blue Style</h1>
+
+<p>The head element should include the following link to the style
+sheet:</p>
+
+<pre>
+&lt;link rel="stylesheet" type="text/css" media="screen, projection, print"
+ href="http://www.w3.org/Talks/Tools/Slidy2/styles/w3c-blue.css" /&gt;
+</pre>
+
+<p>The body element's content should start with the following
+markup:</p>
+
+<pre>
+&lt;div class="background"&gt;
+ &lt;img id="head-icon" alt="graphic with four colored squares"
+ src="http://www.w3.org/Talks/Tools/Slidy2/graphics/icon-blue.png" /&gt;
+ &lt;object id="head-logo" title="W3C logo" type="image/svg+xml"
+ data="http://www.w3.org/Talks/Tools/Slidy2/graphics/w3c-logo-white.svg"&gt;&lt;img
+ src="http://www.w3.org/Talks/Tools/Slidy2/graphics/w3c-logo-white.gif"
+ alt="W3C logo" id="head-logo-fallback" /&gt;&lt;/object&gt;
+&lt;/div&gt;
+</pre>
+
+<p>This adds the logos on the top left and right corners of the
+slide.</p>
+
+<p>You are of course welcome to create your own slide designs.
+You can provide different styles and backgrounds for
+different slides (more details later).</p>
+
+<p>Use the <em>meta element</em> with <em>name="copyright"</em>
+for use in the slide show footer:</p>
+
+<pre>
+&lt;meta name="copyright"
+content="Copyright &amp;#169; 2005-2009 W3C (MIT, ERCIM, Keio)" /&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>Upgrading from previous versions of Slidy</h1>
+
+<ul>
+<li>This uses a new version of the HTML Slidy script</li>
+<li>It is designed to work better with other scripts,
+e.g. for UI controls within your slides
+<ul>
+<li>Only adds one global name "w3c_slidy"</li>
+<li>Doesn't interfere with other scripts that set event handers
+such as onload on body element</li>
+</ul>
+</li>
+<li>Works for slides delivered as text/html and application/xhtml+xml</li>
+<li>New presentation timer feature</li>
+<li>Initial prompt on first slide to help newcomers to Slidy</li>
+<li>Better support for styling slides and printing them</li>
+<li>Requires additional style rules, so new script won't work
+with old presentations without changes to their style sheets
+<ul>
+<li>See <a href="styles/slidy.css">slidy.css</a>, and
+<a href="styles/w3c-blue.css">w3c-blue.css</a></li>
+</ul>
+</li>
+<li>But old presentations will work unchanged as they refer to
+the old script!</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>To use it off-line</h1>
+
+<ul>
+<li>You can download <a href="slidy.zip">slidy.zip</a> and unzip
+it to create a Slidy directory on your machine</li>
+
+<li>If you have cvs access to the W3C site you can check out the Slidy
+directory</li>
+
+<li>Remember to periodically check for updates</li>
+
+<li>You then have two choices:
+
+<ol>
+<li>Use relative URIs depending on your local setup to access the
+appropriate files. Use the same directory structure as on the W3C
+server, ie, ".../2005/Talks/...".</li>
+
+<li>Run a Web server on your machine so that the directory above
+can be accessed via <code>http://localhost/Talks/Tools/Slidy2</code>
+and use the URIs of the form "/Talks/Tools/Slidy2/styles/slidy.css",
+"/Talks/Tools/Slidy2/scripts/slidy.js".</li>
+</ol></li>
+
+<li>In both cases you can then publish your files on the W3C server
+unchanged.</li>
+
+<li><strong>NOTE</strong> Internet Explorer on Windows XP now disables
+scripting for web pages loaded directly from the local file system,
+a work around is to use another browser, e.g. Firefox or Opera</li>
+
+<li>Please feel free to create your own designs, and help us to build
+a gallery of Slidy styles.</li>
+
+<li>My <a href="/2006/02/woa/">Google TechTalk</a> (1st Feb 2006)
+uses a notebook themed style</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>Timing Your Presentation</h1>
+
+<ul>
+<li>Sometimes it is handy to know just how much time you have to
+left to finish your presentation</li>
+<li>To get this feature, add the following markup to the
+content of the head element, replacing 5 by the duration
+of your presentation in minutes
+<pre>&lt;meta name="duration" content="5" /&gt;</pre>
+</li>
+<li>The time left in minutes and seconds is shown in the footer
+next to the slide number</li>
+<li>The clock starts to run when you move away from the first slide</li>
+<li>Moving back to the first slide pauses the clock</li>
+</ul>
+
+
+</div>
+
+<div class="slide slanty">
+<h1>Generate a Title Page</h1>
+
+<p>If you want a separate title page with the W3C blue style, the
+first slide should be as follows:</p>
+
+<pre>
+&lt;div class="slide cover"&gt;
+ &lt;img src="http://www.w3.org/Talks/Tools/Slidy2/graphics/keys.jpg"
+ alt="Cover page images (keys)" class="cover" /&gt;
+ &lt;br clear="all" /&gt;
+ &lt;h1&gt;HTML Slidy: Slide Shows in XHTML&lt;/h1&gt;
+ &lt;p&gt;&lt;a href="http://www.w3.org/People/Raggett/"&gt;Dave Raggett,&lt;/a&gt;
+ &lt;a href="mailto:dsr@w3.org"&gt;dsr@w3.org&lt;/a&gt;&lt;/p&gt;
+&lt;/div&gt;
+</pre>
+
+<p>The <a
+href="http://www.w3.org/Talks/Tools/Slidy2/graphics/w3c-blue.css">w3c-blue.css</a>
+style sheet looks for the classes "slide" and "cover" on div
+and img elements using the CSS selector <em>div.slide.cover</em></p>
+
+<p>This technique can be used to assign your slides to different
+classes with a different appearence for each such class.</p>
+
+<p>Slidy also allows you to use different background markup for
+different slides, based upon shared class names, as in "foo" below.
+Backgrounds without additional class names are always shown except
+when the slide isn't transparent. You may need to tweak your
+custom style sheet.</p>
+
+<pre>
+&lt;div class="background foo"&gt;
+ ... background content ...
+&lt;div&gt;
+
+...
+
+&lt;div class="slide foo"&gt;
+ ... slide content ...
+&lt;div&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>Incremental display of slide contents</h1>
+
+<p>For incremental display, use class="incremental", for
+instance:</p>
+
+<ul class="incremental">
+<li>First bullet point</li>
+
+<li>Second bullet point</li>
+
+<li>Third bullet point</li>
+</ul>
+
+<p class="incremental">which is marked up as follows:</p>
+
+<pre class="incremental">
+&lt;ul class="incremental"&gt;
+ &lt;li&gt;First bullet point&lt;/li&gt;
+ &lt;li&gt;Second bullet point&lt;/li&gt;
+ &lt;li&gt;Third bullet point&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p class="incremental"&gt;which is marked up as follows:&lt;/p&gt;
+
+&lt;pre class="incremental"&gt;
+ ...
+&lt;/pre&gt;
+</pre>
+
+<div class="footnote">
+<p>An element is incrementally revealed if its parent element has
+class="incremental" or if itself has that attribute. Text nodes are
+not elements and are revealed when their parent element is revealed.
+You can use class="incremental" on any element except for &lt;br /&gt;.
+Use class="non-incremental" to override the effect of setting the
+parent element's class to incremental.</p>
+
+<p>Note: you will see a red asterisk on the left of the toolbar
+when there is still something more to reveal.</p>
+</div>
+</div>
+
+<div class="slide">
+<h1>Create outline lists with hidden content</h1>
+
+<p>You can make your bullet points or numbered list items
+into outlines that you can expand or collapse</p>
+
+<ul class="outline">
+<li>Just add <em>class="outline"</em> to the ul or ol
+element. Click on this list item for more details.
+
+<ul>
+<li>The Slidy script will then treat the list
+as an outline list.</li>
+<li>Clicking on outline list items will expand/collapse
+block-level elements within that list item.</li>
+<li>Click on the above to make this list item
+collapse again.</li>
+</ul>
+</li>
+<li>Users will then see expand/collapse icons as appropriate
+and may click anywhere on the list item to change its state.
+This particular list item can't be expanded or collapsed.</li>
+<li class="expand">Add class="expand" to any li elements that
+you want to start in an expanded state.
+
+<ul>
+<li>By default Slidy hides all the block level elements within the
+outline list items unless you have specified class="expand".</li>
+<li>Such pre-expanded items can be collapsed by clicking on them.</li>
+</ul>
+</li>
+<li>Note expand/collapse icon highlighting requires browser
+support for :hover which isn't supported by IE6.
+
+<ul>
+<li>Microsoft says it will be supported by IE7 along with
+many fixes for other CSS woes in IE6.</li>
+</ul>
+</li>
+</ul>
+
+<pre>
+&lt;ol class='outline'&gt;
+ &lt;!-- topic 1 starts collapsed --&gt;
+ &lt;li&gt;Topic 1
+ &lt;ol&gt;
+ &lt;li&gt;subtopic a&lt;/li&gt;
+ &lt;li&gt;subtopic b&lt;/li&gt;
+ &lt;/ol&gt;
+ &lt;/li&gt;
+ &lt;!-- topic 2 starts expanded --&gt;
+ &lt;li class="expand"&gt;Topic 2
+ &lt;ol&gt;
+ &lt;li&gt;subtopic c&lt;/li&gt;
+ &lt;li&gt;subtopic d&lt;/li&gt;
+ &lt;/ol&gt;
+ &lt;/li&gt;
+&lt;/ol&gt;
+</pre>
+</div>
+
+<!-- useful info at http://www.howtocreate.co.uk/wrongWithIE/ -->
+<div class="slide">
+<h1>Make your images scale with the browser window size</h1>
+
+<p>For adaptive layout, use percentage widths on images, together
+with CSS positioning:</p>
+
+<ul>
+<li>CSS positioning is simpler and more reliable than using
+tables</li>
+</ul>
+
+<pre>
+&lt;div class="slide"&gt;
+ &lt;h1&gt;Analysts - "Open standards programming will become
+ mainstream, focused around VoiceXML"&lt;/h1&gt;
+ &lt;!-- use CSS positioning and scaling for adaptive layout --&gt;
+ &lt;img src="trends.png" width="50%" style="float:left"
+ alt="projected growth of VoiceXML" /&gt;
+
+ &lt;blockquote style="float:right;width: 35%"&gt;
+ VoiceXML will dominate the voice environment, due to its
+ flexibility and eventual multimodal capabilities
+ &lt;/blockquote&gt;&lt;br clear="all" /&gt;
+
+ &lt;p style="text-align:center"&gt;Source Data Monitor, March
+ 2004&lt;/p&gt;
+&lt;/div&gt;
+</pre>
+
+<p>To work around a CSS rendering bug in IE relating
+to margins, you can set display:inline on floated elements.</p>
+</div>
+
+<div class="slide">
+<h1>Incremental display of layered images</h1>
+
+<p>These can be marked up using CSS relative positioning, e.g.</p>
+
+<pre>
+&lt;div class="incremental"
+ style="margin-left: 4em; position: relative"&gt;
+ &lt;img src="graphics/face1.gif" alt="face"
+ style="position: static; vertical-align: bottom"/&gt;
+ &lt;img src="graphics/face2.gif" alt="eyes"
+ style="position: absolute; left: 0; top: 0" /&gt;
+ &lt;img src="graphics/face3.gif" alt="nose"
+ style="position: absolute; left: 0; top: 0" /&gt;
+ &lt;img src="graphics/face4.gif" alt="mouth"
+ style="position: absolute; left: 0; top: 0" /&gt;
+&lt;/div&gt;
+</pre>
+
+<p style="font-size: smaller;">You should also use transparent GIF
+images to avoid the IE/Win bug for alpha channel in PNG. A fix is
+expected in IE 7. A <a href=
+"http://www.skyzyx.com/scripts/sleight.php">work around</a> is
+available on skyzyx.com. My thanks to <a href=
+"http://www.webstandards.org/act/acid2/">ACID2</a> for the
+graphics.</p>
+
+<div class="incremental" style=
+"margin-left: 4em; position: relative;"><img src="graphics/face1.gif" alt=
+"face" style="position: static; vertical-align: bottom;" />
+<img src="graphics/face2.gif" alt="eyes" style=
+"position: absolute; left: 0pt; top: 0pt;" /> <img src="graphics/face3.gif"
+alt="nose" style="position: absolute; left: 0pt; top: 0pt;" />
+<img src="graphics/face4.gif" alt="mouth" style=
+"position: absolute; left: 0pt; top: 0pt;" /></div>
+</div>
+
+<div class="slide">
+<h1>How to center content vertically and horizontally</h1>
+<div class="vbox"></div>
+<div class="hbox">
+<p>Within the div element for your slide:</p>
+<pre>
+&lt;div class="vbox"&gt;&lt;/div&gt;
+&lt;div class="hbox"&gt;
+Place the content here
+&lt;/div&gt;
+</pre>
+<p>and style it with the following:</p>
+<pre>
+div.vbox {
+ float: left;
+ height: 40%; width: 50%;
+ margin-top: -220px;
+}
+div.hbox {
+ width:60%; margin-top: 0;
+ margin-left:auto; margin-right:auto;
+ height: 60%;
+ border:1px solid silver;
+ background:#F0F0F0;
+ overflow:auto;
+ text-align:left;
+ clear:both;
+}
+</pre>
+
+<p>The above styling is included in <a href="styles/w3c-blue.css">w3c-blue.css</a>,
+which is designed to be used with <a href="styles/slidy.css">slidy.css</a>, but you
+are encouraged to develop your own style sheet with your own look and feel.</p>
+</div>
+</div>
+
+<div class="slide">
+<h1>Include SVG Content</h1>
+
+<p>Inclusion of SVG content can be done using the object element,
+for example:</p>
+
+<div style="text-align: center;"><object data="graphics/example.svg" type=
+"image/svg+xml" title="Indian Office logo" height="10%" width=
+"50%"><img src="graphics/example.png" alt="Indian Office logo" width=
+"50%" /></object></div>
+
+<p>has been achieved by:</p>
+
+<pre>
+&lt;object data="graphics/example.svg" type="image/svg+xml"
+ width="50%" height="10%" title="Indian Office logo"&gt;
+ &lt;img src="graphics/example.png" width="50%"
+ alt="Indian Office logo" /&gt;
+&lt;/object&gt;
+</pre>
+
+<p>This ensures that the enclosed png is displayed when the browser
+has no plugin installed or can't display SVG directly. Providing
+such a fall back is very important! Don't forget the alt text for
+people who can't see the image.</p>
+
+<p>However, there are caveats, see the next slide!</p>
+</div>
+
+<div class="slide">
+<h1>Caveats with SVG+object</h1>
+
+<p>Adobe has recently withdrawn support for its SVG Viewer, so you are
+recommended to consider <a
+href="http://wiki.svg.org/Viewer_Implementations">alternatives</a>.
+If you still using the Adobe SVG viewer you should be aware of bugs
+when using the it with IE, Namely:</p>
+
+<ul>
+<li>Most modern browsers generally support SVG SVG Tiny 1.1 or better
+natively without the need for a plugin</li>
+
+<li>If you need to use Internet Explorer you are advised to upgrade
+to IE9 which includes native support for SVG.</li>
+
+<li>Patches to Internet Explorer mean that the Adobe SVG Viewer
+version 3.03 no longer works with IE6. You are therefore recommended
+to uninstall version 3.03 and instead install <a
+href="http://www.adobe.com/svg/viewer/install/beta.html">Adobe SVG Viewer
+6.0 preview</a> if this is available to to you.</li>
+
+<li>IE6 makes a <em>copy</em> of the SVG file on the local disc
+when displaying it; but doesn't pass the original URI to the plugin</li>
+
+<li>As a result relative references from within the SVG to external
+resources (scripts, CSS, images, other SVG) will break.</li>
+
+<li>The work around is to use absolute references within your SVG.</li>
+
+<li>On Windows, the Adobe SVG plugin doesn't respect the CSS z-index
+property, and if used on backgrounds will always show through other
+content</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>Additional Remarks</h1>
+
+<ul>
+<li>Slides are auto-numbered on the slide show footer</li>
+
+<li>You can link into the <a href="#(2)">middle</a> of a slide
+show:
+
+<ul>
+<li>It works out which slide you want and hides the rest</li>
+
+<li>You can even link between slides in the same slide show</li>
+
+<li>Individual sides can be addressed with the syntax #(<em>slide
+number</em>),<br />
+e.g. slide 3 of this presentation is: <a href=
+"#(3)">http://www.w3.org/Talks/Tools/Slidy#(3)</a>
+<ul>
+<li>Previous versions of Slidy used square brackets, which will
+also work.</li>
+</ul></li>
+<li>Note that the browser's back/forward buttons may not work as
+you might expect due to browser problems.</li>
+</ul>
+</li>
+
+<li>Adding "title" to the list of classes for div elements that serve
+as title pages will render the corresponding entry in the table of
+contents in bold italic text (press "C" now for an example)</li>
+
+<li>If your slides have more content than normal, use a <em>meta
+element</em> to request a smaller font
+
+<ul>
+<li>the following requests fonts to be one step smaller than
+the Slidy default for the current window width, and positive
+integers will make the fonts correspondingly larger</li>
+</ul>
+
+<pre>
+&lt;meta name="font-size-adjustment" content="-1" /&gt;
+</pre>
+
+<ul>
+<li>Slidy uses JavaScript to dynamically set the font size on the
+body element, but it is okay to specify relative font changes on
+other elements within your own style sheet, e.g.</li>
+</ul>
+<pre>div.slide.large { font-size: 200% }</pre>
+</li>
+
+<li>You are encouraged to ensure your markup is valid. <a href=
+"http://www.w3.org/People/Raggett/tidy/">HTML Tidy</a> can be used
+to find and correct common markup problems</li>
+
+<li>The slide show script and style sheet can be used freely under
+W3C's <a href=
+"http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> and <a href=
+"http://www.w3.org/Consortium/Legal/copyright-documents">document
+use</a> policies</li>
+<li>At <a href="http://xtech06.usefulinc.com/">XTech2006</a>
+I gave this <a href="http://www.w3.org/2006/05/Slidy-XTech/">presentation</a>
+on Slidy
+(<a href="http://www.w3.org/2006/05/Slidy-XTech/slidy-xtech06-dsr.pdf">Paper</a>).</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>Localization and automatic translation</h1>
+
+<p>Slidy now includes support for localization</p>
+
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+
+<ul>
+<li>The tool bar is localized according to the language of the presentation</li>
+<li>This is taken from the xml:lang or lang attributes on the html element</li>
+<li>The <a href="http://www.w3.org/Talks/Tools/Slidy2/help/help.html">help file</a> is
+selected based upon your browser's language preferences</li>
+<li>As of 29th July 2010, the languages supported are: English,
+Spanish, Catalonian, Czech, Dutch, German, Polish, French,
+Hungarian, Italian, Greek, Japanese, Chinese, Russian and
+Swedish</li>
+<li>If you would like to contribute localizations for other languages,
+please get in touch with Dave Raggett &lt;dsr@w3.org&gt;</li>
+<li>The following illustrates what was used for Spanish</li>
+</ul>
+<pre>
+// for each language there is an associative array
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Ãndice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+</pre>
+
+<p><strong>Note:</strong> Slidy now works with <a
+href="http://translate.google.com/translate?js=n&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;u=http%3A%2F%2Fwww.w3.org%2FTalks%2FTools%2FSlidy2%2F&amp;sl=en&amp;tl=fr&amp;history_state0=">current slides translated into French</a>. Use
+right mouse button to open frame without Google header. To disable
+automatic translation of the content of particular elements add
+<code>class="notranslate"</code>, see <a href="http://googlewebmastercentral.blogspot.com/2008/10/helping-you-break-language-barrier.html">breaking the language barrier</a>.</p>
+</div>
+
+<div class="slide">
+<h1>Future Plans</h1>
+
+<p>Recent additions have included a table of contents, and a way to
+hide and reveal content in the spirit of outline lists. The
+script has been rewritten to make it easier to combine with other
+scripts, e.g. for UI controls, and support swipes for navigation on
+touch screen devices. Further work is anticipated on the
+following:</p>
+
+<ul>
+<li>Collecting a gallery of good looking slide themes
+<ul>
+<li>Opportunities for graphics designers!</li>
+</ul>
+</li>
+<li>Bob Ferris has worked on <a
+href="https://github.com/zazi/slidy_tud/blob/master/README.md">a
+number of UI extensions</a> which could be incorporated into the
+W3C slidy script.</li>
+<li>Getting SVG Tiny to work on IE without need for SVG plugin
+<ul>
+<li>Using scripts to dynamically convert SVG Tiny to VML</li>
+<li>Note that IE9 introduces native SVG support, so it may
+no longer be worth working on SVG to VML for rendering of SVG</li>
+</ul>
+</li>
+<li>Pre-alpha version of wysiwyg slide editor (see <a
+href="editor/editor-screenshot1.png">screenshot</a>)
+<ul>
+<li>Using contentEditable when available, otherwise
+falling back to textarea and plain text conventions</li>
+<li>Using XMLHttpRequest to dynamically reflect changes to server</li>
+</ul>
+</li>
+<li>Mechanism for remotely driving Slidy as part of distributed meetings
+<ul>
+<li>Using XMLHttpRequest to listen for navigation commands</li>
+<li>Using VoIP for accompanying audio and teleconferencing</li>
+<li>Synchronizing recorded spoken presentation with currently viewed slide</li>
+</ul>
+</li>
+<li>Filters from PowerPoint and Open Office
+<ul>
+<li>and export to PDF via <a href="http://www.princexml.com/">PrinceXML</a></li>
+</ul>
+</li>
+</ul>
+
+<p>If you have comments, suggestions for improvements, or would
+like to volunteer your help with further work on Slidy,
+please contact <a href=
+"http://www.w3.org/People/Raggett/">Dave Raggett</a> &lt;<a href=
+"mailto:dsr@w3.org">dsr@w3.org</a>&gt;</p>
+</div>
+
+<div class="slide">
+<h1>Acknowledgements</h1>
+
+<ul>
+<li>My thanks to everyone who sent in bug reports and feature
+requests</li>
+<li>Opera Software for implementing CSS @media projection and
+promoting the idea of using the Web for presentations with
+<a href="http://www.opera.com/support/tutorials/operashow/">Opera
+Show</a></li>
+<li><a href="http://tantek.com/">Tantek &Ccedil;elik</a> for his
+pioneering work on applying JavaScript for slide presentations on
+other browsers</li>
+<li>Eric Meyer for taking this further with the excellent <a
+href="http://www.meyerweb.com/eric/tools/s5/s5-intro.html">S5</a></li>
+<li>W3C's <a href="http://dev.w3.org/cvsweb/slidemaker/">slidemaker
+tool</a>, which uses a perl script to split an html file up into
+one file per slide with navigation buttons</li>
+<li>Early versions of <a href="http://www.w3.org/People/Raggett/tidy/">HTML
+Tidy</a> which supported a means to create presentations via splitting
+html files on h2 elements</li>
+<li>Many sites with advice on JavaScript work arounds for browser
+variations</li>
+<li>Microsoft for pioneering contentEditable and XMLHTTP which
+both provide tremendous opportunities for Web applications</li>
+<li>Microsoft Office which provided the impetus for creating
+Slidy as a Web-based alternative to the ubiquitous use of PowerPoint</li>
+</ul>
+
+<p class="smaller"><strong>Note</strong> that while Slidy and
+S5 were developed independently, both support the use of the
+class values "slide" and "handout" for div elements. Slidy doesn't
+support the "layout" class featured in S5 and Opera Show, but
+instead provides a more flexible alternative with the "background"
+class, which enables different backgrounds on different slides.</p>
+</div>
+
+<div class="slide">
+<h1>Acknowledgements</h1>
+
+<p>The following people have contributed localizations:</p>
+
+<ul>
+<li>Emmanuelle Gutiérrez y Restrepo, Spanish</li>
+<li>Joan V. Baz, Catalan</li>
+<li>Jakub Vrána, Czech</li>
+<li>Ruud Steltenpool, Dutch</li>
+<li>Beat Vontobel, German</li>
+<li>Krzysztof Kotowicz, Polish</li>
+<li>Tamas Horvath, Hungarian</li>
+<li>Creso Moraes, Brazilian Portuguese</li>
+<li>Giuseppe Scollo, Italian</li>
+<li>Konstantinos Koukopoulos, Greek</li>
+<li>Yoshikazu Sawa (澤 義和), Japanese</li>
+<li>Shelley Shyan, Chinese</li>
+<li>Andrew Pantyukhin, Russian</li>
+<li>Saasha Metsärantala, Swedish</li>
+</ul>
+
+<p>The following people have contributed bug reports:</p>
+
+<ul>
+<li>Ivan Herman</li>
+<li>Steve Bratt</li>
+<li>Peter Patel-Schneider</li>
+<li>Matthew Coller</li>
+<li>Rune Heggtveit</li>
+<li>Gopal Venkatesan</li>
+<li>Cay Horstmann</li>
+<li>Schuyler Duveen</li>
+<li>Matteo Nannini</li>
+<li>Ralph Swick</li>
+<li>Jakub Vrána</li>
+<li>Philip Bolt</li>
+<li>Jon Frost</li>
+<li>Jonathan Chetwynd</li>
+<li>Nicolas Frisby</li>
+</ul>
+
+<p>Douglas Crockford for <a
+href="http://www.crockford.com/javascript/jsmin.html">jsmin</a>
+which was used to minify the script before compressing it with gzip.</p>
+</div>
+</body>
+</html>
diff --git a/slides/slidy/Overview.xhtml b/slides/slidy/Overview.xhtml
new file mode 100755
index 0000000..69f72f6
--- /dev/null
+++ b/slides/slidy/Overview.xhtml
@@ -0,0 +1,911 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-US">
+<head>
+<meta name="generator" content=
+"HTML Tidy for Linux/x86 (vers 1st November 2003), see www.w3.org" />
+<title>HTML Slidy</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content=
+"Copyright &#169; 2005-2010 W3C (MIT, ERCIM, Keio)" />
+<meta name="duration" content="5" />
+<meta name="font-size-adjustment" content="-2" />
+<link rel="stylesheet" href="styles/slidy.css" type="text/css" />
+<link rel="stylesheet" href="styles/w3c-blue.css" type="text/css" />
+<script src="scripts/slidy.js" charset="utf-8" type="text/javascript">
+</script>
+</head>
+<body>
+<div class="background"><img alt="" id="head-icon"
+src="graphics/icon-blue.png" /><object id="head-logo"
+data="graphics/w3c-logo-white.svg" type="image/svg+xml"
+title="W3C logo"><a href="http://www.w3.org/"><img
+alt="W3C logo" id="head-logo-fallback"
+src="graphics/w3c-logo-white.gif" /></a></object></div>
+
+<div class="background slanty">
+<img src="graphics/w3c-logo-slanted.jpg" alt="slanted W3C logo" />
+</div>
+<div class="slide cover title">
+ <!-- hidden style graphics to ensure they are saved with other content -->
+ <img class="hidden" src="graphics/bullet.png" alt="" />
+ <img class="hidden" src="graphics/fold.gif" alt="" />
+ <img class="hidden" src="graphics/unfold.gif" alt="" />
+ <img class="hidden" src="graphics/fold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/nofold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/unfold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-fold.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-unfold.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-fold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-nofold-dim.gif" alt="" />
+ <img class="hidden" src="graphics/bullet-unfold-dim.gif" alt="" />
+
+<img src="graphics/keys2.jpg" alt="Cover page images (keys)"
+ class="cover" /><br clear="all" />
+<h1>HTML Slidy: Slide Shows in HTML and XHTML</h1>
+
+<p><a href="http://www.w3.org/People/Raggett/">Dave Raggett</a>,
+&lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;<br />
+<br />
+<br />
+<br />
+<br /><em>Hit the space bar or swipe left for next slide</em></p>
+</div>
+
+<div class="slide">
+<h1>Slide Shows in HTML and XHTML</h1>
+
+<ul>
+<li>You can now create accessible slide shows with ease</li>
+
+<li>Works across browsers and is operated like PowerPoint
+
+<ul>
+<li>Advance to next slide with mouse click, space bar or swipe left</li>
+
+<li>Move forward/backward between slides with Cursor Left,
+Cursor Right, <strong>Pg Up</strong> and <strong>Pg Dn</strong>
+keys, or swipe left or right</li>
+
+<li><strong>Home</strong> key for first slide, <strong>End</strong>
+ key for last slide</li>
+
+<li>The "<strong>C</strong>" key for an automatically generated
+table of contents, or click on "contents" on the toolbar or
+swipe up or down</li>
+
+<li>Function <strong>F11</strong> to go full screen and back</li>
+
+<li>The "<strong>F</strong>" key toggles the display of the footer</li>
+
+<li>The "<strong>A</strong>" key toggles display of current vs all
+slides
+
+<ul>
+<li>Try it now to see how to include notes for handouts (this is
+explained in the notes following this slide)</li>
+</ul>
+</li>
+
+<li>Font sizes automatically adapt to browser window size
+
+<ul>
+<li>use <strong>S</strong> and <strong>B</strong> keys for
+manual control (or &lt; and &gt;, or the <strong>-</strong> and
+<strong>+</strong> keys on the number pad</li>
+<li>Use CSS to set a relative font size on a given slide to make
+the content bigger or smaller than on other slides</li>
+</ul>
+</li>
+
+<li>Switching off JavaScript reveals all slides</li>
+</ul>
+</li>
+
+<li><em>Now move to next slide to see how it works</em></li>
+</ul>
+
+<p class="copyright"><a rel="Copyright" href=
+"http://www.w3.org/Consortium/Legal/ipr-notice#Copyright" shape=
+"rect">Copyright</a> &copy; 2005-2010 <a href="/"><acronym title=
+"World Wide Web Consortium">W3C</acronym></a> <sup>&reg;</sup>
+(<a href="http://www.csail.mit.edu/"><acronym title=
+"Massachusetts Institute of Technology">MIT</acronym></a>, <a href=
+"http://www.ercim.org/"><acronym title=
+"European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights
+Reserved.</p>
+</div>
+
+<div class="handout">
+<p>For handouts, its often useful to include extra notes using a
+div element with class="handout" following each slide, as in:</p>
+
+<pre>
+&lt;div class="slide"&gt;
+ <em>... your slide content ...</em>
+&lt;/div&gt;
+
+&lt;div class="handout"&gt;
+ <em>... stuff that only appears in the handouts ...</em>
+&lt;/div&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>What you need to do</h1>
+
+<ul>
+<li>Each presentation is a single XHTML file</li>
+
+<li>Each slide is enclosed in <em>&lt;div class="slide"&gt; ...
+&lt;/div&gt;</em>
+
+<ul>
+<li>The div element will be created automatically for h1
+elements that are direct children of the body element.</li>
+</ul>
+
+</li>
+
+<li>Use regular markup within each slide</li>
+
+<li>The document head includes two links:
+<ul>
+<li>The slide show style sheet:
+<a href=
+"http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css">http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css</a></li>
+
+<li>The slide show script: <a href=
+"http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js">http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js</a></li>
+
+<li>Or you can link to the compressed version of the script which is about
+one seventh the size, see <a href=
+"http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js.gz">http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js.gz</a></li>
+<li>If you are using XHTML, remember to use &lt;/script&gt; and
+&lt;/style&gt; as per <a
+href="http://www.w3.org/TR/xhtml1/#C_3">Appendix C.3</a></li>
+</ul>
+</li>
+</ul>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"&gt;
+&lt;head&gt;
+ &lt;title&gt;Slide Shows in XHTML&lt;/title&gt;
+ &lt;meta name="copyright"
+ content="Copyright &amp;#169; 2005 your copyright notice" /&gt;
+ &lt;link rel="stylesheet" type="text/css" media="screen, projection, print"
+ href="http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css" /&gt;
+ &lt;script src="http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js"
+ charset="utf-8" type="text/javascript"&gt;&lt;/script&gt;
+ &lt;style type="text/css"&gt;
+ &lt;!-- your custom style rules --&gt;
+ &lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+ ... your slides marked up in XHTML ...
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>To get the W3C Blue Style</h1>
+
+<p>The head element should include the following link to the style
+sheet:</p>
+
+<pre>
+&lt;link rel="stylesheet" type="text/css" media="screen, projection, print"
+ href="http://www.w3.org/Talks/Tools/Slidy2/styles/w3c-blue.css" /&gt;
+</pre>
+
+<p>The body element's content should start with the following
+markup:</p>
+
+<pre>
+&lt;div class="background"&gt;
+ &lt;img id="head-icon" alt="graphic with four colored squares"
+ src="http://www.w3.org/Talks/Tools/Slidy2/graphics/icon-blue.png" /&gt;
+ &lt;object id="head-logo" title="W3C logo" type="image/svg+xml"
+ data="http://www.w3.org/Talks/Tools/Slidy2/graphics/w3c-logo-white.svg"&gt;&lt;img
+ src="http://www.w3.org/Talks/Tools/Slidy2/graphics/w3c-logo-white.gif"
+ alt="W3C logo" id="head-logo-fallback" /&gt;&lt;/object&gt;
+&lt;/div&gt;
+</pre>
+
+<p>This adds the logos on the top left and right corners of the
+slide.</p>
+
+<p>You are of course welcome to create your own slide designs.
+You can provide different styles and backgrounds for
+different slides (more details later).</p>
+
+<p>Use the <em>meta element</em> with <em>name="copyright"</em>
+for use in the slide show footer:</p>
+
+<pre>
+&lt;meta name="copyright"
+content="Copyright &amp;#169; 2005-2009 W3C (MIT, ERCIM, Keio)" /&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>Upgrading from previous versions of Slidy</h1>
+
+<ul>
+<li>This uses a new version of the HTML Slidy script</li>
+<li>It is designed to work better with other scripts,
+e.g. for UI controls within your slides
+<ul>
+<li>Only adds one global name "w3c_slidy"</li>
+<li>Doesn't interfere with other scripts that set event handers
+such as onload on body element</li>
+</ul>
+</li>
+<li>Works for slides delivered as text/html and application/xhtml+xml</li>
+<li>New presentation timer feature</li>
+<li>Initial prompt on first slide to help newcomers to Slidy</li>
+<li>Better support for styling slides and printing them</li>
+<li>Requires additional style rules, so new script won't work
+with old presentations without changes to their style sheets
+<ul>
+<li>See <a href="styles/slidy.css">slidy.css</a>, and
+<a href="styles/w3c-blue.css">w3c-blue.css</a></li>
+</ul>
+</li>
+<li>But old presentations will work unchanged as they refer to
+the old script!</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>To use it off-line</h1>
+
+<ul>
+<li>You can download <a href="slidy.zip">slidy.zip</a> and unzip
+it to create a Slidy directory on your machine</li>
+
+<li>If you have cvs access to the W3C site you can check out the Slidy
+directory</li>
+
+<li>Remember to periodically check for updates</li>
+
+<li>You then have two choices:
+
+<ol>
+<li>Use relative URIs depending on your local setup to access the
+appropriate files. Use the same directory structure as on the W3C
+server, ie, ".../2005/Talks/...".</li>
+
+<li>Run a Web server on your machine so that the directory above
+can be accessed via <code>http://localhost/Talks/Tools/Slidy2</code>
+and use the URIs of the form "/Talks/Tools/Slidy2/styles/slidy.css",
+"/Talks/Tools/Slidy2/scripts/slidy.js".</li>
+</ol></li>
+
+<li>In both cases you can then publish your files on the W3C server
+unchanged.</li>
+
+<li><strong>NOTE</strong> Internet Explorer on Windows XP now disables
+scripting for web pages loaded directly from the local file system,
+a work around is to use another browser, e.g. Firefox or Opera</li>
+
+<li>Please feel free to create your own designs, and help us to build
+a gallery of Slidy styles.</li>
+
+<li>My <a href="/2006/02/woa/">Google TechTalk</a> (1st Feb 2006)
+uses a notebook themed style</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>Timing Your Presentation</h1>
+
+<ul>
+<li>Sometimes it is handy to know just how much time you have to
+left to finish your presentation</li>
+<li>To get this feature, add the following markup to the
+content of the head element, replacing 5 by the duration
+of your presentation in minutes
+<pre>&lt;meta name="duration" content="5" /&gt;</pre>
+</li>
+<li>The time left in minutes and seconds is shown in the footer
+next to the slide number</li>
+<li>The clock starts to run when you move away from the first slide</li>
+<li>Moving back to the first slide pauses the clock</li>
+</ul>
+
+
+</div>
+
+<div class="slide slanty">
+<h1>Generate a Title Page</h1>
+
+<p>If you want a separate title page with the W3C blue style, the
+first slide should be as follows:</p>
+
+<pre>
+&lt;div class="slide cover"&gt;
+ &lt;img src="http://www.w3.org/Talks/Tools/Slidy2/graphics/keys.jpg"
+ alt="Cover page images (keys)" class="cover" /&gt;
+ &lt;br clear="all" /&gt;
+ &lt;h1&gt;HTML Slidy: Slide Shows in XHTML&lt;/h1&gt;
+ &lt;p&gt;&lt;a href="http://www.w3.org/People/Raggett/"&gt;Dave Raggett,&lt;/a&gt;
+ &lt;a href="mailto:dsr@w3.org"&gt;dsr@w3.org&lt;/a&gt;&lt;/p&gt;
+&lt;/div&gt;
+</pre>
+
+<p>The <a
+href="http://www.w3.org/Talks/Tools/Slidy2/graphics/w3c-blue.css">w3c-blue.css</a>
+style sheet looks for the classes "slide" and "cover" on div
+and img elements using the CSS selector <em>div.slide.cover</em></p>
+
+<p>This technique can be used to assign your slides to different
+classes with a different appearence for each such class.</p>
+
+<p>Slidy also allows you to use different background markup for
+different slides, based upon shared class names, as in "foo" below.
+Backgrounds without additional class names are always shown except
+when the slide isn't transparent. You may need to tweak your
+custom style sheet.</p>
+
+<pre>
+&lt;div class="background foo"&gt;
+ ... background content ...
+&lt;div&gt;
+
+...
+
+&lt;div class="slide foo"&gt;
+ ... slide content ...
+&lt;div&gt;
+</pre>
+</div>
+
+<div class="slide">
+<h1>Incremental display of slide contents</h1>
+
+<p>For incremental display, use class="incremental", for
+instance:</p>
+
+<ul class="incremental">
+<li>First bullet point</li>
+
+<li>Second bullet point</li>
+
+<li>Third bullet point</li>
+</ul>
+
+<p class="incremental">which is marked up as follows:</p>
+
+<pre class="incremental">
+&lt;ul class="incremental"&gt;
+ &lt;li&gt;First bullet point&lt;/li&gt;
+ &lt;li&gt;Second bullet point&lt;/li&gt;
+ &lt;li&gt;Third bullet point&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p class="incremental"&gt;which is marked up as follows:&lt;/p&gt;
+
+&lt;pre class="incremental"&gt;
+ ...
+&lt;/pre&gt;
+</pre>
+
+<div class="footnote">
+<p>An element is incrementally revealed if its parent element has
+class="incremental" or if itself has that attribute. Text nodes are
+not elements and are revealed when their parent element is revealed.
+You can use class="incremental" on any element except for &lt;br /&gt;.
+Use class="non-incremental" to override the effect of setting the
+parent element's class to incremental.</p>
+
+<p>Note: you will see a red asterisk on the left of the toolbar
+when there is still something more to reveal.</p>
+</div>
+</div>
+
+<div class="slide">
+<h1>Create outline lists with hidden content</h1>
+
+<p>You can make your bullet points or numbered list items
+into outlines that you can expand or collapse</p>
+
+<ul class="outline">
+<li>Just add <em>class="outline"</em> to the ul or ol
+element. Click on this list item for more details.
+
+<ul>
+<li>The Slidy script will then treat the list
+as an outline list.</li>
+<li>Clicking on outline list items will expand/collapse
+block-level elements within that list item.</li>
+<li>Click on the above to make this list item
+collapse again.</li>
+</ul>
+</li>
+<li>Users will then see expand/collapse icons as appropriate
+and may click anywhere on the list item to change its state.
+This particular list item can't be expanded or collapsed.</li>
+<li class="expand">Add class="expand" to any li elements that
+you want to start in an expanded state.
+
+<ul>
+<li>By default Slidy hides all the block level elements within the
+outline list items unless you have specified class="expand".</li>
+<li>Such pre-expanded items can be collapsed by clicking on them.</li>
+</ul>
+</li>
+<li>Note expand/collapse icon highlighting requires browser
+support for :hover which isn't supported by IE6.
+
+<ul>
+<li>Microsoft says it will be supported by IE7 along with
+many fixes for other CSS woes in IE6.</li>
+</ul>
+</li>
+</ul>
+
+<pre>
+&lt;ol class='outline'&gt;
+ &lt;!-- topic 1 starts collapsed --&gt;
+ &lt;li&gt;Topic 1
+ &lt;ol&gt;
+ &lt;li&gt;subtopic a&lt;/li&gt;
+ &lt;li&gt;subtopic b&lt;/li&gt;
+ &lt;/ol&gt;
+ &lt;/li&gt;
+ &lt;!-- topic 2 starts expanded --&gt;
+ &lt;li class="expand"&gt;Topic 2
+ &lt;ol&gt;
+ &lt;li&gt;subtopic c&lt;/li&gt;
+ &lt;li&gt;subtopic d&lt;/li&gt;
+ &lt;/ol&gt;
+ &lt;/li&gt;
+&lt;/ol&gt;
+</pre>
+</div>
+
+<!-- useful info at http://www.howtocreate.co.uk/wrongWithIE/ -->
+<div class="slide">
+<h1>Make your images scale with the browser window size</h1>
+
+<p>For adaptive layout, use percentage widths on images, together
+with CSS positioning:</p>
+
+<ul>
+<li>CSS positioning is simpler and more reliable than using
+tables</li>
+</ul>
+
+<pre>
+&lt;div class="slide"&gt;
+ &lt;h1&gt;Analysts - "Open standards programming will become
+ mainstream, focused around VoiceXML"&lt;/h1&gt;
+ &lt;!-- use CSS positioning and scaling for adaptive layout --&gt;
+ &lt;img src="trends.png" width="50%" style="float:left"
+ alt="projected growth of VoiceXML" /&gt;
+
+ &lt;blockquote style="float:right;width: 35%"&gt;
+ VoiceXML will dominate the voice environment, due to its
+ flexibility and eventual multimodal capabilities
+ &lt;/blockquote&gt;&lt;br clear="all" /&gt;
+
+ &lt;p style="text-align:center"&gt;Source Data Monitor, March
+ 2004&lt;/p&gt;
+&lt;/div&gt;
+</pre>
+
+<p>To work around a CSS rendering bug in IE relating
+to margins, you can set display:inline on floated elements.</p>
+</div>
+
+<div class="slide">
+<h1>Incremental display of layered images</h1>
+
+<p>These can be marked up using CSS relative positioning, e.g.</p>
+
+<pre>
+&lt;div class="incremental"
+ style="margin-left: 4em; position: relative"&gt;
+ &lt;img src="graphics/face1.gif" alt="face"
+ style="position: static; vertical-align: bottom"/&gt;
+ &lt;img src="graphics/face2.gif" alt="eyes"
+ style="position: absolute; left: 0; top: 0" /&gt;
+ &lt;img src="graphics/face3.gif" alt="nose"
+ style="position: absolute; left: 0; top: 0" /&gt;
+ &lt;img src="graphics/face4.gif" alt="mouth"
+ style="position: absolute; left: 0; top: 0" /&gt;
+&lt;/div&gt;
+</pre>
+
+<p style="font-size: smaller;">You should also use transparent GIF
+images to avoid the IE/Win bug for alpha channel in PNG. A fix is
+expected in IE 7. A <a href=
+"http://www.skyzyx.com/scripts/sleight.php">work around</a> is
+available on skyzyx.com. My thanks to <a href=
+"http://www.webstandards.org/act/acid2/">ACID2</a> for the
+graphics.</p>
+
+<div class="incremental" style=
+"margin-left: 4em; position: relative;"><img src="graphics/face1.gif" alt=
+"face" style="position: static; vertical-align: bottom;" />
+<img src="graphics/face2.gif" alt="eyes" style=
+"position: absolute; left: 0pt; top: 0pt;" /> <img src="graphics/face3.gif"
+alt="nose" style="position: absolute; left: 0pt; top: 0pt;" />
+<img src="graphics/face4.gif" alt="mouth" style=
+"position: absolute; left: 0pt; top: 0pt;" /></div>
+</div>
+
+<div class="slide">
+<h1>How to center content vertically and horizontally</h1>
+<div class="vbox"></div>
+<div class="hbox">
+<p>Within the div element for your slide:</p>
+<pre>
+&lt;div class="vbox"&gt;&lt;/div&gt;
+&lt;div class="hbox"&gt;
+Place the content here
+&lt;/div&gt;
+</pre>
+<p>and style it with the following:</p>
+<pre>
+div.vbox {
+ float: left;
+ height: 40%; width: 50%;
+ margin-top: -220px;
+}
+div.hbox {
+ width:60%; margin-top: 0;
+ margin-left:auto; margin-right:auto;
+ height: 60%;
+ border:1px solid silver;
+ background:#F0F0F0;
+ overflow:auto;
+ text-align:left;
+ clear:both;
+}
+</pre>
+
+<p>The above styling is included in <a href="styles/w3c-blue.css">w3c-blue.css</a>,
+which is designed to be used with <a href="styles/slidy.css">slidy.css</a>, but you
+are encouraged to develop your own style sheet with your own look and feel.</p>
+</div>
+</div>
+
+<div class="slide">
+<h1>Include SVG Content</h1>
+
+<p>Inclusion of SVG content can be done using the object element,
+for example:</p>
+
+<div style="text-align: center;"><object data="graphics/example.svg" type=
+"image/svg+xml" title="Indian Office logo" height="10%" width=
+"50%"><img src="graphics/example.png" alt="Indian Office logo" width=
+"50%" /></object></div>
+
+<p>has been achieved by:</p>
+
+<pre>
+&lt;object data="graphics/example.svg" type="image/svg+xml"
+ width="50%" height="10%" title="Indian Office logo"&gt;
+ &lt;img src="graphics/example.png" width="50%"
+ alt="Indian Office logo" /&gt;
+&lt;/object&gt;
+</pre>
+
+<p>This ensures that the enclosed png is displayed when the browser
+has no plugin installed or can't display SVG directly. Providing
+such a fall back is very important! Don't forget the alt text for
+people who can't see the image.</p>
+
+<p>However, there are caveats, see the next slide!</p>
+</div>
+
+<div class="slide">
+<h1>Caveats with SVG+object</h1>
+
+<p>Adobe has recently withdrawn support for its SVG Viewer, so you are
+recommended to consider <a
+href="http://wiki.svg.org/Viewer_Implementations">alternatives</a>.
+If you still using the Adobe SVG viewer you should be aware of bugs
+when using the it with IE, Namely:</p>
+
+<ul>
+<li>Most modern browsers generally support SVG SVG Tiny 1.1 or better
+natively without the need for a plugin</li>
+
+<li>If you need to use Internet Explorer you are advised to upgrade
+to IE9 which includes native support for SVG.</li>
+
+<li>Patches to Internet Explorer mean that the Adobe SVG Viewer
+version 3.03 no longer works with IE6. You are therefore recommended
+to uninstall version 3.03 and instead install <a
+href="http://www.adobe.com/svg/viewer/install/beta.html">Adobe SVG Viewer
+6.0 preview</a> if this is available to to you.</li>
+
+<li>IE6 makes a <em>copy</em> of the SVG file on the local disc
+when displaying it; but doesn't pass the original URI to the plugin</li>
+
+<li>As a result relative references from within the SVG to external
+resources (scripts, CSS, images, other SVG) will break.</li>
+
+<li>The work around is to use absolute references within your SVG.</li>
+
+<li>On Windows, the Adobe SVG plugin doesn't respect the CSS z-index
+property, and if used on backgrounds will always show through other
+content</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>Additional Remarks</h1>
+
+<ul>
+<li>Slides are auto-numbered on the slide show footer</li>
+
+<li>You can link into the <a href="#(2)">middle</a> of a slide
+show:
+
+<ul>
+<li>It works out which slide you want and hides the rest</li>
+
+<li>You can even link between slides in the same slide show</li>
+
+<li>Individual sides can be addressed with the syntax #(<em>slide
+number</em>),<br />
+e.g. slide 3 of this presentation is: <a href=
+"#(3)">http://www.w3.org/Talks/Tools/Slidy#(3)</a>
+<ul>
+<li>Previous versions of Slidy used square brackets, which will
+also work.</li>
+</ul></li>
+<li>Note that the browser's back/forward buttons may not work as
+you might expect due to browser problems.</li>
+</ul>
+</li>
+
+<li>Adding "title" to the list of classes for div elements that serve
+as title pages will render the corresponding entry in the table of
+contents in bold italic text (press "C" now for an example)</li>
+
+<li>If your slides have more content than normal, use a <em>meta
+element</em> to request a smaller font
+
+<ul>
+<li>the following requests fonts to be one step smaller than
+the Slidy default for the current window width, and positive
+integers will make the fonts correspondingly larger</li>
+</ul>
+
+<pre>
+&lt;meta name="font-size-adjustment" content="-1" /&gt;
+</pre>
+
+<ul>
+<li>Slidy uses JavaScript to dynamically set the font size on the
+body element, but it is okay to specify relative font changes on
+other elements within your own style sheet, e.g.</li>
+</ul>
+<pre>div.slide.large { font-size: 200% }</pre>
+</li>
+
+<li>You are encouraged to ensure your markup is valid. <a href=
+"http://www.w3.org/People/Raggett/tidy/">HTML Tidy</a> can be used
+to find and correct common markup problems</li>
+
+<li>The slide show script and style sheet can be used freely under
+W3C's <a href=
+"http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> and <a href=
+"http://www.w3.org/Consortium/Legal/copyright-documents">document
+use</a> policies</li>
+<li>At <a href="http://xtech06.usefulinc.com/">XTech2006</a>
+I gave this <a href="http://www.w3.org/2006/05/Slidy-XTech/">presentation</a>
+on Slidy
+(<a href="http://www.w3.org/2006/05/Slidy-XTech/slidy-xtech06-dsr.pdf">Paper</a>).</li>
+</ul>
+</div>
+
+<div class="slide">
+<h1>Localization and automatic translation</h1>
+
+<p>Slidy now includes support for localization</p>
+
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+
+<ul>
+<li>The tool bar is localized according to the language of the presentation</li>
+<li>This is taken from the xml:lang or lang attributes on the html element</li>
+<li>The <a href="http://www.w3.org/Talks/Tools/Slidy2/help/help.html">help file</a> is
+selected based upon your browser's language preferences</li>
+<li>As of 29th July 2010, the languages supported are: English,
+Spanish, Catalonian, Czech, Dutch, German, Polish, French,
+Hungarian, Italian, Greek, Japanese, Chinese, Russian and
+Swedish</li>
+<li>If you would like to contribute localizations for other languages,
+please get in touch with Dave Raggett &lt;dsr@w3.org&gt;</li>
+<li>The following illustrates what was used for Spanish</li>
+</ul>
+<pre>
+// for each language there is an associative array
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Ãndice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+</pre>
+
+<p><strong>Note:</strong> Slidy now works with <a
+href="http://translate.google.com/translate?js=n&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;u=http%3A%2F%2Fwww.w3.org%2FTalks%2FTools%2FSlidy2%2F&amp;sl=en&amp;tl=fr&amp;history_state0=">current slides translated into French</a>. Use
+right mouse button to open frame without Google header. To disable
+automatic translation of the content of particular elements add
+<code>class="notranslate"</code>, see <a href="http://googlewebmastercentral.blogspot.com/2008/10/helping-you-break-language-barrier.html">breaking the language barrier</a>.</p>
+</div>
+
+<div class="slide">
+<h1>Future Plans</h1>
+
+<p>Recent additions have included a table of contents, and a way to
+hide and reveal content in the spirit of outline lists. The
+script has been rewritten to make it easier to combine with other
+scripts, e.g. for UI controls, and support swipes for navigation on
+touch screen devices. Further work is anticipated on the
+following:</p>
+
+<ul>
+<li>Collecting a gallery of good looking slide themes
+<ul>
+<li>Opportunities for graphics designers!</li>
+</ul>
+</li>
+<li>Bob Ferris has worked on <a
+href="https://github.com/zazi/slidy_tud/blob/master/README.md">a
+number of UI extensions</a> which could be incorporated into the
+W3C slidy script.</li>
+<li>Getting SVG Tiny to work on IE without need for SVG plugin
+<ul>
+<li>Using scripts to dynamically convert SVG Tiny to VML</li>
+<li>Note that IE9 introduces native SVG support, so it may
+no longer be worth working on SVG to VML for rendering of SVG</li>
+</ul>
+</li>
+<li>Pre-alpha version of wysiwyg slide editor (see <a
+href="editor/editor-screenshot1.png">screenshot</a>)
+<ul>
+<li>Using contentEditable when available, otherwise
+falling back to textarea and plain text conventions</li>
+<li>Using XMLHttpRequest to dynamically reflect changes to server</li>
+</ul>
+</li>
+<li>Mechanism for remotely driving Slidy as part of distributed meetings
+<ul>
+<li>Using XMLHttpRequest to listen for navigation commands</li>
+<li>Using VoIP for accompanying audio and teleconferencing</li>
+<li>Synchronizing recorded spoken presentation with currently viewed slide</li>
+</ul>
+</li>
+<li>Filters from PowerPoint and Open Office
+<ul>
+<li>and export to PDF via <a href="http://www.princexml.com/">PrinceXML</a></li>
+</ul>
+</li>
+</ul>
+
+<p>If you have comments, suggestions for improvements, or would
+like to volunteer your help with further work on Slidy,
+please contact <a href=
+"http://www.w3.org/People/Raggett/">Dave Raggett</a> &lt;<a href=
+"mailto:dsr@w3.org">dsr@w3.org</a>&gt;</p>
+</div>
+
+<div class="slide">
+<h1>Acknowledgements</h1>
+
+<ul>
+<li>My thanks to everyone who sent in bug reports and feature
+requests</li>
+<li>Opera Software for implementing CSS @media projection and
+promoting the idea of using the Web for presentations with
+<a href="http://www.opera.com/support/tutorials/operashow/">Opera
+Show</a></li>
+<li><a href="http://tantek.com/">Tantek &Ccedil;elik</a> for his
+pioneering work on applying JavaScript for slide presentations on
+other browsers</li>
+<li>Eric Meyer for taking this further with the excellent <a
+href="http://www.meyerweb.com/eric/tools/s5/s5-intro.html">S5</a></li>
+<li>W3C's <a href="http://dev.w3.org/cvsweb/slidemaker/">slidemaker
+tool</a>, which uses a perl script to split an html file up into
+one file per slide with navigation buttons</li>
+<li>Early versions of <a href="http://www.w3.org/People/Raggett/tidy/">HTML
+Tidy</a> which supported a means to create presentations via splitting
+html files on h2 elements</li>
+<li>Many sites with advice on JavaScript work arounds for browser
+variations</li>
+<li>Microsoft for pioneering contentEditable and XMLHTTP which
+both provide tremendous opportunities for Web applications</li>
+<li>Microsoft Office which provided the impetus for creating
+Slidy as a Web-based alternative to the ubiquitous use of PowerPoint</li>
+</ul>
+
+<p class="smaller"><strong>Note</strong> that while Slidy and
+S5 were developed independently, both support the use of the
+class values "slide" and "handout" for div elements. Slidy doesn't
+support the "layout" class featured in S5 and Opera Show, but
+instead provides a more flexible alternative with the "background"
+class, which enables different backgrounds on different slides.</p>
+</div>
+
+<div class="slide">
+<h1>Acknowledgements</h1>
+
+<p>The following people have contributed localizations:</p>
+
+<ul>
+<li>Emmanuelle Gutiérrez y Restrepo, Spanish</li>
+<li>Joan V. Baz, Catalan</li>
+<li>Jakub Vrána, Czech</li>
+<li>Ruud Steltenpool, Dutch</li>
+<li>Beat Vontobel, German</li>
+<li>Krzysztof Kotowicz, Polish</li>
+<li>Tamas Horvath, Hungarian</li>
+<li>Creso Moraes, Brazilian Portuguese</li>
+<li>Giuseppe Scollo, Italian</li>
+<li>Konstantinos Koukopoulos, Greek</li>
+<li>Yoshikazu Sawa (澤 義和), Japanese</li>
+<li>Shelley Shyan, Chinese</li>
+<li>Andrew Pantyukhin, Russian</li>
+<li>Saasha Metsärantala, Swedish</li>
+</ul>
+
+<p>The following people have contributed bug reports:</p>
+
+<ul>
+<li>Ivan Herman</li>
+<li>Steve Bratt</li>
+<li>Peter Patel-Schneider</li>
+<li>Matthew Coller</li>
+<li>Rune Heggtveit</li>
+<li>Gopal Venkatesan</li>
+<li>Cay Horstmann</li>
+<li>Schuyler Duveen</li>
+<li>Matteo Nannini</li>
+<li>Ralph Swick</li>
+<li>Jakub Vrána</li>
+<li>Philip Bolt</li>
+<li>Jon Frost</li>
+<li>Jonathan Chetwynd</li>
+<li>Nicolas Frisby</li>
+</ul>
+
+<p>Douglas Crockford for <a
+href="http://www.crockford.com/javascript/jsmin.html">jsmin</a>
+which was used to minify the script before compressing it with gzip.</p>
+</div>
+</body>
+</html>
diff --git a/slides/slidy/blank.html b/slides/slidy/blank.html
new file mode 100755
index 0000000..c9081eb
--- /dev/null
+++ b/slides/slidy/blank.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-US">
+<head>
+<meta name="generator" content=
+"HTML Tidy for Linux/x86 (vers 1st November 2003), see www.w3.org" />
+<title>HTML Slidy - template for basic presentations</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content=
+"Copyright &#169; 2005-2010 W3C (MIT, ERCIM, Keio)" />
+<meta name="duration" content="20" />
+<link rel="stylesheet" href="http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css" type="text/css" />
+<script src="http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js" charset="utf-8" type="text/javascript">
+</script>
+</head>
+<body>
+<div class="slide">
+<h1>Sample heading</h1>
+
+<p>This is a template file you can copy and edit on your own server.</p>
+
+<ul>
+<li>point 1</li>
+<li>point 2</li>
+<li>. . .</li>
+</ul>
+</div>
+</body>
+</html>
diff --git a/slides/slidy/graphics/bullet-fold-dim.gif b/slides/slidy/graphics/bullet-fold-dim.gif
new file mode 100755
index 0000000..bce1a2a
--- /dev/null
+++ b/slides/slidy/graphics/bullet-fold-dim.gif
Binary files differ
diff --git a/slides/slidy/graphics/bullet-fold-dim.png b/slides/slidy/graphics/bullet-fold-dim.png
new file mode 100755
index 0000000..4e28cfa
--- /dev/null
+++ b/slides/slidy/graphics/bullet-fold-dim.png
Binary files differ
diff --git a/slides/slidy/graphics/bullet-fold.gif b/slides/slidy/graphics/bullet-fold.gif
new file mode 100755
index 0000000..d4b063c
--- /dev/null
+++ b/slides/slidy/graphics/bullet-fold.gif
Binary files differ
diff --git a/slides/slidy/graphics/bullet-fold.png b/slides/slidy/graphics/bullet-fold.png
new file mode 100755
index 0000000..b5334f3
--- /dev/null
+++ b/slides/slidy/graphics/bullet-fold.png
Binary files differ
diff --git a/slides/slidy/graphics/bullet-nofold-dim.gif b/slides/slidy/graphics/bullet-nofold-dim.gif
new file mode 100755
index 0000000..98a4c39
--- /dev/null
+++ b/slides/slidy/graphics/bullet-nofold-dim.gif
Binary files differ
diff --git a/slides/slidy/graphics/bullet-nofold-dim.png b/slides/slidy/graphics/bullet-nofold-dim.png
new file mode 100755
index 0000000..27bccb2
--- /dev/null
+++ b/slides/slidy/graphics/bullet-nofold-dim.png
Binary files differ
diff --git a/slides/slidy/graphics/bullet-nofold.gif b/slides/slidy/graphics/bullet-nofold.gif
new file mode 100755
index 0000000..76102a3
--- /dev/null
+++ b/slides/slidy/graphics/bullet-nofold.gif
Binary files differ
diff --git a/slides/slidy/graphics/bullet-nofold.png b/slides/slidy/graphics/bullet-nofold.png
new file mode 100755
index 0000000..28215ec
--- /dev/null
+++ b/slides/slidy/graphics/bullet-nofold.png
Binary files differ
diff --git a/slides/slidy/graphics/bullet-unfold-dim.gif b/slides/slidy/graphics/bullet-unfold-dim.gif
new file mode 100755
index 0000000..b758cbe
--- /dev/null
+++ b/slides/slidy/graphics/bullet-unfold-dim.gif
Binary files differ
diff --git a/slides/slidy/graphics/bullet-unfold-dim.png b/slides/slidy/graphics/bullet-unfold-dim.png
new file mode 100755
index 0000000..1dec59d
--- /dev/null
+++ b/slides/slidy/graphics/bullet-unfold-dim.png
Binary files differ
diff --git a/slides/slidy/graphics/bullet-unfold.gif b/slides/slidy/graphics/bullet-unfold.gif
new file mode 100755
index 0000000..e5ecd5b
--- /dev/null
+++ b/slides/slidy/graphics/bullet-unfold.gif
Binary files differ
diff --git a/slides/slidy/graphics/bullet-unfold.png b/slides/slidy/graphics/bullet-unfold.png
new file mode 100755
index 0000000..ce9de96
--- /dev/null
+++ b/slides/slidy/graphics/bullet-unfold.png
Binary files differ
diff --git a/slides/slidy/graphics/bullet.png b/slides/slidy/graphics/bullet.png
new file mode 100755
index 0000000..14ebd95
--- /dev/null
+++ b/slides/slidy/graphics/bullet.png
Binary files differ
diff --git a/slides/slidy/graphics/example.png b/slides/slidy/graphics/example.png
new file mode 100755
index 0000000..7ce9b3f
--- /dev/null
+++ b/slides/slidy/graphics/example.png
Binary files differ
diff --git a/slides/slidy/graphics/example.svg b/slides/slidy/graphics/example.svg
new file mode 100755
index 0000000..581358e
--- /dev/null
+++ b/slides/slidy/graphics/example.svg
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 11.0, SVG Export Plug-In -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ viewBox="-0.724 -0.46 279 52" xml:space="preserve">
+ <desc>W3C Indian Office logo</desc>
+ <defs>
+ </defs>
+ <g>
+ <rect x="107.669" y="15.986" style="fill:#0C479D" width="163.338" height="13.73"/>
+ <path style="fill:#FFFFFF" d="M117.042,25.062c-0.6,0.853-1.279,1.812-2.692,1.812c-0.879,0-1.985-0.574-1.985-2.052
+ c0-2.039,1.919-4.277,3.758-4.277c1.053,0,1.532,0.586,1.532,1.172c0,0.6-0.333,0.96-0.839,0.96c-0.36,0-0.759-0.239-0.759-0.693
+ c0-0.372,0.28-0.586,0.28-0.772c0-0.174-0.187-0.227-0.307-0.227c-1.16,0-1.959,2.799-1.959,3.745
+ c0,1.065,0.587,1.293,0.973,1.293c0.6,0,1.093-0.428,1.626-1.201L117.042,25.062z"/>
+ <path style="fill:#FFFFFF" d="M134.227,22.596c0,1.985-1.652,4.278-3.784,4.278c-1.093,0-2.132-0.705-2.132-1.986
+ c0-2.053,1.719-4.344,3.825-4.344C132.641,20.544,134.227,20.81,134.227,22.596z M129.896,25.554c0,0.268,0,0.934,0.693,0.934
+ c1.279,0,2.052-3.705,2.052-4.705c0-0.666-0.293-0.852-0.64-0.852C130.562,20.931,129.896,24.702,129.896,25.554z"/>
+ <path style="fill:#FFFFFF" d="M151.587,25.076c-0.426,0.718-1.053,1.746-2.092,1.746c-0.213,0-0.934,0-0.934-0.867
+ c0-0.946,1.174-3.864,1.174-4.157c0-0.161-0.16-0.294-0.334-0.294c-0.333,0-1.679,0.666-2.852,5.197h-1.612
+ c0.679-2.544,1.359-4.744,1.359-5.077c0-0.347-0.36-0.347-0.72-0.347v-0.36c0.293,0,1.612-0.119,2.665-0.359l-0.8,2.479
+ l0.04,0.027c0.96-1.412,1.679-2.519,2.839-2.519c0.32,0,1.013,0.025,1.013,1.052c0,0.866-1.159,3.692-1.159,4.079
+ c0,0.119,0.053,0.24,0.199,0.24c0.268,0,0.574-0.48,0.92-1.013L151.587,25.076z"/>
+ <path style="fill:#FFFFFF" d="M166.562,22.596l-0.36-0.026c-0.106-0.666-0.387-1.586-1.173-1.586c-0.706,0-0.706,0.652-0.706,0.72
+ c0,0.839,1.825,2.013,1.825,3.385c0,1.292-1.146,1.786-1.998,1.786c-0.587,0-0.92-0.266-1.227-0.266
+ c-0.053,0-0.32,0.039-0.387,0.266h-0.359l0.293-2.211l0.36,0.039c0.199,1.772,1.159,1.772,1.278,1.772
+ c0.507,0,0.76-0.398,0.76-0.732c0-0.346-0.319-0.879-0.746-1.373c-0.693-0.799-1.066-1.346-1.066-2.158
+ c0-1.187,0.92-1.666,1.786-1.666c0.666,0,0.826,0.293,1.267,0.293c0.199,0,0.239-0.054,0.373-0.28h0.386L166.562,22.596z"/>
+ <path style="fill:#FFFFFF" d="M183.493,22.596c0,1.985-1.653,4.278-3.785,4.278c-1.093,0-2.132-0.705-2.132-1.986
+ c0-2.053,1.719-4.344,3.824-4.344C181.907,20.544,183.493,20.81,183.493,22.596z M179.161,25.554c0,0.268,0,0.934,0.694,0.934
+ c1.278,0,2.052-3.705,2.052-4.705c0-0.666-0.293-0.852-0.64-0.852C179.828,20.931,179.161,24.702,179.161,25.554z"/>
+ <path style="fill:#FFFFFF" d="M194.643,20.917c1.359-0.119,1.772-0.146,2.665-0.372l-0.746,2.372l0.066,0.026
+ c0.4-0.8,1.188-2.398,2.066-2.398c0.053,0,0.772,0,0.772,0.879c0,0.613-0.373,0.973-0.786,0.973c-0.466,0-0.613-0.506-0.8-0.506
+ c-0.373,0-1.065,1.333-1.359,2.039c-0.347,0.893-0.479,1.532-0.906,2.771h-1.612c0.707-2.398,1.359-4.636,1.359-5.064
+ c0-0.333-0.24-0.346-0.72-0.359V20.917z"/>
+ <path style="fill:#FFFFFF" d="M213.214,21.277h-1.105c-0.44,1.626-1.16,3.958-1.16,4.412c0,0.16,0.187,0.199,0.2,0.199
+ c0.333,0,0.853-0.786,1.026-1.066l0.293,0.187c-0.494,0.774-1.146,1.813-2.187,1.813c-0.959,0-0.959-0.799-0.959-0.893
+ c0-0.547,0.64-2.546,1.227-4.652h-0.681V20.81c0.521-0.199,1.533-0.612,2.439-2.024h0.467l-0.52,1.932h0.959V21.277z"/>
+ <path style="fill:#FFFFFF" d="M226.346,25.008c-0.68,1.04-1.239,1.813-2.226,1.813c-0.773,0-0.92-0.574-0.92-0.893
+ c0-0.586,1.04-3.918,1.04-4.225c0-0.427-0.4-0.439-0.787-0.427v-0.36c0.534-0.039,1.786-0.159,2.692-0.372
+ c-0.52,1.905-1.333,4.717-1.333,5.144c0,0.133,0.121,0.199,0.201,0.199c0.319,0,0.771-0.666,1.039-1.066L226.346,25.008z
+ M225.759,17.585c0.507,0,0.92,0.413,0.92,0.906c0,0.479-0.399,0.88-0.92,0.88c-0.626,0-0.879-0.56-0.879-0.906
+ C224.88,18.145,225.159,17.585,225.759,17.585z"/>
+ <path style="fill:#FFFFFF" d="M243.436,25.102c-0.254,0.452-0.999,1.719-2.119,1.719c-0.2,0-0.893,0-0.893-0.746
+ c0-0.574,0.16-1.027,0.293-1.427l-0.026-0.013c-1.014,1.413-1.572,2.186-2.586,2.186c-1.025,0-1.025-0.732-1.025-1.039
+ c0-0.92,0.999-3.345,0.999-4.119c0-0.347-0.293-0.36-0.746-0.387v-0.36c1.186-0.053,2.599-0.359,2.785-0.372l-1.253,4.104
+ c-0.16,0.507-0.199,0.654-0.199,0.894c0,0.252,0.133,0.318,0.307,0.318c0.532,0,1.345-1.265,1.519-1.584
+ c0.6-1.08,0.906-2.133,1.319-3.559h1.573c-0.268,0.934-1.374,4.518-1.374,4.944c0,0.227,0.134,0.254,0.2,0.254
+ c0.32,0,0.826-0.8,0.946-0.987L243.436,25.102z"/>
+ <path style="fill:#FFFFFF" d="M254.745,20.917c1.412-0.119,1.745-0.146,2.665-0.359l-0.8,2.479l0.04,0.027
+ c0.772-1.187,1.64-2.519,2.825-2.519c0.066,0,0.879,0,0.879,0.893c0,0.52-0.187,0.973-0.307,1.279l0.014,0.027
+ c0.68-1.08,1.466-2.199,2.559-2.199c0.733,0,1.054,0.466,1.054,1.052c0,0.88-1.187,3.599-1.187,4.118
+ c0,0.16,0.146,0.201,0.227,0.201c0.254,0,0.68-0.667,0.906-1.013l0.293,0.174c-0.413,0.707-1.026,1.746-2.092,1.746
+ c-0.227,0-0.934,0-0.934-0.867c0-0.972,1.173-3.811,1.173-4.13c0-0.16-0.106-0.307-0.319-0.307c-0.561,0-1.266,1.159-1.479,1.546
+ c-0.493,0.853-0.68,1.453-1.346,3.637h-1.6c1.026-3.318,1.466-4.49,1.466-4.864c0-0.253-0.159-0.319-0.253-0.319
+ c-0.093,0-1.572,0.333-2.812,5.183h-1.612c0.759-2.785,1.359-4.636,1.359-5.077c0-0.386-0.521-0.359-0.72-0.347V20.917z"/>
+ <path d="M123.286,1.771h2.012l-4.572,15.43h-0.206l-2.858-9.555l-2.857,9.555h-0.183l-4.572-15.43h2.012l2.743,9.396l1.874-6.332
+ l-0.914-3.063h2.012l2.743,9.396L123.286,1.771z"/>
+ <path d="M189.955,1.453h2.012l-4.572,15.43h-0.206l-2.856-9.555l-2.857,9.555h-0.184l-4.572-15.43h2.013l2.743,9.396l1.874-6.333
+ l-0.914-3.063h2.012l2.742,9.396L189.955,1.453z"/>
+ <path d="M244.878,1.453h2.012l-4.572,15.43h-0.205l-2.858-9.555l-2.857,9.555h-0.183l-4.572-15.43h2.012l2.743,9.396l1.874-6.333
+ l-0.914-3.063h2.012l2.744,9.396L244.878,1.453z"/>
+ <path d="M248.27,3.238h6.096v2.024h-4.048v2.438h4.048v2.048h-4.048v3.658h4.048v2.024h-6.096V3.238z"/>
+ <path d="M257.815,3.238h4.268c1.805,0,3.268,1.463,3.268,3.243c0,0.829-0.268,1.463-0.707,2.024
+ c0.927,0.707,1.512,1.731,1.512,3.072c0,2.122-1.73,3.853-3.853,3.853c-0.22,0-4.487,0-4.487,0V3.238z M259.863,7.701h2.22
+ c0.683,0,1.219-0.537,1.219-1.22c0-0.658-0.536-1.219-1.219-1.219c-0.171,0-2.22,0-2.22,0V7.701z M259.863,13.407h2.439
+ c0.999,0,1.829-0.829,1.829-1.829c0-1.024-0.83-1.829-1.829-1.829c-0.391,0-2.439,0-2.439,0V13.407z"/>
+ <path d="M130.116,3.042c2.756,0,4.268,2.829,4.268,6.292s-1.512,6.291-4.268,6.291c-2.731,0-4.268-2.828-4.268-6.291
+ S127.385,3.042,130.116,3.042z M130.116,13.602c1.17,0,2.122-1.926,2.122-4.267c0-2.341-0.951-4.268-2.122-4.268
+ c-1.146,0-2.122,1.926-2.122,4.268C127.994,11.675,128.97,13.602,130.116,13.602z"/>
+ <path d="M146.575,15.431h-2.487l-2.927-4.072c-0.487,0-1.487,0-1.487,0v4.072h-2.049V3.238h3.878c2.219,0,4.048,1.829,4.048,4.072
+ c0,1.561-0.878,2.926-2.194,3.609L146.575,15.431z M143.526,7.31c0-1.122-0.902-2.048-2.023-2.048c-0.22,0-1.829,0-1.829,0v4.072
+ h1.829C142.624,9.334,143.526,8.407,143.526,7.31z"/>
+ <path d="M151.256,13.407h4.048v2.024h-6.096V3.238h2.048V13.407z"/>
+ <path d="M156.724,3.238h2.853c3.024,0,5.487,2.731,5.487,6.097c0,3.365-2.463,6.096-5.487,6.096c-0.269,0-2.853,0-2.853,0V3.238z
+ M158.771,13.407h0.805c1.78,0,3.243-1.829,3.243-4.072c0-2.244-1.463-4.072-3.243-4.072c-0.316,0-0.805,0-0.805,0V13.407z"/>
+ <path d="M200.331,3.238h2.854c3.023,0,5.487,2.731,5.487,6.097c0,3.365-2.464,6.096-5.487,6.096c-0.269,0-2.854,0-2.854,0V3.238z
+ M202.38,13.407h0.805c1.78,0,3.243-1.829,3.243-4.072c0-2.244-1.463-4.072-3.243-4.072c-0.316,0-0.805,0-0.805,0V13.407z"/>
+ <path d="M211.913,3.238h6.097v2.024h-4.048v2.438h4.048v2.048h-4.048v3.658h4.048v2.024h-6.097V3.238z"/>
+ <rect x="194.518" y="3.188" width="1.786" height="12.203"/>
+ <path style="fill-rule:evenodd;clip-rule:evenodd" d="M274.845,25.169c-0.659,0-1.251,0.238-1.699,0.693c-0.477,0.482-0.741,1.109-0.741,1.754
+ c0,0.646,0.252,1.244,0.714,1.713c0.469,0.477,1.074,0.734,1.727,0.734c0.639,0,1.258-0.258,1.74-0.729
+ c0.463-0.447,0.714-1.045,0.714-1.719c0-0.652-0.259-1.264-0.707-1.719C276.122,25.42,275.511,25.169,274.845,25.169z
+ M276.973,27.638c0,0.564-0.218,1.086-0.619,1.475c-0.421,0.408-0.944,0.625-1.522,0.625c-0.544,0-1.081-0.225-1.481-0.633
+ c-0.401-0.408-0.626-0.932-0.626-1.488s0.231-1.102,0.646-1.521c0.389-0.395,0.911-0.606,1.482-0.606
+ c0.585,0,1.107,0.217,1.517,0.633C276.762,26.515,276.973,27.046,276.973,27.638z M274.913,26.183h-1.047v2.773h0.522v-1.184
+ h0.518l0.563,1.184h0.585l-0.618-1.264c0.4-0.082,0.632-0.355,0.632-0.75C276.068,26.44,275.688,26.183,274.913,26.183z
+ M274.817,26.522c0.49,0,0.713,0.135,0.713,0.475c0,0.326-0.223,0.443-0.699,0.443h-0.442v-0.918H274.817z"/>
+ <path d="M93.451,0l1.056,6.42l-3.738,7.152c0,0-1.436-3.034-3.82-4.714c-2.009-1.416-3.318-1.723-5.364-1.301
+ c-2.628,0.542-5.608,3.685-6.908,7.559c-1.556,4.636-1.571,6.879-1.625,8.94c-0.087,3.304,0.434,5.256,0.434,5.256
+ s-2.27-4.199-2.249-10.349c0.015-4.389,0.704-8.371,2.736-12.299c1.787-3.454,4.443-5.526,6.8-5.77
+ c2.437-0.252,4.363,0.923,5.852,2.194c1.562,1.334,3.143,4.253,3.143,4.253L93.451,0z"/>
+ <path d="M93.911,36.329c0,0-1.653,2.953-2.682,4.091c-1.03,1.138-2.872,3.143-5.147,4.146c-2.275,1.001-3.468,1.191-5.716,0.975
+ c-2.246-0.216-4.334-1.517-5.066-2.06c-0.731-0.541-2.601-2.14-3.657-3.629c-1.057-1.49-2.709-4.471-2.709-4.471
+ s0.921,2.986,1.497,4.254c0.332,0.729,1.351,2.96,2.797,4.902c1.349,1.813,3.969,4.932,7.951,5.635
+ c3.982,0.705,6.719-1.083,7.396-1.517c0.677-0.433,2.104-1.628,3.007-2.594c0.943-1.009,1.835-2.296,2.33-3.067
+ c0.361-0.564,0.948-1.707,0.948-1.707L93.911,36.329z"/>
+ <path style="fill:#0C479D" d="M25.146,0.284l9.003,30.611l9.003-30.611h6.519L34.771,50.576h-0.621l-9.313-31.168l-9.314,31.168h-0.621
+ L0,0.284h6.519l9.003,30.611l6.085-20.614l-2.98-9.997H25.146z"/>
+ <path style="fill:#0C479D" d="M68.184,34.434c0,4.554-1.211,8.383-3.632,11.487c-2.422,3.104-5.558,4.655-9.407,4.655
+ c-2.898,0-5.423-0.921-7.576-2.763c-2.152-1.842-3.746-4.335-4.781-7.481l5.091-2.11c0.746,1.904,1.729,3.405,2.95,4.501
+ c1.221,1.097,2.659,1.645,4.315,1.645c1.738,0,3.208-0.972,4.409-2.917s1.801-4.284,1.801-7.017c0-3.022-0.642-5.36-1.925-7.017
+ c-1.491-1.945-3.83-2.918-7.017-2.918h-2.483v-2.98l8.693-15.026H48.128l-2.918,4.967h-1.862V0.284h24.215v3.042l-9.19,15.833
+ c3.229,1.036,5.671,2.919,7.326,5.652C67.354,27.542,68.184,30.749,68.184,34.434z"/>
+ <g>
+ <g>
+ <g>
+ <path d="M135.359,42.137h-4.523v1.736c0.018,0.145,0.018,0.249,0,0.313c-0.075,0.21-0.261,0.314-0.558,0.314
+ c-0.299,0-0.909-0.407-1.831-1.219c-0.922-0.814-1.382-1.357-1.382-1.631c0-0.146,0.093-0.272,0.278-0.385
+ c0.186-0.113,0.324-0.17,0.418-0.17h1.671v-3.802c0-0.337-0.105-0.602-0.318-0.794c-0.212-0.192-0.567-0.29-1.064-0.29
+ c-0.388,0-0.692,0.104-0.914,0.313s-0.332,0.503-0.332,0.886c0,0.271,0.067,0.552,0.202,0.838
+ c0.039,0.095,0.115,0.217,0.231,0.361h-1.27c-0.094-0.163-0.16-0.293-0.197-0.389c-0.151-0.323-0.226-0.59-0.226-0.799
+ c0-0.728,0.246-1.267,0.738-1.621c0.491-0.355,1.118-0.534,1.879-0.534c0.743,0,1.375,0.194,1.894,0.582
+ c0.52,0.387,0.78,0.887,0.78,1.499v3.75h4.523V42.137z M133.104,36.527h-1.116v-0.945h1.116V36.527z"/>
+ </g>
+ <g>
+ <path d="M139.753,36.527h-3.214v11.124h-1.404V36.527h-2.376v-0.945h6.995V36.527z"/>
+ </g>
+ <g>
+ <path d="M145.448,36.527h-3.215v11.124h-1.403V36.527h-2.376v-0.945h6.995V36.527z"/>
+ </g>
+ <g>
+ <path d="M156.204,36.527h-3.776v3.074c0,0.388-0.101,0.75-0.303,1.09c-0.205,0.34-0.556,0.614-1.056,0.822
+ c-0.259,0.114-0.514,0.198-0.763,0.253c-0.25,0.058-0.522,0.088-0.819,0.088c-0.352,0-0.646-0.042-0.888-0.128
+ c0.166,0.211,0.296,0.381,0.388,0.509c0.59,0.774,1.097,1.413,1.521,1.913c0.369,0.403,0.94,0.977,1.714,1.719
+ c0.24,0.227,0.572,0.541,0.996,0.945l-1.01,0.849c-0.628-0.6-1.307-1.285-2.036-2.061c-0.729-0.776-1.399-1.535-2.008-2.28
+ c-0.776-0.984-1.451-1.904-2.023-2.763c-0.203-0.289-0.434-0.653-0.692-1.092l1.082-0.701l1.082,1.649
+ c0.092,0.145,0.287,0.273,0.583,0.388c0.295,0.112,0.619,0.17,0.971,0.17c0.61,0,1.072-0.138,1.388-0.412
+ c0.313-0.273,0.471-0.634,0.471-1.087v-2.945h-6.875v-0.945h12.055V36.527z"/>
+ </g>
+ <g>
+ <path d="M163.116,36.527h-7.771v-0.945h7.771V36.527z M165.354,40.09h-5.216c-0.663,0-1.141,0.116-1.436,0.348
+ c-0.295,0.234-0.441,0.552-0.441,0.954c0,1.125,0.615,2.34,1.848,3.643c0.401,0.434,1.028,0.98,1.873,1.64l-0.886,0.796
+ c-0.939-0.708-1.642-1.304-2.101-1.789c-1.401-1.464-2.102-2.857-2.102-4.179c0-0.742,0.233-1.309,0.705-1.705
+ c0.47-0.393,1.092-0.592,1.866-0.592h5.889V40.09z"/>
+ </g>
+ <g>
+ <path d="M169.777,36.527h-3.214v11.124h-1.404V36.527h-2.377v-0.945h6.995V36.527z"/>
+ </g>
+ <g>
+ <path d="M175.486,36.527h-3.192v11.124h-1.404V36.527h-2.411v-0.945h2.391c-0.35-0.916-0.671-1.6-0.964-2.049
+ c-0.921-1.365-2.052-2.05-3.395-2.05c-0.625,0-1.09,0.17-1.393,0.507c-0.304,0.337-0.456,0.785-0.456,1.347
+ c0,0.546,0.145,1.099,0.432,1.66c0.091,0.177,0.235,0.4,0.433,0.674h-1.267c-0.221-0.291-0.378-0.533-0.47-0.727
+ c-0.33-0.612-0.495-1.154-0.495-1.622c0-0.921,0.284-1.613,0.856-2.08c0.571-0.468,1.345-0.704,2.321-0.704
+ c1.825,0,3.32,0.841,4.479,2.522c0.369,0.549,0.765,1.389,1.19,2.521h3.344V36.527z"/>
+ </g>
+ <g>
+ <path d="M184.403,44.03c-0.333,0.241-0.628,0.419-0.885,0.533c-0.776,0.357-1.635,0.537-2.574,0.537
+ c-1.551,0-2.755-0.447-3.613-1.342c-0.857-0.895-1.287-1.896-1.287-3.008c0.075,0.029,0.133,0.045,0.171,0.045
+ c0.316,0.074,0.57,0.112,0.758,0.112c0.729,0,1.29-0.145,1.684-0.438c0.466-0.337,0.701-0.861,0.701-1.571
+ c0-0.485-0.223-1.025-0.669-1.621c-0.148-0.194-0.371-0.444-0.669-0.751h-3.846v-0.945h8.172v0.945h-2.672
+ c0.242,0.322,0.419,0.589,0.531,0.798c0.371,0.646,0.555,1.196,0.555,1.646c0,1.066-0.514,1.856-1.545,2.372
+ c-0.334,0.161-0.858,0.322-1.577,0.484c0.185,0.531,0.378,0.926,0.579,1.182c0.627,0.806,1.539,1.208,2.737,1.208
+ c0.755,0,1.444-0.18,2.07-0.534c0.753-0.436,1.212-0.864,1.379-1.284V44.03z"/>
+ </g>
+ <g>
+ <path d="M188.993,36.527h-3.216v11.124h-1.404V36.527h-2.375v-0.945h6.995V36.527z"/>
+ </g>
+ <g>
+ <path d="M215.396,36.527h-8.921v3.529c0.221-0.279,0.424-0.483,0.607-0.614c0.57-0.41,1.252-0.614,2.041-0.614
+ c1.087,0,1.96,0.281,2.622,0.847c0.662,0.566,0.994,1.285,0.994,2.155c0,0.791-0.451,1.729-1.352,2.81
+ c-0.293,0.356-0.753,0.824-1.379,1.405l-1.158-0.73c0.549-0.468,0.95-0.858,1.206-1.166c0.804-0.924,1.207-1.742,1.207-2.456
+ c0-0.582-0.171-1.049-0.509-1.397c-0.341-0.349-0.831-0.521-1.473-0.521c-0.753,0-1.408,0.324-1.967,0.972
+ c-0.562,0.649-0.841,1.249-0.841,1.801v5.105h-1.403v-3.497c-0.238,0.191-0.442,0.333-0.605,0.429
+ c-0.57,0.303-1.179,0.453-1.818,0.453c-1.049,0-1.944-0.318-2.688-0.956c-0.744-0.634-1.115-1.405-1.115-2.308
+ s0.361-1.654,1.083-2.259c0.724-0.604,1.597-0.905,2.622-0.905c0.273,0,0.566,0.034,0.878,0.109
+ c0.092,0.015,0.22,0.051,0.385,0.11v1.07c-0.129-0.07-0.231-0.123-0.305-0.159c-0.294-0.124-0.57-0.187-0.829-0.187
+ c-0.664,0-1.232,0.21-1.713,0.632c-0.479,0.421-0.718,0.93-0.718,1.527c0,0.648,0.213,1.206,0.637,1.674
+ c0.426,0.472,0.98,0.704,1.665,0.704c0.628,0,1.164-0.168,1.606-0.507c0.61-0.469,0.916-0.886,0.916-1.259v-5.797h-8.172
+ v-0.945h18.496V36.527z"/>
+ </g>
+ <g>
+ <path d="M220.87,36.527h-3.216v11.124h-1.404V36.527h-2.375v-0.945h6.995V36.527z"/>
+ </g>
+ <g>
+ <path d="M229.798,44.03c-0.33,0.241-0.626,0.419-0.885,0.533c-0.773,0.357-1.633,0.537-2.572,0.537
+ c-1.551,0-2.755-0.447-3.611-1.342c-0.858-0.895-1.287-1.896-1.287-3.008c0.075,0.029,0.13,0.045,0.167,0.045
+ c0.32,0.074,0.572,0.112,0.76,0.112c0.729,0,1.29-0.145,1.684-0.438c0.468-0.337,0.701-0.861,0.701-1.571
+ c0-0.485-0.223-1.025-0.669-1.621c-0.15-0.194-0.371-0.444-0.668-0.751h-3.847v-0.945h8.172v0.945h-2.67
+ c0.242,0.322,0.417,0.589,0.527,0.798c0.371,0.646,0.559,1.196,0.559,1.646c0,1.066-0.518,1.856-1.549,2.372
+ c-0.33,0.161-0.856,0.322-1.577,0.484c0.186,0.531,0.378,0.926,0.583,1.182c0.626,0.806,1.539,1.208,2.735,1.208
+ c0.755,0,1.444-0.18,2.068-0.534c0.756-0.436,1.216-0.864,1.379-1.284V44.03z"/>
+ </g>
+ <g>
+ <path d="M234.388,36.527h-3.214v11.124h-1.404V36.527h-2.375v-0.945h6.993V36.527z"/>
+ </g>
+ <g>
+ <path d="M240.085,36.527h-3.216v11.124h-1.405V36.527h-2.375v-0.945h6.996V36.527z"/>
+ </g>
+ <g>
+ <path d="M238.137,31.033c-0.146-0.065-0.275-0.104-0.386-0.122c-0.331-0.081-0.68-0.119-1.048-0.119
+ c-0.514,0-0.931,0.135-1.253,0.402c-0.321,0.268-0.483,0.671-0.483,1.208c0,0.668,0.307,1.418,0.916,2.246
+ c0.203,0.263,0.508,0.604,0.913,1.028h-1.078c-0.148-0.05-0.497-0.455-1.051-1.215c-0.664-0.925-0.994-1.742-0.994-2.454
+ c0-0.794,0.304-1.368,0.909-1.727c0.496-0.291,1.158-0.436,1.983-0.436c0.403,0,0.79,0.046,1.156,0.141
+ c0.112,0.034,0.248,0.08,0.415,0.145V31.033z"/>
+ </g>
+ <g>
+ <path d="M251.558,36.527H239.78v-0.945h11.777V36.527z M252.608,40.539c-0.313,0.048-0.572,0.097-0.773,0.146
+ c-0.593,0.176-1.104,0.457-1.537,0.844c-0.435,0.384-0.807,0.842-1.122,1.37c-0.238,0.403-0.367,0.684-0.385,0.844
+ l-1.164-0.533l0.395-0.896l0.508-0.752c-0.13-0.274-0.518-0.572-1.161-0.897c-0.518-0.258-1.053-0.388-1.605-0.388
+ c-0.756,0-1.378,0.206-1.866,0.619c-0.488,0.411-0.733,0.965-0.733,1.659c0,1.099,0.756,2.115,2.263,3.052
+ c0.495,0.307,1.249,0.662,2.261,1.067l-0.664,1.04c-0.867,0-2.065-0.692-3.594-2.08c-1.09-0.984-1.633-2.033-1.633-3.146
+ c0-1.017,0.349-1.808,1.05-2.371c0.702-0.565,1.658-0.847,2.878-0.847c0.699,0,1.389,0.157,2.073,0.474
+ c0.681,0.319,1.171,0.665,1.466,1.037c0.184-0.145,0.332-0.25,0.44-0.313c0.37-0.243,0.664-0.411,0.886-0.51
+ c0.388-0.161,0.839-0.289,1.355-0.388c0.167-0.031,0.388-0.063,0.664-0.096V40.539z"/>
+ </g>
+ <g>
+ <path d="M257.114,36.527h-3.216v11.124h-1.402V36.527h-2.377v-0.945h6.995V36.527z"/>
+ </g>
+ <g>
+ <path d="M266.044,44.03c-0.332,0.241-0.627,0.419-0.886,0.533c-0.774,0.357-1.634,0.537-2.573,0.537
+ c-1.55,0-2.755-0.447-3.611-1.342c-0.858-0.895-1.287-1.896-1.287-3.008c0.075,0.029,0.131,0.045,0.169,0.045
+ c0.318,0.074,0.571,0.112,0.759,0.112c0.729,0,1.291-0.145,1.683-0.438c0.468-0.337,0.701-0.861,0.701-1.571
+ c0-0.485-0.222-1.025-0.668-1.621c-0.149-0.194-0.371-0.444-0.669-0.751h-3.846v-0.945h8.172v0.945h-2.669
+ c0.239,0.322,0.417,0.589,0.527,0.798c0.371,0.646,0.559,1.196,0.559,1.646c0,1.066-0.518,1.856-1.55,2.372
+ c-0.332,0.161-0.857,0.322-1.576,0.484c0.184,0.531,0.378,0.926,0.58,1.182c0.629,0.806,1.539,1.208,2.736,1.208
+ c0.756,0,1.443-0.18,2.07-0.534c0.754-0.436,1.214-0.864,1.379-1.284V44.03z"/>
+ </g>
+ <g>
+ <path d="M270.634,36.527h-3.214v11.124h-1.405V36.527h-2.376v-0.945h6.995V36.527z"/>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/slides/slidy/graphics/face1.gif b/slides/slidy/graphics/face1.gif
new file mode 100755
index 0000000..04e50cd
--- /dev/null
+++ b/slides/slidy/graphics/face1.gif
Binary files differ
diff --git a/slides/slidy/graphics/face2.gif b/slides/slidy/graphics/face2.gif
new file mode 100755
index 0000000..12d8240
--- /dev/null
+++ b/slides/slidy/graphics/face2.gif
Binary files differ
diff --git a/slides/slidy/graphics/face3.gif b/slides/slidy/graphics/face3.gif
new file mode 100755
index 0000000..ac6e5e4
--- /dev/null
+++ b/slides/slidy/graphics/face3.gif
Binary files differ
diff --git a/slides/slidy/graphics/face4.gif b/slides/slidy/graphics/face4.gif
new file mode 100755
index 0000000..3f68740
--- /dev/null
+++ b/slides/slidy/graphics/face4.gif
Binary files differ
diff --git a/slides/slidy/graphics/fold-bright.gif b/slides/slidy/graphics/fold-bright.gif
new file mode 100755
index 0000000..7e38faa
--- /dev/null
+++ b/slides/slidy/graphics/fold-bright.gif
Binary files differ
diff --git a/slides/slidy/graphics/fold-dim.bmp b/slides/slidy/graphics/fold-dim.bmp
new file mode 100755
index 0000000..117f91a
--- /dev/null
+++ b/slides/slidy/graphics/fold-dim.bmp
Binary files differ
diff --git a/slides/slidy/graphics/fold-dim.gif b/slides/slidy/graphics/fold-dim.gif
new file mode 100755
index 0000000..346fcbf
--- /dev/null
+++ b/slides/slidy/graphics/fold-dim.gif
Binary files differ
diff --git a/slides/slidy/graphics/fold.bmp b/slides/slidy/graphics/fold.bmp
new file mode 100755
index 0000000..6ba9e56
--- /dev/null
+++ b/slides/slidy/graphics/fold.bmp
Binary files differ
diff --git a/slides/slidy/graphics/fold.gif b/slides/slidy/graphics/fold.gif
new file mode 100755
index 0000000..133e594
--- /dev/null
+++ b/slides/slidy/graphics/fold.gif
Binary files differ
diff --git a/slides/slidy/graphics/icon-blue.png b/slides/slidy/graphics/icon-blue.png
new file mode 100755
index 0000000..58bf969
--- /dev/null
+++ b/slides/slidy/graphics/icon-blue.png
Binary files differ
diff --git a/slides/slidy/graphics/keys2.jpg b/slides/slidy/graphics/keys2.jpg
new file mode 100755
index 0000000..4739be0
--- /dev/null
+++ b/slides/slidy/graphics/keys2.jpg
Binary files differ
diff --git a/slides/slidy/graphics/nofold-dim.bmp b/slides/slidy/graphics/nofold-dim.bmp
new file mode 100755
index 0000000..8a12826
--- /dev/null
+++ b/slides/slidy/graphics/nofold-dim.bmp
Binary files differ
diff --git a/slides/slidy/graphics/nofold-dim.gif b/slides/slidy/graphics/nofold-dim.gif
new file mode 100755
index 0000000..996fb5e
--- /dev/null
+++ b/slides/slidy/graphics/nofold-dim.gif
Binary files differ
diff --git a/slides/slidy/graphics/nofold.bmp b/slides/slidy/graphics/nofold.bmp
new file mode 100755
index 0000000..0937d32
--- /dev/null
+++ b/slides/slidy/graphics/nofold.bmp
Binary files differ
diff --git a/slides/slidy/graphics/unfold-bright.gif b/slides/slidy/graphics/unfold-bright.gif
new file mode 100755
index 0000000..2748131
--- /dev/null
+++ b/slides/slidy/graphics/unfold-bright.gif
Binary files differ
diff --git a/slides/slidy/graphics/unfold-dim.bmp b/slides/slidy/graphics/unfold-dim.bmp
new file mode 100755
index 0000000..c2a6baf
--- /dev/null
+++ b/slides/slidy/graphics/unfold-dim.bmp
Binary files differ
diff --git a/slides/slidy/graphics/unfold-dim.gif b/slides/slidy/graphics/unfold-dim.gif
new file mode 100755
index 0000000..bee5671
--- /dev/null
+++ b/slides/slidy/graphics/unfold-dim.gif
Binary files differ
diff --git a/slides/slidy/graphics/unfold.bmp b/slides/slidy/graphics/unfold.bmp
new file mode 100755
index 0000000..30af625
--- /dev/null
+++ b/slides/slidy/graphics/unfold.bmp
Binary files differ
diff --git a/slides/slidy/graphics/unfold.gif b/slides/slidy/graphics/unfold.gif
new file mode 100755
index 0000000..0753ae4
--- /dev/null
+++ b/slides/slidy/graphics/unfold.gif
Binary files differ
diff --git a/slides/slidy/graphics/w3c-logo-blue.gif b/slides/slidy/graphics/w3c-logo-blue.gif
new file mode 100755
index 0000000..890bc97
--- /dev/null
+++ b/slides/slidy/graphics/w3c-logo-blue.gif
Binary files differ
diff --git a/slides/slidy/graphics/w3c-logo-blue.svg b/slides/slidy/graphics/w3c-logo-blue.svg
new file mode 100755
index 0000000..6595d01
--- /dev/null
+++ b/slides/slidy/graphics/w3c-logo-blue.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 93 45" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <a xlink:href="http://www.w3.org">
+ <desc>W3C logo</desc>
+ <rect width="103" height="65" fill="#90A7D0" x="-10" y="-10"/>
+ <g transform="translate(2,2)">
+ <path d="M74.5,.2l0.8,5.1l-3,5.6c0,0-1.13-2.39-3-3.7 c-1.6-1.1-2.6-1.4-4.2-1 c-2.1,0.4-4.4,2.9-5.4,5.9 c-1.2,3.6-1.2,5.4-1.3,7c-0.07,2.6,0.3,4.14,0.3,4.1 s-1.8-3.3-1.8-8.1c0.01-3.5,0.6-6.6,2.2-9.7 c1.41-2.7,3.5-4.4,5.4-4.5 c1.9-0.2,3.4,0.7,4.6,1.7 c1.2,1,2.5,3.3,2.5,3.4z"/>
+ <path d="M74.9,28.8c0,0-1.3,2.3-2.1,3.2c-.8.9-2.3,2.5-4.1,3.3 c-1.8.8-2.7.9-4.5,0.8 c-1.8-.2-3.4-1.2-4-1.6s-2-1.7-2.9-2.9 c-.8-1.2-2.1-3.5-2.1-3.5 s.7,2.4,1.2,3.3c.3.6,1.1,2.3,2.2,3.9c1.1,1.4,3.1,3.9,6.3,4.4 c3.1,.6,5.3-.9,5.8-1.2c.5-.3,1.7-1.3,2.4-2.1 c.7-.8,1.4-1.8,1.8-2.4c.3-.4,0.7-1.3.7-1.3z"/>
+ <path fill="#0C479D" d="M20.7,0.43l7.1,24.1l7.1-24.1 h5.1l-11.7,39.6h-.5l-7.35-24.5l-7.35,24.5h-.5l-11.7-39.6h5.1l7.1,24.1l4.8-16.2l-2.3-7.9z"/>
+ <path fill="#0C479D" d="M54.6,27.3c0,3.6-1,6.6-2.9,9 c-1.9,2.4-4.4,3.7-7.4,3.7 c-2.3,0-4.3-0.7-5.9-2.2 c-1.7-1.4-2.9-3.4-3.8-5.9l4-1.7c.6,1.5,1.4,2.7,2.3,3.5 c1,.9,2.1,1.3,3.4,1.3c1.4,0,2.5-.8,3.5-2.3 c.9-1.5,1.4-3.4,1.4-5.5 c0-2.4-.5-4.2-1.5-5.5 c-1.2-1.5-3-2.3-5.5-2.3h-2v-2.3l6.8-11.8h-8.2l-2.3,3.9 h-1.5v-8.7h19.1v2.4l-7.2,12.5c2.5.8,4.5,2.3,5.8,4.4 c1.3,2.1,2,4.7,1.9,7.5z"/>
+ <text x="78" y="10" font-size="13" font-family="sans-serif">&#174;</text>
+ </g>
+ </a>
+</svg>
+
diff --git a/slides/slidy/graphics/w3c-logo-slanted.jpg b/slides/slidy/graphics/w3c-logo-slanted.jpg
new file mode 100755
index 0000000..54e0ac3
--- /dev/null
+++ b/slides/slidy/graphics/w3c-logo-slanted.jpg
Binary files differ
diff --git a/slides/slidy/graphics/w3c-logo-white.gif b/slides/slidy/graphics/w3c-logo-white.gif
new file mode 100755
index 0000000..3b3c6fd
--- /dev/null
+++ b/slides/slidy/graphics/w3c-logo-white.gif
Binary files differ
diff --git a/slides/slidy/graphics/w3c-logo-white.svg b/slides/slidy/graphics/w3c-logo-white.svg
new file mode 100755
index 0000000..d63907f
--- /dev/null
+++ b/slides/slidy/graphics/w3c-logo-white.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 93 45" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <a xlink:href="http://www.w3.org">
+ <desc>W3C logo</desc>
+ <rect width="103" height="65" fill="#728ec2" x="-10" y="-10"/>
+ <g transform="translate(2,2)">
+ <path fill="#FFFFFF" d="M74.5,.2l0.8,5.1l-3,5.6c0,0-1.13-2.39-3-3.7 c-1.6-1.1-2.6-1.4-4.2-1 c-2.1,0.4-4.4,2.9-5.4,5.9 c-1.2,3.6-1.2,5.4-1.3,7c-0.07,2.6,0.3,4.14,0.3,4.1 s-1.8-3.3-1.8-8.1c0.01-3.5,0.6-6.6,2.2-9.7 c1.41-2.7,3.5-4.4,5.4-4.5 c1.9-0.2,3.4,0.7,4.6,1.7 c1.2,1,2.5,3.3,2.5,3.4z"/>
+ <path fill="#FFFFFF" d="M74.9,28.8c0,0-1.3,2.3-2.1,3.2c-.8.9-2.3,2.5-4.1,3.3 c-1.8.8-2.7.9-4.5,0.8 c-1.8-.2-3.4-1.2-4-1.6s-2-1.7-2.9-2.9 c-.8-1.2-2.1-3.5-2.1-3.5 s.7,2.4,1.2,3.3c.3.6,1.1,2.3,2.2,3.9c1.1,1.4,3.1,3.9,6.3,4.4 c3.1,.6,5.3-.9,5.8-1.2c.5-.3,1.7-1.3,2.4-2.1 c.7-.8,1.4-1.8,1.8-2.4c.3-.4,0.7-1.3.7-1.3z"/>
+ <path fill="#FFFFFF" d="M20.7,0.43l7.1,24.1l7.1-24.1 h5.1l-11.7,39.6h-.5l-7.35-24.5l-7.35,24.5h-.5l-11.7-39.6h5.1l7.1,24.1l4.8-16.2l-2.3-7.9z"/>
+ <path fill="#FFFFFF" d="M54.6,27.3c0,3.6-1,6.6-2.9,9 c-1.9,2.4-4.4,3.7-7.4,3.7 c-2.3,0-4.3-0.7-5.9-2.2 c-1.7-1.4-2.9-3.4-3.8-5.9l4-1.7c.6,1.5,1.4,2.7,2.3,3.5 c1,.9,2.1,1.3,3.4,1.3c1.4,0,2.5-.8,3.5-2.3 c.9-1.5,1.4-3.4,1.4-5.5 c0-2.4-.5-4.2-1.5-5.5 c-1.2-1.5-3-2.3-5.5-2.3h-2v-2.3l6.8-11.8h-8.2l-2.3,3.9 h-1.5v-8.7h19.1v2.4l-7.2,12.5c2.5.8,4.5,2.3,5.8,4.4 c1.3,2.1,2,4.7,1.9,7.5z"/>
+ <text x="78" y="10" font-size="13" font-family="sans-serif">&#174;</text>
+ </g>
+ </a>
+</svg>
+
diff --git a/slides/slidy/help/.htaccess b/slides/slidy/help/.htaccess
new file mode 100755
index 0000000..d395348
--- /dev/null
+++ b/slides/slidy/help/.htaccess
@@ -0,0 +1,28 @@
+Options +MultiViews
+LanguagePriority en
+AddLanguage pt-br .pt-br
+
+<Files ~ "*.html">
+
+ForceType 'text/html; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.xhtml">
+
+ForceType 'application/xhtml+xml; charset=utf-8'
+
+</Files>
+
+<Files ~ *.css">
+
+ForceType 'text/css; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.js">
+
+ForceType 'text/javascript; charset=utf-8'
+
+</Files>
+mkdir
diff --git a/slides/slidy/help/help.html b/slides/slidy/help/help.html
new file mode 100755
index 0000000..c2f8614
--- /dev/null
+++ b/slides/slidy/help/help.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
+
+ <title>Slide Show Help</title><style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Slide Show Help</h1>
+
+<p>This slide show can be driven in the same way as Power Point.
+To advance to the next slide click pretty much anywhere on the
+page with the mouse, or press the space bar. You can move forwards
+or backwards through the slides with the Cursor left, Cursor
+right, Pg Up and Pg Dn keys. The font size is automatically
+adjusted to match the browser's window width, but you can also
+adjust it manually using the "S" key for smaller and the "B" key
+for bigger. You can also use the "&lt;" and "&gt;" keys. Use the
+"F" key to switch off/on the bottom status line. The "K" key
+toggles the use of mouse click to advance to the next slide. You
+can use "C" to show the table of contents and any other key to
+hide it. Use the "F11" key to toggle the browser's full screen
+mode. Note that not all keys are supported in all browsers, as
+browsers may reserve some keys for browser control and this varies
+from one browser to the next.</p>
+
+<p>Firefox users may want the <a
+href="http://www.krickelkrackel.de/autohide/">autohide</a>
+extension to hide the toolbars when entering full screen with F11.
+Newer versions of Firefox have built-in support for SVG, but on older
+versions for Microsoft Windows, you should consider installing the <a
+href="http://plugindoc.mozdev.org/windows.html">Adobe SVG Viewer
+6.0</a>.</p>
+
+<p>If you would like to see how Slidy works, use View Source to view
+the XHTML markup, or see this <a
+href="http://www.w3.org/Talks/Tools/Slidy/">longer explanation</a>,
+which also explains additional features. Each slide is marked up as
+a div element with class="slide". CSS positioning and percentage
+widths on images can be used to ensure your image rich slides scale
+to match the window size. Content to be revealed incrementally can
+be marked up with class="incremental". The linked style sheet and
+scripts were developed as a Web-based alternative to proprietary
+presentation tools and have been tested on a variety of recent
+browsers. Integrated editing support is under development. Please
+send your comments to <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+If you find Slidy useful, you may want to consider becoming a
+<a href="http://www.w3.org/Consortium/sup">W3C Supporter</a>.</p>
+
+<p><em>You are welcome to make use of the slide show style sheets,
+scripts and help file under W3C's <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
+and <a href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules.</em></p>
+
+<button id="back" onclick="history.go(-1)">Return to slide show</button>
+
+<hr>
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body></html>
diff --git a/slides/slidy/help/help.html.ca b/slides/slidy/help/help.html.ca
new file mode 100755
index 0000000..fef10cf
--- /dev/null
+++ b/slides/slidy/help/help.html.ca
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ca" lang="ca">
+<head>
+ <title>Ajuda del presentador de diapositives</title><style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Ajuda del presentador de diapositives</h1>
+
+<p>Per avançar a la pròxima diapositiva només cal fer clic amb el ratolí en qualsevol lloc de la pàgina o bé prémer la barra d’espaidora.
+Es pot anar endavant i endarrere per les diapositives amb les tecles "cursor esquerra" i "cursor dreta", "RePàg" i "AvPàg". El tamany de font de les lletres s’ajusta automàticament a l’amplada de la pantalla, però també es pot ajustar manualment fent servir la “S†per fer-la mes petita (Smaller) i la “B†per fer-la mes gran (“Biggerâ€),també es poden fer servir les tecles "&lt;" i "&gt;".
+La tecla “F†fa aparèixer/desaparèixer el menú de la línia de estat a la part de sota.
+Amb la tecla “K†s’habilita/deshabilita l’ús del ratolí per avançar a la pròxima diapositiva. La tecla “C†mostra la taula de continguts, amb qualsevol altra tecla la podem amagar.
+La tecla “F11†serveix per entrar/sortir en el mode pantalla completa del navegador, la tecla “H†dona accés a aquesta pàgina.
+Cal notar que no totes les tecles estan suportades en tots els navegadors donat que els navegadors poden reservar algunes tecles per el control de navegació i aquestes varien d’un navegador a un altre.</p>
+<p>Es recomana als usuaris de Firefox que instal•lin la extensió d’<a href="http://www.krickelkrackel.de/autohide/">autoamagar</a> per amagar les barres d’eines en entrar al mode pantalla completa. </p>
+<p>Si vol saber com funciona Slidy, feu servir “Veure el codi font†per veure el codi XHTML o vegi aquesta <a
+href="http://www.w3.org/Talks/Tools/Slidy/">explicació més llarga.</a>, que també explica característiques addicionals. Cada diapositiva està marcada com element div amb classe “slideâ€. Es fa servir posicionament CSS i amplades per percentatge a les imatges per assegurar-se de que les vostres diapositives riques en imatges s’ajustin perfectament a la grandària de la finestra. El contingut que s’ha de revelar incrementalment es pot marcar amb la classe “incrementalâ€. La fulla d’estils adjunta i els scripts es van desenvolupar com una alternativa basada en Web a les eines de presentació propietàries i s’han provat en una gran varietat de navegadors actuals. S’està desenvolupant un sistema d’edició integrada. Si us plau envieu els vostres comentaris a : <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+Si trobeu Slidy útil podeu considerar <a href="http://www.w3.org/Consortium/sup">ajudar al W3C</a>.</p>
+<p><em>Sou benvingut a fer servir el presentador de diapositives, les fulles d’estil , scripts i el fitxer d’ajuda sota les condicions d’ <a href="http://www.w3.org/Consortium/Legal/copyright-documents">ùs de document</a> del W3C I les normes
+<a href="http://www.w3.org/Consortium/Legal/copyright-software">llicència de software</a>.</em></p>
+
+<button id="back" onclick="history.go(-1)">Tornar a la presentació de diapositives </button>
+
+<hr />
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.de b/slides/slidy/help/help.html.de
new file mode 100755
index 0000000..55a8e48
--- /dev/null
+++ b/slides/slidy/help/help.html.de
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+<head>
+ <!-- translated by Beat Vontobel -->
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Slide Show Help</title>
+ <style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Hilfe für die HTML-Slidy-Präsentation</h1>
+
+<p>Diese Präsentation wird wie Power Point kontrolliert: Klicken
+Sie mit der Maus irgendwo ins Bild, um zur nächsten Seite zu
+schalten, oder drücken Sie die Leertaste. Sie können ebenfalls
+mit den Cursor-Tasten (links/rechts) oder den Tasten für Seite
+auf und ab vorwärts und rückwärts durch die Präsentation
+navigieren. Die Schriftgrösse wird automatisch so angepasst, dass
+Sie zur Fensterbreite des Browsers passt, sie kann aber auch
+manuell mit den Tasten "s" (kleiner) und "b" (grösser)
+kontrolliert werden (oder mit der Taste "&lt;" bzw. "&gt;"). Die
+Statuszeile am unteren Rand des Fensters wird mit "f" ein- und
+ausgeschaltet. Die Taste "k" schaltet die Funktion des Mausklicks
+zum Kontrollieren der Präsentation ein und aus. Sie können mit
+"c" ein Inhaltsverzeichnis ein- und mit einer beliebigen anderen
+Taste wieder ausblenden. Mit "F11" können Sie (je nach Browser)
+den Vollbildmodus aktivieren. Die Taste "h" zeigt diesen Hilfetext
+an. Es ist zu bemerken, dass nicht alle diese Tasten in jedem
+Browser funktionieren, da sie zum Teil mit anderen Funktionen
+belegt sind.</p>
+
+<p>Firefox-Benutzer können die <a
+href="http://www.krickelkrackel.de/autohide/">autohide</a>-Erweiterung
+installieren, um die Werkzeugleiste im Vollbildmodus auszublenden.</p>
+
+<p>Wenn Sie wissen möchten, wie Slidy funktioniert, schauen Sie sich
+den XHTML-Quellcode der Seite an oder lesen diese etwas <a
+href="http://www.w3.org/Talks/Tools/Slidy/">längere Erklärung</a>
+(in Englisch), die auch weitere Funktionen erläutert. Jede einzelne
+Folie ist als ein <code>div</code>-Element mit <code>class="slide"</code>
+markiert. CSS-Positionierung und prozentuale Breitenangaben für Bilder
+können benutzt werden, um sicherzustellen, dass die Folien bei
+verschiedenen Fenstergrössen optimal dargestellt werden. Der Inhalt
+auf Folien kann schrittweise angezeigt werden, indem den Elementen
+<code>class="incremental"</code> zugewiesen wird. Das eingebundene
+Style Sheet und die Skripten wurden als web-basierte Alternative zu
+proprietären Programmen entwickelt. Sie wurden auf verschiedensten
+aktuellen Browsern getestet. Ein eingebauter Editor für die Folien
+ist in Entwicklung. Bitte senden Sie Kommentare an <a
+href="http://www.w3.org/People/Raggett/">Dave Raggett</a> &lt;<a
+href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;. Wenn Sie Slidy
+nützlich finden, möchten Sie vielleicht ein <a
+href="http://www.w3.org/Consortium/sup">W3C Supporter</a> werden.</p>
+
+<p><em>Die Style Sheets, die Skripten der Präsentation und die
+zugehörigen Texte sind frei zur Benutzung unter den Bedingungen
+der W3C-Lizenzen <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document
+use</a> und <a href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a>.</em></p>
+
+<button id="back" onclick="history.go(-1)">Zur Präsentation
+zurückkehren</button>
+
+<hr/>
+
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2006
+
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.en b/slides/slidy/help/help.html.en
new file mode 100755
index 0000000..f7e9e5c
--- /dev/null
+++ b/slides/slidy/help/help.html.en
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-US">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Slide Show Help</title>
+ <style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Slide Show Help</h1>
+
+<p>This slide show can be driven in the same way as Power Point.
+To advance to the next slide click pretty much anywhere on the
+page with the mouse, or press the space bar. You can move forwards
+or backwards through the slides with the Cursor left, Cursor
+right, Pg Up and Pg Dn keys. The font size is automatically
+adjusted to match the browser's window width, but you can also
+adjust it manually using the "S" key for smaller and the "B" key
+for bigger. You can also use the "&lt;" and "&gt;" keys. Use the
+"F" key to switch off/on the bottom status line. The "K" key
+toggles the use of mouse click to advance to the next slide. You
+can use "C" to show the table of contents and any other key to
+hide it. Press the "H" key to view this page. Use the "F11" key to
+toggle the browser's full screen mode. Note that not all keys are
+supported in all browsers, as browsers may reserve some keys for
+browser control and this varies from one browser to the next.</p>
+
+<p>Firefox users may want the <a
+href="http://www.krickelkrackel.de/autohide/">autohide</a>
+extension to hide the toolbars when entering full screen with F11.</p>
+
+<p>If you would like to see how Slidy works, use View Source to view
+the XHTML markup, or see this <a
+href="http://www.w3.org/Talks/Tools/Slidy/">longer explanation</a>,
+which also explains additional features. Each slide is marked up as
+a div element with class="slide". CSS positioning and percentage
+widths on images can be used to ensure your image rich slides scale
+to match the window size. Content to be revealed incrementally can
+be marked up with class="incremental". The linked style sheet and
+scripts were developed as a Web-based alternative to proprietary
+presentation tools and have been tested on a variety of recent
+browsers. Integrated editing support is under development. Please
+send your comments to <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+If you find Slidy useful, you may want to consider becoming a
+<a href="http://www.w3.org/Consortium/sup">W3C Supporter</a>.</p>
+
+<p><em>You are welcome to make use of the slide show style sheets,
+scripts and help file under W3C's <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
+and <a href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules.</em></p>
+
+<button id="back" onclick="history.go(-1)">Return to slide show</button>
+
+<hr />
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.es b/slides/slidy/help/help.html.es
new file mode 100755
index 0000000..a3059aa
--- /dev/null
+++ b/slides/slidy/help/help.html.es
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
+<head>
+ <!-- Traducida por Emmanuelle Gutiérrez y Restrepo - Fundación Sidar -->
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Ayuda de Slidy</title>
+ <style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Ayuda de "<span lang="en">Slidy</span>"</h1>
+
+<p>Esta presentación puede manejarse igual que una presentación hecha con Power Point.
+Para avanzar a la siguiente página o diapositiva haga clic con el ratón en cualquier parte de la página, o pulse la barra espaciadora. Puede moverse adelante y atrás entre las diapositivas con las teclas de flecha izquierda, derecha, retroceso de página (Re Pag) o avance de página (Av Pag). El tamaño de fuente se ajusta automáticamente para encajar en el ancho de la ventana del navegador, pero puede ajustarlo manualmente utilizando la tecla "S" para reducirlo y la tecla "B" para aumentarlo. También puede usar las teclas "&lt;" y "&gt;". Use la tecla "F" para presentar u ocultar la línea de estado en la parte inferior. La tecla "K" habilita o deshabilita el uso del ratón para avanzar a la siguiente diapositiva. Puede usar la tecla "C" para mostrar la tabla de contenidos o índice, y cualquier otra tecla para esconderla. Use la tecla de función "F11" para conmutar la vista a toda pantalla del navegador. Tenga en cuenta que no todas las teclas están igualmente soportadas en todos los navegadores, ya que los navegadores pueden tener reservado el uso de algunas teclas para controles del navegador, y esto puede variar de un navegador a otro.</p>
+
+<p>Los usuarios de Firefox pueden desear instalar la extensión <a href="http://www.krickelkrackel.de/autohide/" lang="en">"autohide"</a>
+para ocultar las barras de herramientas cuando utilizan la función F11 para el modo a toda pantalla.</p>
+
+<p>Si desea saber cómo funciona Slidy, utilice la Vista de Código para ver el marcado XHML, o vea esta <a href="http://www.w3.org/Talks/Tools/Slidy/">explicación extensa</a>,
+que expone otras características adicionales. Cada diapositiva está marcada con un elemento div con la clase class="slide". Puede usarse posicionamiento y anchos en porcentajes para las imágenes, mediante CSS, para garantizar que la imagen alcance el tamaño de la diapositiva de acuerdo con el tamaño de la ventana. El contenido que se desee presentar paulatinamente puede marcarse con la clase class="incremental". La hoja de estilos y el script enlazado fueron desarrollados como una alternativa, basada en la Web, a las herramientas propietarias de presentación, y han sido probados en una variedad de navegadores recientes. Se está desarrollando un editor integrado. Envie sus comentarios, por favor, a <a href="http://www.w3.org/People/Raggett/" lang="en">Dave Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.</p>
+
+<p><em>Usted puede utilizar las hojas de estilo, scripts, y el fichero de ayuda; siempre que siga las normas de <a href="http://www.w3.org/Consortium/Legal/copyright-documents">uso de documentos</a> y <a href="http://www.w3.org/Consortium/Legal/copyright-software">licencia de software</a> del W3C.</em></p>
+
+<button id="back" onclick="history.go(-1)">Volver a la presentación</button>
+
+<hr />
+
+<p class="copyright" lang="en"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.fr b/slides/slidy/help/help.html.fr
new file mode 100755
index 0000000..daa7605
--- /dev/null
+++ b/slides/slidy/help/help.html.fr
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr-FR">
+<head>
+
+ <title>Aide de Slide Show</title><style type="text/css">
+
+ body {
+
+ font-family: sans-serif;
+
+ margin: 10%;
+
+ }
+
+ .copyright { font-size: smaller }
+
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+
+<body>
+
+<h1>Aide de Slide Show</h1>
+
+
+
+<p>Cet exposé Slide Show peut être utilisé de la même manière que Powerpoint.
+
+Pour avancer au prochain transparent, cliquez n'importe où sur la page avec la
+souris ou appuyez sur la barre d'espace. Vous pouvez naviguer entre
+les transparents avec les flèches gauche/droite ainsi que les touches Pg Up et
+Pg Dn.
+
+La taille de la police s'adapte automatiquement à la largeur de la fenêtre
+du navigateur, mais vous pouvez aussi l'ajuster manuellement en utilisant les
+touches "S" (small) pour la diminuer et "B" (big) pour l'augmenter. Vous
+pouvez aussi utiliser les touches "&lt;" et "&gt;".
+
+Utilisez la touche "F" pour afficher ou non le statut en pied-de-page.
+
+La touche "K" active l'utilisation du clic de souris pour avancer au prochain transparent.
+Vous pouvez utiliser "T" pour afficher la table des matières et n'importe quelle autre touche
+pour la cacher.
+
+Les utilisateurs de Windows peuvent utiliser la touche "F11" pour activer le mode plein écran
+du navigateur. Appuyez sur la touche "H" pour obtenir cette page. À noter que certaines touches
+peuvent ne pas fonctionner avec certains navigateurs car elles sont réservées pour son contrôle.
+De plus, cela peut varier d'un navigateur à l'autre.</p>
+
+<p>Les utilisateurs de Firefox peuvent installer l'extension <a
+href="http://www.krickelkrackel.de/autohide/">autohide</a>
+pour cacher les barres d'outils lorsque le mode plein écran est activé
+avec la touche F11.</p>
+
+<p>Si vous voulez voir comment Slidy fonctionne, affichez le code source de la page
+pour voir le balisage XHTML, ou lisez cette <a
+href="http://www.w3.org/Talks/Tools/Slidy/">explication plus complète</a> (en anglais),
+qui explique aussi des fonctionnalités additionnelles.
+
+Chaque transparent est balisé par un élément div avec l'attribut class="slide".
+Il est aussi possible d'utiliser le positionnement CSS ainsi que la largeur en pourcentage
+pour s'assurer que vos images soient à l'échelle du transparent et correspondent ainsi à la taille
+de la fenêtre. Le contenu devant s'afficher progressivement doit être marqué par l'attribut
+ class="incremental".
+
+La feuille de style reliée ainsi que les scripts ont été développés comme alternative Web
+aux outils de présentation propriétaires et ont été testés sur un large panel de navigateurs récents.
+Le support intégré pour l'édition est en cours de développement. Envoyez vos commentaires
+(en anglais) à <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+Si vous trouvez Slidy utile, vous pouvez également devenir
+<a href="http://www.w3.org/Consortium/sup">Supporter du W3C</a>.</p>
+
+
+
+<p><em>Veuillez utilisez les feuilles de style, scripts et fichiers d'aide
+
+en suivant le <a href="http://www.w3.org/Consortium/Legal/copyright-documents">copyright</a>
+
+et la <a href="http://www.w3.org/Consortium/Legal/copyright-software">licence</a> du W3C.</em></p>
+
+
+
+<button id="back" onclick="history.go(-1)">Retour à l'exposé</button>
+
+
+
+<hr />
+
+
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+
+licensing</a> rules apply.</p>
+
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.hu b/slides/slidy/help/help.html.hu
new file mode 100755
index 0000000..64eb205
--- /dev/null
+++ b/slides/slidy/help/help.html.hu
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
+ <title>Segítség a bemutatóhoz</title>
+
+ <style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+ </head>
+
+ <body>
+ <h1>Segítség a bemutatóhoz</h1>
+
+ <p>Ezt a bemutatót a Power Point-hoz hasonlóan lehet vezérelni.
+ A következő oldalra való lépéshez kattintson bárhova az aktuális
+ oldalon belül, vagy nyomja le a szóköz billentyűt. Az oldalak között
+ a bal és jobb nyíl, illetve a Page Up és Page Down billentyűkkel mozoghat.
+ A szöveg mérete automatikusan kerül beállításra úgy, hogy igazodjon
+ a böngésző ablakának szélességéhez, viszont az "S" billentyűvel
+ csökkentheti, a "B"-vel növelheti azt. Ugyanerre használhatja a "&lt;"
+ és a "&gt;" billentyűket is.
+ Az "F" billentyűvel be- és
+ kikapcsolhatja az alsó állapotsor megjelenítését. A "K" billentyűvel
+ letilthatja, illetve engedélyezheti, hogy egérkattintással a következő
+ oldalra lehessen lépni. A "C" billentyűvel megjelenítheti, bármely másikkal
+ pedig eltűntetheti a tartalomjegyzéket. Az "F11" billenytűvel válthat át
+ a böngésző teljes képernyős üzemmódjára, vagy jöhet onnan vissza.
+ Megjegyezzük, hogy nem minden billentyű támogatott minden böngészőben,
+ mivel a böngészők lefoglalhatnak néhány (böngészőnként eltérő) billentyűt
+ a saját vezérlésükre.
+ </p>
+
+ <p>A Firefox felhasználóknak hasznos lehet az
+ <a href="http://www.krickelkrackel.de/autohide/">autohide</a>
+ bővítmény, amivel elrejthetők az eszköztárak teljes képernyős üzemmódban.
+ </p>
+
+ <p>Ha szeretné látni, hogyan működik a Slidy, nézze meg az oldal
+ forrásában az XHTML jelölésmódot, vagy nézze meg ezt a
+ <a href="http://www.w3.org/Talks/Tools/Slidy/">hosszabb magyarázatot</a>,
+ ami további funkciókat is bemutat. Minden oldalt egy olyan div elem jelöl,
+ amiben be van állítva, hogy class="slide". A képek CSS-sel történő
+ pozicionálása és szélességüknek százalékban való megadása biztosítja,
+ hogy a sok képet tartalmazó oldalak az ablak méretének megfelelően
+ skálázódjanak. Az oldalon belül egymás után megjelenítendő tartalom a
+ class="incremental" megadásával jelölhető. A becsatolt stíluslapok és
+ scriptek a védjegyzett/szabadalmaztatott/más módon védett
+ bemutató-megjelenítő eszközök web-alapú alternatívájaként lettek
+ fejlesztve, és sok, manapság használatos böngészővel tesztelve.
+ Az integrált szerkesztési lehetőség jelenleg fejlesztés alatt áll.
+ Észrevételeit a következő helyre küldje:
+ <a href="http://www.w3.org/People/Raggett/">Dave Raggett</a>
+ &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+ </p>
+
+ <p>
+ <em>Ön jogosult az e bemutatóhoz tartozó stíluslapok, scriptek és
+ segítség fájl használatára, amennyiben betartja a W3C
+ <a href="http://www.w3.org/Consortium/Legal/copyright-documents">
+ dokumentum használati</a> és
+ <a href="http://www.w3.org/Consortium/Legal/copyright-software">
+ szoftver licencelési</a> szabályait.
+ </em>
+ </p>
+
+ <button id="back" onclick="history.go(-1)">Visszatérés a bemutatóhoz</button>
+
+ <hr>
+
+ <p class="copyright">
+ <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+ <a href="http://www.w3.org/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a>
+ <sup>&reg;</sup>
+ (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+ <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+ <a href="http://www.keio.ac.jp/">Keio</a>), minden jog fenntartva. A következő W3C szabályok alkalmazandók:
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">felelősségi</a>,
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">védjegy</a>,
+ <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">dokumentum használati</a> és
+ <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">szoftver licencelési</a>.
+ </p>
+ </body>
+</html>
diff --git a/slides/slidy/help/help.html.nl b/slides/slidy/help/help.html.nl
new file mode 100755
index 0000000..b2e9043
--- /dev/null
+++ b/slides/slidy/help/help.html.nl
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
+<head>
+ <!-- translated by Ruud Steltenpool -->
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Slidy Help</title>
+ <style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1><span lang="en">Slidy</span> Help</h1>
+
+<!-- Sheetpresentatie help -->
+
+<p>Deze sheetpresentatie kan op dezelfde manier worden aangestuurd als
+Powerpoint. Klik op een willekeurige plaats op de pagina met de muis, of
+druk op de spatiebalk om naar de volgende sheet te gaan. Je kan voor- of
+achterwaarts door de sheets bewegen mbv de links/rechts cursor- en de Page
+Up en Page Down toetsen. De lettergrootte wordt automatisch aangepast aan
+de breedte van het venster, maar je kunt 'm ook handmatig aanpassen met
+"S" en "&lt;" voor kleiner en "B" en "&gt;" voor groter. Gebruik de
+"F" om de status aan de onderkant aan/uit te schakelen. De "K" zorgt
+ervoor dat een muisklik je niet meer, of wel weer naar de volgende sheet
+brengt. Je kan de "C" gebruiken om het inhoudsoverzicht op te roepen, en
+een willekeurige andere toets om 'm weer te verbergen. Gebruik "F11" om de
+"volledig scherm" modus aan /uit te schakelen. Merk op dat niet alle
+toetsen in iedere browser worden ondersteund, omdat sommige browsers
+toetsen gebruiken voor besturing van de browser zelf. Dit varieert zelfs
+tussen versies van dezelfde browser.</p>
+
+<p>Firefox gebruikers willen wellicht de <a href="http://www.krickelkrackel.de/autohide/" lang="en">"autohide"</a> extension gebruiken om
+werkbalken te verbergen wanneer "volledig scherm" wordt aangeroepen met
+"F11".</p>
+
+<p>Als u wilt zien hoe Slidy werkt, gebruik Bron Bekijken om de XHTML opmaak
+te bekijken, of bekijk deze <a href="http://www.w3.org/Talks/Tools/Slidy/">langere uitleg</a>, die ook extra functionaliteit
+uitlegt. Elke sheet is in de opmaak genoteerd als een div element met
+class="slide". CSS positionering and procentuele breedtes op afbeeldingen
+kunnen worden gebruikt om te verzekeren dat uw afbeeldingrijke sheets
+schalen naar de vensterbreedte. Inhoud kan stapsgewijs zichtbaar worden
+gemaakt met behulp van class="incremental". Het gelinkte stijlblad en de
+gelinkte scripts zijn ontwikkeld als een Web-gebaseerd alternatief voor
+gesloten presentatie programma's en zijn getest op een variëteit van
+recente browsers. Geintegreerde ondersteuning voor (inhoud)aanpassing
+wordt ontwikkeld. Zend uw opmerkingen aub naar <a href="http://www.w3.org/People/Raggett/" lang="en">Dave Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;
+Als u Slidy bruikbaar vindt, wilt u wellicht overwegen W3C donateur te
+worden.</p>
+
+<p>U bent welkom om gebruik te maken van de stijlbladen, scripts en dit
+helpbestand onder de regels van W3C's <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> (document gebruik) en
+<a href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a> (software licenties)</p>
+
+
+<button id="back" onclick="history.go(-1)">Rerugkeer naar sheetpresentatie</button>
+
+<hr />
+
+<p class="copyright" lang="en"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2006
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.pl b/slides/slidy/help/help.html.pl
new file mode 100755
index 0000000..91d8571
--- /dev/null
+++ b/slides/slidy/help/help.html.pl
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"" xml:lang="pl" lang="pl">
+<head>
+ <!-- translated by Krzysztof Kotowicz - koto@webworkers.pl -->
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Slidy - pomoc</title>
+ <style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1><span lang="en">Slidy</span> - pomoc</h1>
+
+<p>PrezentacjÄ… steruje siÄ™ tak samo, jak w Powerpoincie.
+Aby przejść do następnego slajdu, kliknij w dowolnym miejscu prezentacji myszą
+lub naciśnij spację. Możesz też poruszać się w przód / tył używając klawiszy
+kursora (lewo / prawo) lub klawiszy Pg Up / Pg Dn. Rozmiar czcionki jest
+dobierany automatycznie tak, żeby mieścił się w obszarze przeglądarki,
+ale możesz także dostosować go ręcznie naciskając klawisze "S", aby pomniejszyć
+tekst i "B", aby go powiększyć. Możesz do tego celu także użyć klawiszy "&lt;"
+ i "&gt;". Użyj klawisza "F" aby
+ ukryć / pokazać dolny pasek statusu. Klawisz "K" włącza / wyłącza tryb przechodzenia
+ do następnego slajdu po kliknięciu myszką. Możesz użyć klawisza "C", żeby pokazać
+ spis treści i dowolnego innego, żeby go ukryć. Klawisz
+"F11" włącza tryb pełnoekranowy przeglądarki. Pamiętaj, że nie wszystkie klawisze
+są obsługiwane we wszystkich przeglądarkach, gdyż niektóre z nich rezerwują
+konkretne klawisze do własnych celów, wszystko to zależy od używanej przeglądarki.</p>
+
+<p>Jeśli używasz Firefoxa, zwróć uwagę na rozszerzenie <a
+href="http://www.krickelkrackel.de/autohide/">autohide</a>, dzięki któremu
+możesz ukryć paski narzędziowe w trybie pełnoekranowym (F11).</p>
+
+<p>Jeśli chcesz dowiedzieć się, w jaki sposób działa Slidy, obejrzyj źródło strony prezentacji, żeby
+zobaczyć użyty XHTML lub zapoznaj się z <a
+href="http://www.w3.org/Talks/Tools/Slidy/">prezentacją działania</a>, która omawia
+wszystkie dodatkowe funkcje. Każdy slajd jest reprezentowany przez element div o klasie "slide".
+Pozycjonowanie CSS i użycie procentowych szerokości obrazków zapewni, że
+Twoje slajdy będą poprawnie wyświetlane w każdej skali.
+Zawartości slajdu, które mają być stopniowo odsłaniane oznacz klasą "incremental".
+Powiązany arkusz stylów CSS i skrypt zostały stworzone jako sieciowa
+alternatywa dla komercyjnych narzędzi prezentacyjnych. Całość została
+przetestowana na różnorodnych współczesnych przeglądarkach.
+Na etapie tworzenia jest aplikacja do zintegrowanego tworzenia i edycji prezentacji.
+Wszystkie komentarze prosimy kierować do <a href="http://www.w3.org/People/Raggett/">Dave'a
+Raggetta</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.</p>
+
+<p><em>Zachęcamy do używania arkuszy stylów, skryptów i pliku pomocy na warunkach licencyjnych dotyczących <a href="http://www.w3.org/Consortium/Legal/copyright-documents">dokumentów</a>
+i <a href="http://www.w3.org/Consortium/Legal/copyright-software">oprogramowania</a> W3C</em></p>
+
+<button id="back" onclick="history.go(-1)">Powróć do pokazu slajdów</button>
+
+<hr>
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body></html>
diff --git a/slides/slidy/help/help.html.pt-br b/slides/slidy/help/help.html.pt-br
new file mode 100755
index 0000000..c2aee81
--- /dev/null
+++ b/slides/slidy/help/help.html.pt-br
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-US">
+<head>
+ <title>Slide Show Help</title><style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Ajuda do Slide Show</h1>
+
+<p>Este slide show pode ser tocado do jeito do Power Point.
+Para avançar ao próximo eslaide, clique em qualquer ponto
+da página com o botão direito do mouse. Ou então use a
+barra de espaços. Também se pode movimentar para frente ou
+para trás com as teclas do cursor -- setinhas para a
+direita, para a esquerda, para cima e para baixo. E ainda
+com as teclas Page Up e Page Down. O tamanho da fonte é
+automaticamente ajustado à largura da janela do navegador,
+mas esse ajuste pode ser manual, usando as teclas "S"
+(de "smaller") para diminuir o tamanho, e "B" (de "bigger")
+para aumentar. Igualmente se pode usar as teclas "&lt;" e
+"&gt;". Use
+a tecla "F" para alternar entre desativada e ativada a
+linha de status no rodapé. A tecla "K" alterna o uso do
+clique do mouse para avançar ao próximo eslaide. A tecla
+"C" mostra a tabela de conteúdos, que será novamente
+ocultada apertando-se qualquer tecla. Use a tecla "F11"
+para alternar o modo de tela cheia do navegador. Aperte
+"H" (de "Help") para abrir esta página de Ajuda. Note que
+alguns navegadores reservam algumas dessas teclas para
+outras funções. Assim, experimente no seu navegador para
+ver se esse é o seu caso.</p>
+
+<p>Usuários do Firefox podem querer a extensão <a
+href="http://www.krickelkrackel.de/autohide/">autoocultar</a>
+para esconder as barras de ferramentas quando entrarem em tela cheia
+com a tecla F11.</p>
+
+<p>Se quiser ver como funciona o Slidy, use o View Source para
+visualizar a marcação XHTML, ou leia esta <a
+href="http://www.w3.org/Talks/Tools/Slidy/">explanação mais longa</a>,
+que também contém funcionalidades adicionais. Cada eslaide é
+marcado como um div element com
+classe="slide". Posicionamentos e larguras em porcentual de CSS
+podem ser usados para assegurar que os eslaides com rica
+ilustração tenham escalabilidade de acordo com o tamanho da janela.
+Já o conteúdo a ser revelado incrementalmente pode receber a
+marcação com a classe="incremental".
+A folha de estilos vinculados e os scripts foram desenvolvidos
+como uma alternativa baseada em web às ferramentas proprietárias
+de apresentação, e testados em diversos navegadores recentes.
+Suporte à edição integrada ainda está em desenvolvimento. Mande
+seus comentários para <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+Achando que o Slidy é útil, V. talvez possa considerar a
+possibilidade de se tornar um
+<a href="http://www.w3.org/Consortium/sup">Apoiador do W3C</a>.</p>
+
+<p><em>Fique à vontade para usar as folhas de estilo, os scripts
+e o arquivo de ajuda do show de eslaides que se encontram sob as
+regras de
+<a href="http://www.w3.org/Consortium/Legal/copyright-documents">
+uso de documentação</a>
+e <a href="http://www.w3.org/Consortium/Legal/copyright-software">
+licenciamento de software</a>do W3C -- Consórcio da World Wide
+Web.</em></p>
+
+<button id="back" onclick="history.go(-1)">Voltar a exibir eslaides</button>
+
+<hr />
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.pt_br b/slides/slidy/help/help.html.pt_br
new file mode 100755
index 0000000..c2aee81
--- /dev/null
+++ b/slides/slidy/help/help.html.pt_br
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-US">
+<head>
+ <title>Slide Show Help</title><style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Ajuda do Slide Show</h1>
+
+<p>Este slide show pode ser tocado do jeito do Power Point.
+Para avançar ao próximo eslaide, clique em qualquer ponto
+da página com o botão direito do mouse. Ou então use a
+barra de espaços. Também se pode movimentar para frente ou
+para trás com as teclas do cursor -- setinhas para a
+direita, para a esquerda, para cima e para baixo. E ainda
+com as teclas Page Up e Page Down. O tamanho da fonte é
+automaticamente ajustado à largura da janela do navegador,
+mas esse ajuste pode ser manual, usando as teclas "S"
+(de "smaller") para diminuir o tamanho, e "B" (de "bigger")
+para aumentar. Igualmente se pode usar as teclas "&lt;" e
+"&gt;". Use
+a tecla "F" para alternar entre desativada e ativada a
+linha de status no rodapé. A tecla "K" alterna o uso do
+clique do mouse para avançar ao próximo eslaide. A tecla
+"C" mostra a tabela de conteúdos, que será novamente
+ocultada apertando-se qualquer tecla. Use a tecla "F11"
+para alternar o modo de tela cheia do navegador. Aperte
+"H" (de "Help") para abrir esta página de Ajuda. Note que
+alguns navegadores reservam algumas dessas teclas para
+outras funções. Assim, experimente no seu navegador para
+ver se esse é o seu caso.</p>
+
+<p>Usuários do Firefox podem querer a extensão <a
+href="http://www.krickelkrackel.de/autohide/">autoocultar</a>
+para esconder as barras de ferramentas quando entrarem em tela cheia
+com a tecla F11.</p>
+
+<p>Se quiser ver como funciona o Slidy, use o View Source para
+visualizar a marcação XHTML, ou leia esta <a
+href="http://www.w3.org/Talks/Tools/Slidy/">explanação mais longa</a>,
+que também contém funcionalidades adicionais. Cada eslaide é
+marcado como um div element com
+classe="slide". Posicionamentos e larguras em porcentual de CSS
+podem ser usados para assegurar que os eslaides com rica
+ilustração tenham escalabilidade de acordo com o tamanho da janela.
+Já o conteúdo a ser revelado incrementalmente pode receber a
+marcação com a classe="incremental".
+A folha de estilos vinculados e os scripts foram desenvolvidos
+como uma alternativa baseada em web às ferramentas proprietárias
+de apresentação, e testados em diversos navegadores recentes.
+Suporte à edição integrada ainda está em desenvolvimento. Mande
+seus comentários para <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+Achando que o Slidy é útil, V. talvez possa considerar a
+possibilidade de se tornar um
+<a href="http://www.w3.org/Consortium/sup">Apoiador do W3C</a>.</p>
+
+<p><em>Fique à vontade para usar as folhas de estilo, os scripts
+e o arquivo de ajuda do show de eslaides que se encontram sob as
+regras de
+<a href="http://www.w3.org/Consortium/Legal/copyright-documents">
+uso de documentação</a>
+e <a href="http://www.w3.org/Consortium/Legal/copyright-software">
+licenciamento de software</a>do W3C -- Consórcio da World Wide
+Web.</em></p>
+
+<button id="back" onclick="history.go(-1)">Voltar a exibir eslaides</button>
+
+<hr />
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/help/help.html.sv b/slides/slidy/help/help.html.sv
new file mode 100755
index 0000000..3d019a7
--- /dev/null
+++ b/slides/slidy/help/help.html.sv
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv" lang="sv"><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+
+
+
+ <title>Hj&auml;lpsida f&ouml;r presentationer</title><style type="text/css"><!--
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller } -->
+ </style>
+ <script type="text/javascript"><!--
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ // --> </script>
+</head><body>
+<h1>Hj&auml;lpsida f&ouml;r presentationer</h1>
+
+<p align="justify">Denna presentation kan anv&auml;ndas p&aring; liknande s&auml;tt som Power Point.
+F&ouml;r att bl&auml;ddra till n&auml;sta sida g&aring;r det att trycka p&aring; mellanslagstangenten eller klicka med musens
+v&auml;stra knapp s&aring; gott som var som helst p&aring; sidan. Bl&auml;ddra fram&aring;t och
+bak&aring;t med h&ouml;ger- respektive v&auml;nsterpiltangenterna eller tangenterna &raquo;Pg&nbsp;Dn&raquo; respektive
+&raquo;Pg&nbsp;Up&raquo;. Textens storlek anpassas automatiskt efter webbl&auml;sarens
+f&ouml;nsterbredd, men den g&aring;r &auml;ven att justera manuellt med
+tangenterna &raquo;S&raquo; och &raquo;B&raquo; f&ouml;r att f&ouml;rminska respektive f&ouml;rstora texten. Alternativt kan
+tangenterna &raquo;&lt;&raquo; respektive &raquo;&gt;&raquo; anv&auml;ndas. Tangenten
+&raquo;F&raquo; anv&auml;nds f&ouml;r att visa&nbsp;/ d&ouml;lja statusraden l&auml;ngst ner i f&ouml;nstret. Tangenten &raquo;K&raquo;
+kopplar p&aring;&nbsp;/ av m&ouml;jligheten att klicka med musen f&ouml;r att bl&auml;ddra till n&auml;sta sida. Tangenten
+&raquo;C&raquo; anv&auml;nds f&ouml;r att visa inneh&aring;llsf&ouml;rteckningen och en tryckning p&aring; vilken annan tangent som
+helst d&ouml;ljer den. En tryckning p&aring; tangenten &raquo;H&raquo; visar denna hj&auml;lpsida. Tangenten &raquo;F11&raquo;
+v&auml;xlar mellan fullsk&auml;rmsvisning och visning i webbl&auml;sarens f&ouml;nster. Observera att vissa webbl&auml;sare kan
+ha reserverat n&aring;gra av dessa tangenttryckningar f&ouml;r andra funktioner; detta varierar mellan olika webbl&auml;sare.</p>
+
+<p align="justify"><span lang="en">Firefox</span>anv&auml;ndare kan vid behov installera <a href="http://www.krickelkrackel.de/autohide" lang="en" hreflang="en">autohide</a>
+f&ouml;r att verktygsf&auml;lten skall d&ouml;ljas vid &ouml;verg&aring;ng till fullsk&auml;rmsvisning med F11.</p>
+
+<p align="justify">F&ouml;r att se hur <em lang="en">Slidy</em> fungerar, titta p&aring; XHTML-koden genom att v&auml;lja &raquo;Visa
+k&auml;lla&raquo; (eller liknande) i webbl&auml;sarens meny eller l&auml;s f&ouml;ljande <a href="http://www.w3.org/Talks/Tools/Slidy/">l&auml;ngre
+beskrivning</a>, d&auml;r &auml;ven ytterligare finesser beskrivs. Varje sida &auml;r markerad som
+<span lang="en">div</span>-element med attributet <code lang="en">class=&quot;slide&quot;</code>. CSS-positionering och procentuell bredd
+kan anv&auml;ndas f&ouml;r att placera bilderna i r&auml;tt skala i f&ouml;rh&aring;llande till
+webbl&auml;sarens f&ouml;nsterstorlek. Det som skall visas inkrementiellt
+markeras med <code lang="en">class=&quot;incremental&quot;</code>. L&auml;nkar h&auml;nvisar till n&aring;gra skript och stilmallar
+som har testats med en m&auml;ngd nutida webbl&auml;sare och bildar ett webbaserat alternativ till propriet&auml;ra
+presentationsprogram. St&ouml;d f&ouml;r integrerad editering h&aring;ller p&aring; att utvecklas. Skicka g&auml;rna
+kommentarer till <a href="http://www.w3.org/People/Raggett/" lang="en" hreflang="en">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+Om du finner <em lang="en">Slidy</em> anv&auml;ndbar kan du &ouml;verv&auml;ga att bli
+<a href="http://www.w3.org/Consortium/sup" lang="en" hreflang="en">W3C Supporter</a>.</p>
+
+<p><em>V&auml;lkommen att anv&auml;nda presentationens stilmallar, skript och hj&auml;lpfiler enligt reglerna
+f&ouml;r W3C:s <a href="http://www.w3.org/Consortium/Legal/copyright-documents" lang="en" hreflang="en">document use</a>
+och <a href="http://www.w3.org/Consortium/Legal/copyright-software" lang="en" hreflang="en">software
+licensing</a>!</em></p>
+
+<button id="back" onclick="history.go(-1)">Tillbaka till presentationen</button>
+
+<hr />
+
+<p class="copyright" lang="en"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+<a href="http://www.w3.org/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&copy;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body></html>
diff --git a/slides/slidy/help/help.pt-br.html b/slides/slidy/help/help.pt-br.html
new file mode 100755
index 0000000..72d9891
--- /dev/null
+++ b/slides/slidy/help/help.pt-br.html
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-US">
+<head>
+ <title>Slide Show Help</title><style type="text/css">
+ body {
+ font-family: sans-serif;
+ margin: 10%;
+ }
+ .copyright { font-size: smaller }
+ </style>
+ <script type="text/javascript">
+ window.onload = load;
+ function load()
+ {
+ var back = document.getElementById("back");
+ back.focus();
+ }
+ </script>
+</head>
+<body>
+<h1>Ajuda do Slide Show</h1>
+
+<p>Este slide show pode ser tocado do jeito do Power Point.
+Para avançar ao próximo eslaide, clique em qualquer ponto
+da página com o botão direito do mouse. Ou então use a
+barra de espaços. Também se pode movimentar para frente ou
+para trás com as teclas do cursor -- setinhas para a
+direita, para a esquerda, para cima e para baixo. E ainda
+com as teclas Page Up e Page Down. O tamanho da fonte é
+automaticamente ajustado à largura da janela do navegador,
+mas esse ajuste pode ser manual, usando as teclas "S"
+(de "smaller") para diminuir o tamanho, e "B" (de "bigger")
+para aumentar. Igualmente se pode usar as teclas "&lt;" e
+"&gt;". Use
+a tecla "F" para alternar entre desativada e ativada a
+linha de status no rodapé. A tecla "K" alterna o uso do
+clique do mouse para avançar ao próximo eslaide. A tecla
+"C" mostra a tabela de conteúdos, que será novamente
+ocultada apertando-se qualquer tecla. Use a tecla "F11"
+para alternar o modo de tela cheia do navegador. Aperte
+"H" (de "Help") para abrir esta página de Ajuda. Note que
+alguns navegadores reservam algumas dessas teclas para
+outras funções. Assim, experimente no seu navegador para
+ver se esse é o seu caso.</p>
+
+<p>Usuários do Firefox podem querer a extensão <a
+href="http://extensionroom.mozdev.org/more-info/autohide">autoocultar</a>
+para esconder as barras de ferramentas quando entrarem em tela cheia
+com a tecla F11.</p>
+
+<p>Se quiser ver como funciona o Slidy, use o View Source para
+visualizar a marcação XHTML, ou leia esta <a
+href="http://www.w3.org/Talks/Tools/Slidy/">explanação mais longa</a>,
+que também contém funcionalidades adicionais. Cada eslaide é
+marcado como um div element com
+classe="slide". Posicionamentos e larguras em porcentual de CSS
+podem ser usados para assegurar que os eslaides com rica
+ilustração tenham escalabilidade de acordo com o tamanho da janela.
+Já o conteúdo a ser revelado incrementalmente pode receber a
+marcação com a classe="incremental".
+A folha de estilos vinculados e os scripts foram desenvolvidos
+como uma alternativa baseada em web às ferramentas proprietárias
+de apresentação, e testados em diversos navegadores recentes.
+Suporte à edição integrada ainda está em desenvolvimento. Mande
+seus comentários para <a href="http://www.w3.org/People/Raggett/">Dave
+Raggett</a> &lt;<a href="mailto:dsr@w3.org">dsr@w3.org</a>&gt;.
+Achando que o Slidy é útil, V. talvez possa considerar a
+possibilidade de se tornar um
+<a href="http://www.w3.org/Consortium/sup">Apoiador do W3C</a>.</p>
+
+<p><em>Fique à vontade para usar as folhas de estilo, os scripts
+e o arquivo de ajuda do show de eslaides que se encontram sob as
+regras de
+<a href="http://www.w3.org/Consortium/Legal/copyright-documents">
+uso de documentação</a>
+e <a href="http://www.w3.org/Consortium/Legal/copyright-software">
+licenciamento de software</a>do W3C -- Consórcio da World Wide
+Web.</em></p>
+
+<button id="back" onclick="history.go(-1)">Voltar a exibir eslaides</button>
+
+<hr />
+
+<p class="copyright"><a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2005
+<a href="/" shape="rect"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+<a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+<a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software
+licensing</a> rules apply.</p>
+</body>
+</html>
diff --git a/slides/slidy/scripts/.htaccess b/slides/slidy/scripts/.htaccess
new file mode 100755
index 0000000..d395348
--- /dev/null
+++ b/slides/slidy/scripts/.htaccess
@@ -0,0 +1,28 @@
+Options +MultiViews
+LanguagePriority en
+AddLanguage pt-br .pt-br
+
+<Files ~ "*.html">
+
+ForceType 'text/html; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.xhtml">
+
+ForceType 'application/xhtml+xml; charset=utf-8'
+
+</Files>
+
+<Files ~ *.css">
+
+ForceType 'text/css; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.js">
+
+ForceType 'text/javascript; charset=utf-8'
+
+</Files>
+mkdir
diff --git a/slides/slidy/scripts/slidy.js b/slides/slidy/scripts/slidy.js
new file mode 100755
index 0000000..25b6e76
--- /dev/null
+++ b/slides/slidy/scripts/slidy.js
@@ -0,0 +1,2974 @@
+/* slidy.js
+
+ Copyright (c) 2005-2011 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+
+ Defines single name "w3c_slidy" in global namespace
+ Adds event handlers without trampling on any others
+*/
+
+// the slidy object implementation
+var w3c_slidy = {
+ // classify which kind of browser we're running under
+ ns_pos: (typeof window.pageYOffset!='undefined'),
+ khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
+ opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
+ ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
+ iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
+ android: ((navigator.userAgent).indexOf("Android") >= 0 ? true : false),
+ ie: (typeof document.all != "undefined" && !this.opera),
+ ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
+ ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
+ ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
+ ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
+
+ // data for swipe and double tap detection on touch screens
+ last_tap: 0,
+ prev_tap: 0,
+ start_x: 0,
+ start_y: 0,
+ delta_x: 0,
+ delta_y: 0,
+
+ // are we running as XHTML? (doesn't work on Opera)
+ is_xhtml: /xml/.test(document.contentType),
+
+ slide_number: 0, // integer slide count: 0, 1, 2, ...
+ slide_number_element: null, // element containing slide number
+ slides: [], // set to array of slide div's
+ notes: [], // set to array of handout div's
+ backgrounds: [], // set to array of background div's
+ toolbar: null, // element containing toolbar
+ title: null, // document title
+ last_shown: null, // last incrementally shown item
+ eos: null, // span element for end of slide indicator
+ toc: null, // table of contents
+ outline: null, // outline element with the focus
+ selected_text_len: 0, // length of drag selection on document
+ view_all: 0, // 1 to view all slides + handouts
+ want_toolbar: true, // user preference to show/hide toolbar
+ mouse_click_enabled: true, // enables left click for next slide
+ scroll_hack: 0, // IE work around for position: fixed
+ disable_slide_click: false, // used by clicked anchors
+
+ lang: "en", // updated to language specified by html file
+
+ help_anchor: null, // used for keyboard focus hack in showToolbar()
+ help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
+ help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
+ "or Pg Up and Pg Dn. Use S and B to change font size.",
+
+ size_index: 0,
+ size_adjustment: 0,
+ sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
+ "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
+
+ // needed for efficient resizing
+ last_width: 0,
+ last_height: 0,
+
+
+ // Needed for cross browser support for relative width/height on
+ // object elements. The work around is to save width/height attributes
+ // and then to recompute absolute width/height dimensions on resizing
+ objects: [],
+
+ // attach initialiation event handlers
+ set_up: function () {
+ var init = function() { w3c_slidy.init(); };
+ if (typeof window.addEventListener != "undefined")
+ window.addEventListener("load", init, false);
+ else
+ window.attachEvent("onload", init);
+ },
+
+ hide_slides: function () {
+ if (document.body && !w3c_slidy.initialized)
+ document.body.style.visibility = "hidden";
+ else
+ setTimeout(w3c_slidy.hide_slides, 50);
+ },
+
+ // hack to persuade IE to compute correct document height
+ // as needed for simulating fixed positioning of toolbar
+ ie_hack: function () {
+ window.resizeBy(0,-1);
+ window.resizeBy(0, 1);
+ },
+
+ init: function () {
+ //alert("slidy starting test 10");
+ document.body.style.visibility = "visible";
+ this.init_localization();
+ this.add_toolbar();
+ this.wrap_implicit_slides();
+ this.collect_slides();
+ this.collect_notes();
+ this.collect_backgrounds();
+ this.objects = document.body.getElementsByTagName("object");
+ this.patch_anchors();
+ this.slide_number = this.find_slide_number(location.href);
+ window.offscreenbuffering = true;
+ this.size_adjustment = this.find_size_adjust();
+ this.time_left = this.find_duration();
+ this.hide_image_toolbar(); // suppress IE image toolbar popup
+ this.init_outliner(); // activate fold/unfold support
+ this.title = document.title;
+ this.keyboardless = (this.ipad||this.iphone||this.android);
+
+ if (this.keyboardless)
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ this.want_toolbar = 0;
+ }
+
+ // work around for opera bug
+ this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
+
+ if (this.slides.length > 0)
+ {
+ var slide = this.slides[this.slide_number];
+
+ if (this.slide_number > 0)
+ {
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ this.set_eos_status(true);
+ }
+ else
+ {
+ this.last_shown = null;
+ this.set_visibility_all_incremental("hidden");
+ this.set_eos_status(!this.next_incremental_item(this.last_shown));
+ }
+
+ this.set_location();
+ this.add_class(this.slides[0], "first-slide");
+ w3c_slidy.show_slide(slide);
+ }
+
+ this.toc = this.table_of_contents();
+
+ this.add_initial_prompt();
+
+ // bind event handlers without interfering with custom page scripts
+ // Tap events behave too weirdly to support clicks reliably on
+ // iPhone and iPad, so exclude these from click handler
+
+ if (!this.keyboardless)
+ this.add_listener(document.body, "click", this.mouse_button_click);
+
+ this.add_listener(document, "keydown", this.key_down);
+ this.add_listener(document, "keypress", this.key_press);
+ this.add_listener(window, "resize", this.resized);
+ this.add_listener(window, "scroll", this.scrolled);
+ this.add_listener(window, "unload", this.unloaded);
+
+ this.add_listener(document, "touchstart", this.touchstart);
+ this.add_listener(document, "touchmove", this.touchmove);
+ this.add_listener(document, "touchend", this.touchend);
+
+ // this seems to be a debugging hack
+ //if (!document.body.onclick)
+ // document.body.onclick = function () { };
+
+ this.single_slide_view();
+
+ //this.set_location();
+
+ this.resized();
+
+ if (this.ie7)
+ setTimeout(w3c_slidy.ie_hack, 100);
+
+ this.show_toolbar();
+
+ // for back button detection
+ setInterval(function () { w3c_slidy.check_location(); }, 200);
+ w3c_slidy.initialized = true;
+ },
+
+ // create div element with links to each slide
+ table_of_contents: function () {
+ var toc = this.create_element("div");
+ this.add_class(toc, "slidy_toc hidden");
+ //toc.setAttribute("tabindex", "0");
+
+ var heading = this.create_element("div");
+ this.add_class(heading, "toc-heading");
+ heading.innerHTML = this.localize("Table of Contents");
+
+ toc.appendChild(heading);
+ var previous = null;
+
+ for (var i = 0; i < this.slides.length; ++i)
+ {
+ var title = this.has_class(this.slides[i], "title");
+ var num = document.createTextNode((i + 1) + ". ");
+
+ toc.appendChild(num);
+
+ var a = this.create_element("a");
+ a.setAttribute("href", "#(" + (i+1) + ")");
+
+ if (title)
+ this.add_class(a, "titleslide");
+
+ var name = document.createTextNode(this.slide_name(i));
+ a.appendChild(name);
+ a.onclick = w3c_slidy.toc_click;
+ a.onkeydown = w3c_slidy.toc_key_down;
+ a.previous = previous;
+
+ if (previous)
+ previous.next = a;
+
+ toc.appendChild(a);
+
+ if (i == 0)
+ toc.first = a;
+
+ if (i < this.slides.length - 1)
+ {
+ var br = this.create_element("br");
+ toc.appendChild(br);
+ }
+
+ previous = a;
+ }
+
+ toc.focus = function () {
+ if (this.first)
+ this.first.focus();
+ }
+
+ toc.onmouseup = w3c_slidy.mouse_button_up;
+
+ toc.onclick = function (e) {
+ e||(e=window.event);
+
+ if (w3c_slidy.selected_text_len <= 0)
+ w3c_slidy.hide_table_of_contents(true);
+
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ };
+
+ document.body.insertBefore(toc, document.body.firstChild);
+ return toc;
+ },
+
+ is_shown_toc: function () {
+ return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
+ },
+
+ show_table_of_contents: function () {
+ w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
+ var toc = w3c_slidy.toc;
+ toc.focus();
+
+ if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
+ setTimeout(w3c_slidy.ie_hack, 100);
+ },
+
+ hide_table_of_contents: function (focus) {
+ w3c_slidy.add_class(w3c_slidy.toc, "hidden");
+
+ if (focus && !w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ },
+
+ toggle_table_of_contents: function () {
+ if (w3c_slidy.is_shown_toc())
+ w3c_slidy.hide_table_of_contents(true);
+ else
+ w3c_slidy.show_table_of_contents();
+ },
+
+ // called on clicking toc entry
+ toc_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = w3c_slidy.get_target(e);
+
+ if (target && target.nodeType == 1)
+ {
+ var uri = target.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(true);
+ if (w3c_slidy.ie7) w3c_slidy.ie_hack();
+ w3c_slidy.stop_propagation(e);
+ return w3c_slidy.cancel(e);
+ },
+
+ // called onkeydown for toc entry
+ toc_key_down: function (event) {
+ var key;
+
+ if (!event)
+ var event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey)
+ return true;
+
+ if (key == 13)
+ {
+ var uri = this.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(true);
+
+ if (self.ie7)
+ w3c_slidy.ie_hack();
+
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 40 && this.next)
+ {
+ this.next.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 38 && this.previous)
+ {
+ this.previous.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ return true;
+ },
+
+ touchstart: function (e)
+ {
+ //e.preventDefault();
+ this.prev_tap = this.last_tap;
+ this.last_tap = (new Date).getTime();
+
+ var tap_delay = this.last_tap - this.prev_tap;
+
+ if (tap_delay <= 200)
+ {
+ // double tap
+ }
+
+ var touch = e.touches[0];
+
+ this.start_x = touch.pageX;
+ this.start_y = touch.pageY;
+ this.delta_x = this.delta_y = 0;
+ },
+
+ touchmove: function (e)
+ {
+ //e.preventDefault();
+ var touch = e.touches[0];
+ this.delta_x = touch.pageX - this.start_x;
+ this.delta_y = touch.pageY - this.start_y;
+ },
+
+ touchend: function (e)
+ {
+ //e.preventDefault();
+ var delay = (new Date).getTime() - this.last_tap;
+ var dx = this.delta_x;
+ var dy = this.delta_y;
+ var abs_dx = Math.abs(dx);
+ var abs_dy = Math.abs(dy);
+
+ if (delay < 500 && (abs_dx > 100 || abs_dy > 100))
+ {
+ if (abs_dx > 0.5 * abs_dy)
+ {
+ if (dx < 0)
+ w3c_slidy.next_slide(true);
+ else
+ w3c_slidy.previous_slide(true);
+ }
+ else if (abs_dy > 2 * abs_dx)
+ {
+ w3c_slidy.toggle_table_of_contents();
+ }
+ }
+ },
+
+ // ### OBSOLETE ###
+ before_print: function () {
+ this.show_all_slides();
+ this.hide_toolbar();
+ alert("before print");
+ },
+
+ // ### OBSOLETE ###
+ after_print: function () {
+ if (!this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ }
+ alert("after print");
+ },
+
+ // ### OBSOLETE ###
+ print_slides: function () {
+ this.before_print();
+ window.print();
+ this.after_print();
+ },
+
+ // ### OBSOLETE ?? ###
+ toggle_view: function () {
+ if (this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ this.view_all = 0;
+ }
+ else
+ {
+ this.show_all_slides();
+ this.hide_toolbar();
+ this.view_all = 1;
+ }
+ },
+
+ // prepare for printing ### OBSOLETE ###
+ show_all_slides: function () {
+ this.remove_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ },
+
+ // restore after printing ### OBSOLETE ###
+ single_slide_view: function () {
+ this.add_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ },
+
+ // suppress IE's image toolbar pop up
+ hide_image_toolbar: function () {
+ if (!this.ns_pos)
+ {
+ var images = document.getElementsByTagName("IMG");
+
+ for (var i = 0; i < images.length; ++i)
+ images[i].setAttribute("galleryimg", "no");
+ }
+ },
+
+ unloaded: function (e) {
+ //alert("unloaded");
+ },
+
+ // Safari and Konqueror don't yet support getComputedStyle()
+ // and they always reload page when location.href is updated
+ is_KHTML: function () {
+ var agent = navigator.userAgent;
+ return (agent.indexOf("KHTML") >= 0 ? true : false);
+ },
+
+ // find slide name from first h1 element
+ // default to document title + slide number
+ slide_name: function (index) {
+ var name = null;
+ var slide = this.slides[index];
+
+ var heading = this.find_heading(slide);
+
+ if (heading)
+ name = this.extract_text(heading);
+
+ if (!name)
+ name = this.title + "(" + (index + 1) + ")";
+
+ name.replace(/\&/g, "&amp;");
+ name.replace(/\</g, "&lt;");
+ name.replace(/\>/g, "&gt;");
+
+ return name;
+ },
+
+ // find first h1 element in DOM tree
+ find_heading: function (node) {
+ if (!node || node.nodeType != 1)
+ return null;
+
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ return node;
+
+ var child = node.firstChild;
+
+ while (child)
+ {
+ node = this.find_heading(child);
+
+ if (node)
+ return node;
+
+ child = child.nextSibling;
+ }
+
+ return null;
+ },
+
+ // recursively extract text from DOM tree
+ extract_text: function (node) {
+ if (!node)
+ return "";
+
+ // text nodes
+ if (node.nodeType == 3)
+ return node.nodeValue;
+
+ // elements
+ if (node.nodeType == 1)
+ {
+ node = node.firstChild;
+ var text = "";
+
+ while (node)
+ {
+ text = text + this.extract_text(node);
+ node = node.nextSibling;
+ }
+
+ return text;
+ }
+
+ return "";
+ },
+
+ // find copyright text from meta element
+ find_copyright: function () {
+ var name, content;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "copyright")
+ return content;
+ }
+
+ return null;
+ },
+
+ find_size_adjust: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "font-size-adjustment")
+ return 1 * content;
+ }
+
+ return 1;
+ },
+
+ // <meta name="duration" content="20" /> for 20 minutes
+ find_duration: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "duration")
+ return 60000 * content;
+ }
+
+ return null;
+ },
+
+ replace_by_non_breaking_space: function (str) {
+ for (var i = 0; i < str.length; ++i)
+ str[i] = 160;
+ },
+
+ // ### CHECK ME ### is use of "li" okay for text/html?
+ // for XHTML do we also need to specify namespace?
+ init_outliner: function () {
+ var items = document.getElementsByTagName("li");
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ var target = items[i];
+
+ if (!this.has_class(target.parentNode, "outline"))
+ continue;
+
+ target.onclick = this.outline_click;
+/* ### more work needed for IE6
+ if (!this.ns_pos)
+ {
+ target.onmouseover = this.hover_outline;
+ target.onmouseout = this.unhover_outline;
+ }
+*/
+ if (this.foldable(target))
+ {
+ target.foldable = true;
+ target.onfocus = function () {w3c_slidy.outline = this;};
+ target.onblur = function () {w3c_slidy.outline = null;};
+
+ if (!target.getAttribute("tabindex"))
+ target.setAttribute("tabindex", "0");
+
+ if (this.has_class(target, "expand"))
+ this.unfold(target);
+ else
+ this.fold(target);
+ }
+ else
+ {
+ this.add_class(target, "nofold");
+ target.visible = true;
+ target.foldable = false;
+ }
+ }
+ },
+
+ foldable: function (item) {
+ if (!item || item.nodeType != 1)
+ return false;
+
+ var node = item.firstChild;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node))
+ return true;
+
+ node = node.nextSibling;
+ }
+
+ return false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ fold: function (item) {
+ if (item)
+ {
+ this.remove_class(item, "unfolded");
+ this.add_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.add_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ unfold: function (item) {
+ if (item)
+ {
+ this.add_class(item, "unfolded");
+ this.remove_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.remove_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = true;
+ },
+
+ outline_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var rightclick = false;
+ var target = w3c_slidy.get_target(e);
+
+ while (target && target.visible == undefined)
+ target = target.parentNode;
+
+ if (!target)
+ return true;
+
+ if (e.which)
+ rightclick = (e.which == 3);
+ else if (e.button)
+ rightclick = (e.button == 2);
+
+ if (!rightclick && target.visible != undefined)
+ {
+ if (target.foldable)
+ {
+ if (target.visible)
+ w3c_slidy.fold(target);
+ else
+ w3c_slidy.unfold(target);
+ }
+
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ }
+
+ return false;
+ },
+
+ add_initial_prompt: function () {
+ var prompt = this.create_element("div");
+ prompt.setAttribute("class", "initial_prompt");
+
+ var p1 = this.create_element("p");
+ prompt.appendChild(p1);
+ p1.setAttribute("class", "help");
+
+ if (this.keyboardless)
+ p1.innerHTML = "swipe left to move to next slide";
+ else
+ p1.innerHTML = "Space, Right Arrow or swipe left to move to " +
+ "next slide, click help below for more details";
+
+ this.add_listener(prompt, "click", function (e) {
+ document.body.removeChild(prompt);
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ });
+
+ document.body.appendChild(prompt);
+ this.initial_prompt = prompt;
+ setTimeout(function() {document.body.removeChild(prompt);}, 5000);
+ },
+
+ add_toolbar: function () {
+ var counter, page;
+
+ this.toolbar = this.create_element("div");
+ this.toolbar.setAttribute("class", "toolbar");
+
+ // a reasonably behaved browser
+ if (this.ns_pos || !this.ie6)
+ {
+ var right = this.create_element("div");
+ right.setAttribute("style", "float: right; text-align: right");
+
+ counter = this.create_element("span")
+ counter.innerHTML = this.localize("slide") + " n/m";
+ right.appendChild(counter);
+ this.toolbar.appendChild(right);
+
+ var left = this.create_element("div");
+ left.setAttribute("style", "text-align: left");
+
+ // global end of slide indicator
+ this.eos = this.create_element("span");
+ this.eos.innerHTML = "* ";
+ left.appendChild(this.eos);
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.localize(this.help_text));
+ help.innerHTML = this.localize("help?");
+ left.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ left.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
+ contents.setAttribute("title", this.localize("table of contents"));
+ contents.innerHTML = this.localize("contents?");
+ left.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ left.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.className = "copyright";
+ span.innerHTML = copyright;
+ left.appendChild(span);
+ }
+
+ this.toolbar.setAttribute("tabindex", "0");
+ this.toolbar.appendChild(left);
+ }
+ else // IE6 so need to work around its poor CSS support
+ {
+ this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
+ this.toolbar.style.zIndex = "200";
+ this.toolbar.style.width = "99.9%";
+ this.toolbar.style.height = "1.2em";
+ this.toolbar.style.top = "auto";
+ this.toolbar.style.bottom = "0";
+ this.toolbar.style.left = "0";
+ this.toolbar.style.right = "0";
+ this.toolbar.style.textAlign = "left";
+ this.toolbar.style.fontSize = "60%";
+ this.toolbar.style.color = "red";
+ this.toolbar.borderWidth = 0;
+ this.toolbar.className = "toolbar";
+ this.toolbar.style.background = "rgb(240,240,240)";
+
+ // would like to have help text left aligned
+ // and page counter right aligned, floating
+ // div's don't work, so instead use nested
+ // absolutely positioned div's.
+
+ var sp = this.create_element("span");
+ sp.innerHTML = "&nbsp;&nbsp;*&nbsp;";
+ this.toolbar.appendChild(sp);
+ this.eos = sp; // end of slide indicator
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.localize(this.help_text));
+ help.innerHTML = this.localize("help?");
+ this.toolbar.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:toggleTableOfContents()");
+ contents.setAttribute("title", this.localize("table of contents".localize));
+ contents.innerHTML = this.localize("contents?");
+ this.toolbar.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.innerHTML = copyright;
+ span.style.color = "black";
+ span.style.marginLeft = "0.5em";
+ this.toolbar.appendChild(span);
+ }
+
+ counter = this.create_element("div")
+ counter.style.position = "absolute";
+ counter.style.width = "auto"; //"20%";
+ counter.style.height = "1.2em";
+ counter.style.top = "auto";
+ counter.style.bottom = 0;
+ counter.style.right = "0";
+ counter.style.textAlign = "right";
+ counter.style.color = "red";
+ counter.style.background = "rgb(240,240,240)";
+
+ counter.innerHTML = this.localize("slide") + " n/m";
+ this.toolbar.appendChild(counter);
+ }
+
+ // ensure that click isn't passed through to the page
+ this.toolbar.onclick =
+ function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = e.target;
+
+ if (!target && e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target && target.nodeType == 3)
+ target = target.parentNode;
+
+ w3c_slidy.stop_propagation(e);
+
+ if (target && target.nodeName.toLowerCase() != "a")
+ w3c_slidy.mouse_button_click(e);
+ };
+
+ this.slide_number_element = counter;
+ this.set_eos_status(false);
+ document.body.appendChild(this.toolbar);
+ },
+
+ // wysiwyg editors make it hard to use div elements
+ // e.g. amaya loses the div when you copy and paste
+ // this function wraps div elements around implicit
+ // slides which start with an h1 element and continue
+ // up to the next heading or div element
+ wrap_implicit_slides: function () {
+ var i, heading, node, next, div;
+ var headings = document.getElementsByTagName("h1");
+
+ if (!headings)
+ return;
+
+ for (i = 0; i < headings.length; ++i)
+ {
+ heading = headings[i];
+
+ if (heading.parentNode != document.body)
+ continue;
+
+ node = heading.nextSibling;
+
+ div = document.createElement("div");
+ this.add_class(div, "slide");
+ document.body.replaceChild(div, heading);
+ div.appendChild(heading);
+
+ while (node)
+ {
+ if (node.nodeType == 1) // an element
+ {
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ break;
+
+ if (node.nodeName == "DIV" || node.nodeName == "div")
+ {
+ if (this.has_class(node, "slide"))
+ break;
+
+ if (this.has_class(node, "handout"))
+ break;
+ }
+ }
+
+ next = node.nextSibling;
+ node = document.body.removeChild(node);
+ div.appendChild(node);
+ node = next;
+ }
+ }
+ },
+
+// return new array of all slides
+ collect_slides: function () {
+ var slides = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "slide"))
+ {
+ // add slide to collection
+ slides[slides.length] = div;
+
+ // hide each slide as it is found
+ this.add_class(div, "hidden");
+
+ // add dummy <br/> at end for scrolling hack
+ var node1 = document.createElement("br");
+ div.appendChild(node1);
+ var node2 = document.createElement("br");
+ div.appendChild(node2);
+ }
+ else if (this.has_class(div, "background"))
+ { // work around for Firefox SVG reload bug
+ // which otherwise replaces 1st SVG graphic with 2nd
+ div.style.display = "block";
+ }
+ }
+
+ this.slides = slides;
+ },
+
+ // return new array of all <div class="handout">
+ collect_notes: function () {
+ var notes = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "handout"))
+ {
+ // add note to collection
+ notes[notes.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.notes = notes;
+ },
+
+ // return new array of all <div class="background">
+ // including named backgrounds e.g. class="background titlepage"
+ collect_backgrounds: function () {
+ var backgrounds = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "background"))
+ {
+ // add background to collection
+ backgrounds[backgrounds.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.backgrounds = backgrounds;
+ },
+
+ // set click handlers on all anchors
+ patch_anchors: function () {
+ var self = w3c_slidy;
+ var handler = function (event) {
+ // compare this.href with location.href
+ // for link to another slide in this doc
+
+ if (self.page_address(this.href) == self.page_address(location.href))
+ {
+ // yes, so find new slide number
+ var newslidenum = self.find_slide_number(this.href);
+
+ if (newslidenum != self.slide_number)
+ {
+ var slide = self.slides[self.slide_number];
+ self.hide_slide(slide);
+ self.slide_number = newslidenum;
+ slide = self.slides[self.slide_number];
+ self.show_slide(slide);
+ self.set_location();
+ }
+ }
+ else
+ w3c_slidy.stop_propagation(event);
+
+// else if (this.target == null)
+// location.href = this.href;
+
+ this.blur();
+ self.disable_slide_click = true;
+ };
+
+ var anchors = document.body.getElementsByTagName("a");
+
+ for (var i = 0; i < anchors.length; ++i)
+ {
+ if (window.addEventListener)
+ anchors[i].addEventListener("click", handler, false);
+ else
+ anchors[i].attachEvent("onclick", handler);
+ }
+ },
+
+ // ### CHECK ME ### see which functions are invoked via setTimeout
+ // either directly or indirectly for use of w3c_slidy vs this
+ show_slide_number: function () {
+ var timer = w3c_slidy.get_timer();
+ w3c_slidy.slide_number_element.innerHTML = timer + w3c_slidy.localize("slide") + " " +
+ (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
+ },
+
+ // every 200mS check if the location has been changed as a
+ // result of the user activating the Back button/menu item
+ // doesn't work for Opera < 9.5
+ check_location: function () {
+ var hash = location.hash;
+
+ if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
+ w3c_slidy.goto_slide(0);
+ else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
+ {
+ var num = parseInt(location.hash.substr(2));
+
+ if (!isNaN(num))
+ w3c_slidy.goto_slide(num-1);
+ }
+
+ if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
+ {
+ w3c_slidy.show_slide_number();
+
+ if (w3c_slidy.time_left > 0)
+ w3c_slidy.time_left -= 200;
+ }
+ },
+
+ get_timer: function () {
+ var timer = "";
+ if (w3c_slidy.time_left)
+ {
+ var mins, secs;
+ secs = Math.floor(w3c_slidy.time_left/1000);
+ mins = Math.floor(secs / 60);
+ secs = secs % 60;
+ timer = (mins ? mins+"m" : "") + secs + "s ";
+ }
+
+ return timer;
+ },
+
+ // this doesn't push location onto history stack for IE
+ // for which a hidden iframe hack is needed: load page into
+ // the iframe with script that set's parent's location.hash
+ // but that won't work for standalone use unless we can
+ // create the page dynamically via a javascript: URL
+ // ### use history.pushState if available
+ set_location: function () {
+ var uri = w3c_slidy.page_address(location.href);
+ var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (w3c_slidy.slide_number >= 0)
+ uri = uri + hash;
+
+ if (typeof(history.pushState) != "undefined")
+ {
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ history.pushState(0, document.title, hash);
+ w3c_slidy.show_slide_number();
+ return;
+ }
+
+ if (w3c_slidy.ie && (w3c_slidy.ie6 || w3c_slidy.ie7))
+ w3c_slidy.push_hash(hash);
+
+ if (uri != location.href) // && !khtml
+ location.href = uri;
+
+ if (this.khtml)
+ hash = "(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (!this.ie && location.hash != hash && location.hash != "")
+ location.hash = hash;
+
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide_number();
+ },
+
+ page_address: function (uri) {
+ var i = uri.indexOf("#");
+
+ if (i < 0)
+ i = uri.indexOf("%23");
+
+ // check if anchor is entire page
+
+ if (i < 0)
+ return uri; // yes
+
+ return uri.substr(0, i);
+ },
+
+ // only used for IE6 and IE7
+ on_frame_loaded: function (hash) {
+ location.hash = hash;
+ var uri = w3c_slidy.page_address(location.href);
+ location.href = uri + hash;
+ },
+
+ // history hack with thanks to Bertrand Le Roy
+ push_hash: function (hash) {
+ if (hash == "") hash = "#(1)";
+ window.location.hash = hash;
+
+ var doc = document.getElementById("historyFrame").contentWindow.document;
+ doc.open("javascript:'<html></html>'");
+ doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
+ (hash) + "');</script></head><body>hello mum</body></html>");
+ doc.close();
+ },
+
+ // find current slide based upon location
+ // first find target anchor and then look
+ // for associated div element enclosing it
+ // finally map that to slide number
+ find_slide_number: function (uri) {
+ // first get anchor from page location
+
+ var i = uri.indexOf("#");
+
+ // check if anchor is entire page
+ if (i < 0)
+ return 0; // yes
+
+ var anchor = unescape(uri.substr(i+1));
+
+ // now use anchor as XML ID to find target
+ var target = document.getElementById(anchor);
+
+ if (!target)
+ {
+ // does anchor look like "(2)" for slide 2 ??
+ // where first slide is (1)
+ var re = /\((\d)+\)/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // accept [2] for backwards compatibility
+ re = /\[(\d)+\]/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // oh dear unknown anchor
+ return 0;
+ }
+
+ // search for enclosing slide
+
+ while (true)
+ {
+ // browser coerces html elements to uppercase!
+ if (target.nodeName.toLowerCase() == "div" &&
+ this.has_class(target, "slide"))
+ {
+ // found the slide element
+ break;
+ }
+
+ // otherwise try parent element if any
+
+ target = target.parentNode;
+
+ if (!target)
+ {
+ return 0; // no luck!
+ }
+ };
+
+ for (i = 0; i < slides.length; ++i)
+ {
+ if (slides[i] == target)
+ return i; // success
+ }
+
+ // oh dear still no luck
+ return 0;
+ },
+
+ previous_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
+ {
+ w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
+ w3c_slidy.set_eos_status(false);
+ }
+ else if (w3c_slidy.slide_number > 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_location();
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ next_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide, last = w3c_slidy.last_shown;
+
+ if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
+ w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
+
+ if ((!incremental || w3c_slidy.last_shown == null) &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+ else if (!w3c_slidy.last_shown)
+ {
+ if (last && incremental)
+ w3c_slidy.last_shown = last;
+ }
+
+ w3c_slidy.set_location();
+
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ // to first slide with nothing revealed
+ // i.e. state at start of presentation
+ first_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if (w3c_slidy.slide_number != 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = 0;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_eos_status(
+ !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.set_location();
+ }
+ },
+
+ // goto last slide with everything revealed
+ // i.e. state at end of presentation
+ last_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ w3c_slidy.last_shown = null; //revealNextItem(lastShown);
+
+ if (w3c_slidy.last_shown == null &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+
+ w3c_slidy.show_slide(slide);
+ }
+ else
+ {
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ }
+
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.set_location();
+ }
+ },
+
+
+ // ### check this and consider add/remove class
+ set_eos_status: function (state) {
+ if (this.eos)
+ this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
+ },
+
+ // first slide is 0
+ goto_slide: function (num) {
+ //alert("going to slide " + (num+1));
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = num;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide(slide);
+ w3c_slidy.show_slide_number();
+ },
+
+
+ show_slide: function (slide) {
+ this.sync_background(slide);
+ window.scrollTo(0,0);
+ this.remove_class(slide, "hidden");
+ },
+
+ hide_slide: function (slide) {
+ this.add_class(slide, "hidden");
+ },
+
+ // show just the backgrounds pertinent to this slide
+ // when slide background-color is transparent
+ // this should now work with rgba color values
+ sync_background: function (slide) {
+ var background;
+ var bgColor;
+
+ if (slide.currentStyle)
+ bgColor = slide.currentStyle["backgroundColor"];
+ else if (document.defaultView)
+ {
+ var styles = document.defaultView.getComputedStyle(slide,null);
+
+ if (styles)
+ bgColor = styles.getPropertyValue("background-color");
+ else // broken implementation probably due Safari or Konqueror
+ {
+ //alert("defective implementation of getComputedStyle()");
+ bgColor = "transparent";
+ }
+ }
+ else
+ bgColor == "transparent";
+
+ if (bgColor == "transparent" ||
+ bgColor.indexOf("rgba") >= 0 ||
+ bgColor.indexOf("opacity") >= 0)
+ {
+ var slideClass = this.get_class_list(slide);
+
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+
+ var bgClass = this.get_class_list(background);
+
+ if (this.matching_background(slideClass, bgClass))
+ this.remove_class(background, "hidden");
+ else
+ this.add_class(background, "hidden");
+ }
+ }
+ else // forcibly hide all backgrounds
+ this.hide_backgrounds();
+ },
+
+ hide_backgrounds: function () {
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+ this.add_class(background, "hidden");
+ }
+ },
+
+ // compare classes for slide and background
+ matching_background: function (slideClass, bgClass) {
+ var i, count, pattern, result;
+
+ // define pattern as regular expression
+ pattern = /\w+/g;
+
+ // check background class names
+ result = bgClass.match(pattern);
+
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (result[i] == "background")
+ continue;
+
+ ++count;
+ }
+
+ if (count == 0) // default match
+ return true;
+
+ // check for matches and place result in array
+ result = slideClass.match(pattern);
+
+ // now check if desired name is present for background
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (this.has_token(bgClass, result[i]))
+ return true;
+ }
+
+ return false;
+ },
+
+ resized: function () {
+ var width = 0;
+
+ if ( typeof( window.innerWidth ) == 'number' )
+ width = window.innerWidth; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientWidth)
+ width = document.documentElement.clientWidth; // IE6
+ else if (document.body && document.body.clientWidth)
+ width = document.body.clientWidth; // IE4
+
+ var height = 0;
+
+ if ( typeof( window.innerHeight ) == 'number' )
+ height = window.innerHeight; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientHeight)
+ height = document.documentElement.clientHeight; // IE6
+ else if (document.body && document.body.clientHeight)
+ height = document.body.clientHeight; // IE4
+
+ if (height && (width/height > 1.05*1024/768))
+ {
+ width = height * 1024.0/768;
+ }
+
+ // IE fires onresize even when only font size is changed!
+ // so we do a check to avoid blocking < and > actions
+ if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
+ {
+ if (width >= 1100)
+ w3c_slidy.size_index = 5; // 4
+ else if (width >= 1000)
+ w3c_slidy.size_index = 4; // 3
+ else if (width >= 800)
+ w3c_slidy.size_index = 3; // 2
+ else if (width >= 600)
+ w3c_slidy.size_index = 2; // 1
+ else if (width)
+ w3c_slidy.size_index = 0;
+
+ // add in font size adjustment from meta element e.g.
+ // <meta name="font-size-adjustment" content="-2" />
+ // useful when slides have too much content ;-)
+
+ if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
+ w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
+ w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ w3c_slidy.adjust_object_dimensions(width, height);
+
+ if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
+ {
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ }
+
+ w3c_slidy.last_width = width;
+ w3c_slidy.last_height = height;
+
+ // force reflow to work around Mozilla bug
+ if (w3c_slidy.ns_pos)
+ {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ }
+
+ // force correct positioning of toolbar
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ scrolled: function () {
+ if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
+ // hide toolbar
+ w3c_slidy.toolbar.style.display = "none";
+
+ // make it reappear later
+ if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
+ {
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
+ w3c_slidy.scrollhack = 1;
+ }
+ }
+ },
+
+ hide_toolbar: function () {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
+ window.focus();
+ },
+
+ // used to ensure IE refreshes toolbar in correct position
+ refresh_toolbar: function (interval) {
+ if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hide_toolbar();
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, interval);
+ }
+ },
+
+ // restores toolbar after short delay
+ show_toolbar: function () {
+ if (w3c_slidy.want_toolbar)
+ {
+ w3c_slidy.toolbar.style.display = "block";
+
+ if (!w3c_slidy.ns_pos)
+ {
+ // adjust position to allow for scrolling
+ var xoffset = w3c_slidy.scroll_x_offset();
+ w3c_slidy.toolbar.style.left = xoffset;
+ w3c_slidy.toolbar.style.right = xoffset;
+
+ // determine vertical scroll offset
+ //var yoffset = scrollYOffset();
+
+ // bottom is doc height - window height - scroll offset
+ //var bottom = documentHeight() - lastHeight - yoffset
+
+ //if (yoffset > 0 || documentHeight() > lastHeight)
+ // bottom += 16; // allow for height of scrollbar
+
+ w3c_slidy.toolbar.style.bottom = 0; //bottom;
+ }
+
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
+ }
+
+ w3c_slidy.scrollhack = 0;
+
+
+ // set the keyboard focus to the help link on the
+ // toolbar to ensure that document has the focus
+ // IE doesn't always work with window.focus()
+ // and this hack has benefit of Enter for help
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+// invoked via F key
+ toggle_toolbar: function () {
+ if (!w3c_slidy.view_all)
+ {
+ if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 1;
+ }
+ else
+ {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 0;
+ }
+ }
+ },
+
+ scroll_x_offset: function () {
+ if (window.pageXOffset)
+ return self.pageXOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollLeft)
+ return document.documentElement.scrollLeft;
+
+ if (document.body)
+ return document.body.scrollLeft;
+
+ return 0;
+ },
+
+ scroll_y_offset: function () {
+ if (window.pageYOffset)
+ return self.pageYOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollTop)
+ return document.documentElement.scrollTop;
+
+ if (document.body)
+ return document.body.scrollTop;
+
+ return 0;
+ },
+
+ // looking for a way to determine height of slide content
+ // the slide itself is set to the height of the window
+ optimize_font_size: function () {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ //var dh = documentHeight(); //getDocHeight(document);
+ var dh = slide.scrollHeight;
+ var wh = getWindowHeight();
+ var u = 100 * dh / wh;
+
+ alert("window utilization = " + u + "% (doc "
+ + dh + " win " + wh + ")");
+ },
+
+ // from document object
+ get_doc_height: function (doc) {
+ if (!doc)
+ doc = document;
+
+ if (doc && doc.body && doc.body.offsetHeight)
+ return doc.body.offsetHeight; // ns/gecko syntax
+
+ if (doc && doc.body && doc.body.scrollHeight)
+ return doc.body.scrollHeight;
+
+ alert("couldn't determine document height");
+ },
+
+ get_window_height: function () {
+ if ( typeof( window.innerHeight ) == 'number' )
+ return window.innerHeight; // Non IE browser
+
+ if (document.documentElement && document.documentElement.clientHeight)
+ return document.documentElement.clientHeight; // IE6
+
+ if (document.body && document.body.clientHeight)
+ return document.body.clientHeight; // IE4
+ },
+
+ document_height: function () {
+ var sh, oh;
+
+ sh = document.body.scrollHeight;
+ oh = document.body.offsetHeight;
+
+ if (sh && oh)
+ {
+ return (sh > oh ? sh : oh);
+ }
+
+ // no idea!
+ return 0;
+ },
+
+ smaller: function () {
+ if (w3c_slidy.size_index > 0)
+ {
+ --w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ bigger: function () {
+ if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
+ {
+ ++w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ // with thanks to Ivan Herman for the suggestion
+ adjust_object_dimensions: function (width, height) {
+ for( var i = 0; i < w3c_slidy.objects.length; i++ )
+ {
+ var obj = this.objects[i];
+ var mimeType = obj.getAttribute("type");
+
+ if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
+ {
+ if ( !obj.initialWidth )
+ obj.initialWidth = obj.getAttribute("width");
+
+ if ( !obj.initialHeight )
+ obj.initialHeight = obj.getAttribute("height");
+
+ if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
+ {
+ var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
+ var newW = width * (w/100.0);
+ obj.setAttribute("width",newW);
+ }
+
+ if ( obj.initialHeight &&
+ obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
+ {
+ var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
+ var newH = height * (h/100.0);
+ obj.setAttribute("height", newH);
+ }
+ }
+ }
+ },
+
+ // needed for Opera to inhibit default behavior
+ // since Opera delivers keyPress even if keyDown
+ // was cancelled
+ key_press: function (event) {
+ if (!event)
+ event = window.event;
+
+ if (!w3c_slidy.key_wanted)
+ return w3c_slidy.cancel(event);
+
+ return true;
+ },
+
+ // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
+ key_down: function (event) {
+ var key, target, tag;
+
+ w3c_slidy.key_wanted = true;
+
+ if (!event)
+ event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ {
+ key = window.event.keyCode;
+ target = window.event.srcElement;
+ }
+ else if (event.which)
+ {
+ key = event.which;
+ target = event.target;
+ }
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // avoid interfering with keystroke
+ // behavior for non-slidy chrome elements
+ if (!w3c_slidy.slidy_chrome(target) &&
+ w3c_slidy.special_element(target))
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey || event.metaKey)
+ return true;
+
+ // dismiss table of contents if visible
+ if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
+ {
+ w3c_slidy.hide_table_of_contents(true);
+
+ if (key == 27 || key == 84 || key == 67)
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 34) // Page Down
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.next_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 33) // Page Up
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.previous_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 32) // space bar
+ {
+ w3c_slidy.next_slide(true);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 37) // Left arrow
+ {
+ w3c_slidy.previous_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 36) // Home
+ {
+ w3c_slidy.first_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 35) // End
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 39) // Right arrow
+ {
+ w3c_slidy.next_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 13) // Enter
+ {
+ if (w3c_slidy.outline)
+ {
+ if (w3c_slidy.outline.visible)
+ w3c_slidy.fold(w3c_slidy.outline);
+ else
+ w3c_slidy.unfold(w3c_slidy.outline);
+
+ return w3c_slidy.cancel(event);
+ }
+ }
+ else if (key == 188) // < for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 190) // > for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 189 || key == 109) // - for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 83) // S for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 66) // B for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 90) // Z for last slide
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 70) // F for toggle toolbar
+ {
+ w3c_slidy.toggle_toolbar();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 65) // A for toggle view single/all slides
+ {
+ w3c_slidy.toggle_view();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 75) // toggle action of left click for next page
+ {
+ w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
+ var alert_msg = (w3c_slidy.mouse_click_enabled ?
+ "enabled" : "disabled") + " mouse click advance";
+
+ alert(w3c_slidy.localize(alert_msg));
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 84 || key == 67) // T or C for table of contents
+ {
+ if (w3c_slidy.toc)
+ w3c_slidy.toggle_table_of_contents();
+
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 72) // H for help
+ {
+ window.location = w3c_slidy.help_page;
+ return w3c_slidy.cancel(event);
+ }
+ //else alert("key code is "+ key);
+
+ return true;
+ },
+
+ // safe for both text/html and application/xhtml+xml
+ create_element: function (name) {
+ if (this.xhtml && (typeof document.createElementNS != 'undefined'))
+ return document.createElementNS("http://www.w3.org/1999/xhtml", name)
+
+ return document.createElement(name);
+ },
+
+ get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
+ if (elem.currentStyle)
+ {
+ return elem.currentStyle[IEStyleProp];
+ }
+ else if (window.getComputedStyle)
+ {
+ var compStyle = window.getComputedStyle(elem, "");
+ return compStyle.getPropertyValue(CSSStyleProp);
+ }
+ return "";
+ },
+
+ // the string str is a whitespace separated list of tokens
+ // test if str contains a particular token, e.g. "slide"
+ has_token: function (str, token) {
+ if (str)
+ {
+ // define pattern as regular expression
+ var pattern = /\w+/g;
+
+ // check for matches
+ // place result in array
+ var result = str.match(pattern);
+
+ // now check if desired token is present
+ for (var i = 0; i < result.length; i++)
+ {
+ if (result[i] == token)
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ get_class_list: function (element) {
+ if (typeof element.className != 'undefined')
+ return element.className;
+
+ return element.getAttribute("class");
+ },
+
+ has_class: function (element, name) {
+ if (element.nodeType != 1)
+ return false;
+
+ var regexp = new RegExp("(^| )" + name + "\W*");
+
+ if (typeof element.className != 'undefined')
+ return regexp.test(element.className);
+
+ return regexp.test(element.getAttribute("class"));
+ },
+
+ remove_class: function (element, name) {
+ var regexp = new RegExp("(^| )" + name + "\W*");
+ var clsval = "";
+
+ if (typeof element.className != 'undefined')
+ {
+ clsval = element.className;
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.className = clsval;
+ }
+ }
+ else
+ {
+ clsval = element.getAttribute("class");
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ add_class: function (element, name) {
+ if (!this.has_class(element, name))
+ {
+ if (typeof element.className != 'undefined')
+ element.className += " " + name;
+ else
+ {
+ var clsval = element.getAttribute("class");
+ clsval = clsval ? clsval + " " + name : name;
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ // HTML elements that can be used with class="incremental"
+ // note that you can also put the class on containers like
+ // up, ol, dl, and div to make their contents appear
+ // incrementally. Upper case is used since this is what
+ // browsers report for HTML node names (text/html).
+ incremental_elements: null,
+ okay_for_incremental: function (name) {
+ if (!this.incremental_elements)
+ {
+ var inclist = new Array();
+ inclist["p"] = true;
+ inclist["pre"] = true;
+ inclist["li"] = true;
+ inclist["blockquote"] = true;
+ inclist["dt"] = true;
+ inclist["dd"] = true;
+ inclist["h2"] = true;
+ inclist["h3"] = true;
+ inclist["h4"] = true;
+ inclist["h5"] = true;
+ inclist["h6"] = true;
+ inclist["span"] = true;
+ inclist["address"] = true;
+ inclist["table"] = true;
+ inclist["tr"] = true;
+ inclist["th"] = true;
+ inclist["td"] = true;
+ inclist["img"] = true;
+ inclist["object"] = true;
+ this.incremental_elements = inclist;
+ }
+ return this.incremental_elements[name.toLowerCase()];
+ },
+
+ next_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.next_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1) // ELEMENT
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ previous_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.previous_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1)
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ // set visibility for all elements on current slide with
+ // a parent element with attribute class="incremental"
+ set_visibility_all_incremental: function (value) {
+ var node = this.next_incremental_item(null);
+
+ if (value == "hidden")
+ {
+ while (node)
+ {
+ w3c_slidy.add_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ else // value == "visible"
+ {
+ while (node)
+ {
+ w3c_slidy.remove_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ },
+
+ // reveal the next hidden item on the slide
+ // node is null or the node that was last revealed
+ reveal_next_item: function (node) {
+ node = w3c_slidy.next_incremental_item(node);
+
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.remove_class(node, "invisible");
+
+ return node;
+ },
+
+ // exact inverse of revealNextItem(node)
+ hide_previous_item: function (node) {
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.add_class(node, "invisible");
+
+ return this.previous_incremental_item(node);
+ },
+
+ // left to right traversal of root's content
+ next_node: function (root, node) {
+ if (node == null)
+ return root.firstChild;
+
+ if (node.firstChild)
+ return node.firstChild;
+
+ if (node.nextSibling)
+ return node.nextSibling;
+
+ for (;;)
+ {
+ node = node.parentNode;
+
+ if (!node || node == root)
+ break;
+
+ if (node && node.nextSibling)
+ return node.nextSibling;
+ }
+
+ return null;
+ },
+
+ // right to left traversal of root's content
+ previous_node: function (root, node) {
+ if (node == null)
+ {
+ node = root.lastChild;
+
+ if (node)
+ {
+ while (node.lastChild)
+ node = node.lastChild;
+ }
+
+ return node;
+ }
+
+ if (node.previousSibling)
+ {
+ node = node.previousSibling;
+
+ while (node.lastChild)
+ node = node.lastChild;
+
+ return node;
+ }
+
+ if (node.parentNode != root)
+ return node.parentNode;
+
+ return null;
+ },
+
+ previous_sibling_element: function (el) {
+ el = el.previousSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.previousSibling;
+
+ return el;
+ },
+
+ next_sibling_element: function (el) {
+ el = el.nextSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.nextSibling;
+
+ return el;
+ },
+
+ first_child_element: function (el) {
+ var node;
+
+ for (node = el.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1)
+ break;
+ }
+
+ return node;
+ },
+
+ first_tag: function (element, tag) {
+ var node;
+
+ if (!this.is_xhtml)
+ tag = tag.toUpperCase();
+
+ for (node = element.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1 && node.nodeName == tag)
+ break;
+ }
+
+ return node;
+ },
+
+ hide_selection: function () {
+ if (window.getSelection) // Firefox, Chromium, Safari, Opera
+ {
+ var selection = window.getSelection();
+
+ if (selection.rangeCount > 0)
+ {
+ var range = selection.getRangeAt(0);
+ range.collapse (false);
+ }
+ }
+ else // Internet Explorer
+ {
+ var textRange = document.selection.createRange ();
+ textRange.collapse (false);
+ }
+ },
+
+ get_selected_text: function () {
+ try
+ {
+ if (window.getSelection)
+ return window.getSelection().toString();
+
+ if (document.getSelection)
+ return document.getSelection().toString();
+
+ if (document.selection)
+ return document.selection.createRange().text;
+ }
+ catch (e)
+ {
+ }
+
+ return "";
+ },
+
+ // make note of length of selected text
+ // as this evaluates to zero in click event
+ mouse_button_up: function (e) {
+ w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
+ },
+
+ // right mouse button click is reserved for context menus
+ // it is more reliable to detect rightclick than leftclick
+ mouse_button_click: function (e) {
+ var rightclick = false;
+ var leftclick = false;
+ var middleclick = false;
+ var target;
+
+ if (!e)
+ var e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target.nodeType == 3)
+ target = target.parentNode;
+
+ if (e.which) // all browsers except IE
+ {
+ leftclick = (e.which == 1);
+ middleclick = (e.which == 2);
+ rightclick = (e.which == 3);
+ }
+ else if (e.button)
+ {
+ // Konqueror gives 1 for left, 4 for middle
+ // IE6 gives 0 for left and not 1 as I expected
+
+ if (e.button == 4)
+ middleclick = true;
+
+ // all browsers agree on 2 for right button
+ rightclick = (e.button == 2);
+ }
+ else
+ leftclick = true;
+
+ if (w3c_slidy.selected_text_len > 0)
+ {
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ // dismiss table of contents
+ w3c_slidy.hide_table_of_contents(false);
+
+ // check if target is something that probably want's clicks
+ // e.g. a, embed, object, input, textarea, select, option
+ var tag = target.nodeName.toLowerCase();
+
+ if (w3c_slidy.mouse_click_enabled && leftclick &&
+ !w3c_slidy.special_element(target) &&
+ !target.onclick)
+ {
+ w3c_slidy.next_slide(true);
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ return true;
+ },
+
+ special_element: function (element) {
+ if (this.has_class(element, "non-interactive"))
+ return false;
+
+ var tag = element.nodeName.toLowerCase();
+
+ return element.onkeydown ||
+ element.onclick ||
+ tag == "a" ||
+ tag == "embed" ||
+ tag == "object" ||
+ tag == "video" ||
+ tag == "audio" ||
+ tag == "svg" ||
+ tag == "canvas" ||
+ tag == "input" ||
+ tag == "textarea" ||
+ tag == "select" ||
+ tag == "option";
+ },
+
+ slidy_chrome: function (el) {
+ while (el)
+ {
+ if (el == w3c_slidy.toc ||
+ el == w3c_slidy.toolbar ||
+ w3c_slidy.has_class(el, "outline"))
+ return true;
+
+ el = el.parentNode;
+ }
+
+ return false;
+ },
+
+ get_key: function (e)
+ {
+ var key;
+
+ // kludge around NS/IE differences
+ if (typeof window.event != "undefined")
+ key = window.event.keyCode;
+ else if (e.which)
+ key = e.which;
+
+ return key;
+ },
+
+ get_target: function (e) {
+ var target;
+
+ if (!e)
+ e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ if (target.nodeType != 1)
+ target = target.parentNode;
+
+ return target;
+ },
+
+ // does display property provide correct defaults?
+ is_block: function (elem) {
+ var tag = elem.nodeName.toLowerCase();
+
+ return tag == "ol" || tag == "ul" || tag == "p" ||
+ tag == "li" || tag == "table" || tag == "pre" ||
+ tag == "h1" || tag == "h2" || tag == "h3" ||
+ tag == "h4" || tag == "h5" || tag == "h6" ||
+ tag == "blockquote" || tag == "address";
+ },
+
+ add_listener: function (element, event, handler) {
+ if (window.addEventListener)
+ element.addEventListener(event, handler, false);
+ else
+ element.attachEvent("on"+event, handler);
+ },
+
+ // used to prevent event propagation from field controls
+ stop_propagation: function (event) {
+ event = event ? event : window.event;
+ event.cancelBubble = true; // for IE
+
+ if (event.stopPropagation)
+ event.stopPropagation();
+
+ return true;
+ },
+
+ cancel: function (event) {
+ if (event)
+ {
+ event.cancel = true;
+ event.returnValue = false;
+
+ if (event.preventDefault)
+ event.preventDefault();
+ }
+
+ w3c_slidy.key_wanted = false;
+ return false;
+ },
+
+// for each language define an associative array
+// and also the help text which is longer
+
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Ãndice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+
+ strings_ca: {
+ "slide":"pàg..",
+ "help?":"Ajuda",
+ "contents?":"Ãndex",
+ "table of contents":"taula de continguts",
+ "Table of Contents":"Taula de Continguts",
+ "restart presentation":"Reiniciar presentació",
+ "restart?":"Inici"
+ },
+ help_ca:
+ "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
+ "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
+
+ strings_cs: {
+ "slide":"snímek",
+ "help?":"nápověda",
+ "contents?":"obsah",
+ "table of contents":"obsah prezentace",
+ "Table of Contents":"Obsah prezentace",
+ "restart presentation":"znovu spustit prezentaci",
+ "restart?":"restart"
+ },
+ help_cs:
+ "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
+ "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
+ "dá zvětšit a zmenšit pomocí kláves B a S.",
+
+ strings_nl: {
+ "slide":"pagina",
+ "help?":"Help?",
+ "contents?":"Inhoud?",
+ "table of contents":"inhoudsopgave",
+ "Table of Contents":"Inhoudsopgave",
+ "restart presentation":"herstart presentatie",
+ "restart?":"Herstart?"
+ },
+ help_nl:
+ "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
+ "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
+
+ strings_de: {
+ "slide":"Seite",
+ "help?":"Hilfe",
+ "contents?":"Ãœbersicht",
+ "table of contents":"Inhaltsverzeichnis",
+ "Table of Contents":"Inhaltsverzeichnis",
+ "restart presentation":"Präsentation neu starten",
+ "restart?":"Neustart"
+ },
+ help_de:
+ "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
+ "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
+
+ strings_pl: {
+ "slide":"slajd",
+ "help?":"pomoc?",
+ "contents?":"spis treści?",
+ "table of contents":"spis treści",
+ "Table of Contents":"Spis Treści",
+ "restart presentation":"Restartuj prezentacjÄ™",
+ "restart?":"restart?"
+ },
+ help_pl:
+ "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
+ "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
+
+ strings_fr: {
+ "slide":"page",
+ "help?":"Aide",
+ "contents?":"Index",
+ "table of contents":"table des matières",
+ "Table of Contents":"Table des matières",
+ "restart presentation":"Recommencer l'exposé",
+ "restart?":"Début"
+ },
+ help_fr:
+ "Naviguez avec la souris, la barre d'espace, les flèches " +
+ "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
+ "les touches S et B pour modifier la taille de la police.",
+
+ strings_hu: {
+ "slide":"oldal",
+ "help?":"segítség",
+ "contents?":"tartalom",
+ "table of contents":"tartalomjegyzék",
+ "Table of Contents":"Tartalomjegyzék",
+ "restart presentation":"bemutató újraindítása",
+ "restart?":"újraindítás"
+ },
+ help_hu:
+ "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
+ "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
+ "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
+ "a szöveg méretét.",
+
+ strings_it: {
+ "slide":"pag.",
+ "help?":"Aiuto",
+ "contents?":"Indice",
+ "table of contents":"indice",
+ "Table of Contents":"Indice",
+ "restart presentation":"Ricominciare la presentazione",
+ "restart?":"Inizio"
+ },
+ help_it:
+ "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
+ "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
+
+ strings_el: {
+ "slide":"σελίδα",
+ "help?":"βοήθεια;",
+ "contents?":"πεÏιεχόμενα;",
+ "table of contents":"πίνακας πεÏιεχομένων",
+ "Table of Contents":"Πίνακας ΠεÏιεχομένων",
+ "restart presentation":"επανεκκίνηση παÏουσίασης",
+ "restart?":"επανεκκίνηση;"
+ },
+ help_el:
+ "Πλοηγηθείτε με το κλίκ του ποντικιοÏ, το space, τα βέλη αÏιστεÏά/δεξιά, " +
+ "ή Page Up και Page Down. ΧÏησιμοποιήστε τα πλήκτÏα S και B για να αλλάξετε " +
+ "το μέγεθος της γÏαμματοσειÏάς.",
+
+ strings_ja: {
+ "slide":"スライド",
+ "help?":"ヘルプ",
+ "contents?":"目次",
+ "table of contents":"目次を表示",
+ "Table of Contents":"目次",
+ "restart presentation":"最åˆã‹ã‚‰å†ç”Ÿ",
+ "restart?":"最åˆã‹ã‚‰"
+ },
+ help_ja:
+ "マウス左クリック ・ スペース ・ å·¦å³ã‚­ãƒ¼ " +
+ "ã¾ãŸã¯ Page Up ・ Page Downã§æ“作, S ・ Bã§ãƒ•ã‚©ãƒ³ãƒˆã‚µã‚¤ã‚ºå¤‰æ›´",
+
+ strings_zh: {
+ "slide":"å¹»ç¯ç‰‡",
+ "help?":"帮助?",
+ "contents?":"内容?",
+ "table of contents":"目录",
+ "Table of Contents":"目录",
+ "restart presentation":"é‡æ–°å¯åŠ¨å±•ç¤º",
+ "restart?":"é‡æ–°å¯åŠ¨?"
+ },
+ help_zh:
+ "用鼠标点击, 空格æ¡, å·¦å³ç®­å¤´, Pg Up å’Œ Pg Dn 导航. " +
+ "用 S, B 改å˜å­—体大å°.",
+
+ strings_ru: {
+ "slide":"Ñлайд",
+ "help?":"помощь?",
+ "contents?":"Ñодержание?",
+ "table of contents":"оглавление",
+ "Table of Contents":"Оглавление",
+ "restart presentation":"перезапуÑтить презентацию",
+ "restart?":"перезапуÑк?"
+ },
+ help_ru:
+ "ПеремещайтеÑÑŒ ÐºÐ»Ð¸ÐºÐ°Ñ Ð¼Ñ‹ÑˆÐºÐ¾Ð¹, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ»Ð°Ð²Ð¸ÑˆÑƒ пробел, Ñтрелки" +
+ "влево/вправо или Pg Up и Pg Dn. Клавиши S и B менÑÑŽÑ‚ размер шрифта.",
+
+ strings_sv: {
+ "slide":"sida",
+ "help?":"hjälp",
+ "contents?":"innehåll",
+ "table of contents":"innehållsförteckning",
+ "Table of Contents":"Innehållsförteckning",
+ "restart presentation":"visa presentationen från början",
+ "restart?":"börja om"
+ },
+ help_sv:
+ "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
+ "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
+ "Använd tangenterna S och B för att ändra textens storlek.",
+
+ strings: { },
+
+ localize: function (src) {
+ if (src == "")
+ return src;
+
+ // try full language code, e.g. en-US
+ var s, lookup = w3c_slidy.strings[w3c_slidy.lang];
+
+ if (lookup)
+ {
+ s = lookup[src];
+
+ if (s)
+ return s;
+ }
+
+ // strip country code suffix, e.g.
+ // try en if undefined for en-US
+ var lg = w3c_slidy.lang.split("-");
+
+ if (lg.length > 1)
+ {
+ lookup = w3c_slidy.strings[lg[0]];
+
+ if (lookup)
+ {
+ s = lookup[src];
+
+ if (s)
+ return s;
+ }
+ }
+
+ // otherwise string as is
+ return src;
+ },
+
+ init_localization: function () {
+ var i18n = w3c_slidy;
+ var help_text = w3c_slidy.help_text;
+
+ // each such language array is declared in the localize array
+ // this is used as in w3c_slidy.localize("foo");
+ this.strings = {
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+ },
+
+ i18n.strings_es[help_text] = i18n.help_es;
+ i18n.strings_ca[help_text] = i18n.help_ca;
+ i18n.strings_cs[help_text] = i18n.help_cs;
+ i18n.strings_nl[help_text] = i18n.help_nl;
+ i18n.strings_de[help_text] = i18n.help_de;
+ i18n.strings_pl[help_text] = i18n.help_pl;
+ i18n.strings_fr[help_text] = i18n.help_fr;
+ i18n.strings_hu[help_text] = i18n.help_hu;
+ i18n.strings_it[help_text] = i18n.help_it;
+ i18n.strings_el[help_text] = i18n.help_el;
+ i18n.strings_ja[help_text] = i18n.help_ja;
+ i18n.strings_zh[help_text] = i18n.help_zh;
+ i18n.strings_ru[help_text] = i18n.help_ru;
+ i18n.strings_sv[help_text] = i18n.help_sv;
+
+ w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = "en";
+ }
+};
+
+// hack for back button behavior
+if (w3c_slidy.ie6 || w3c_slidy.ie7)
+{
+ document.write("<iframe id='historyFrame' " +
+ "src='javascript:\"<html"+"></"+"html>\"' " +
+ "height='1' width='1' " +
+ "style='position:absolute;left:-800px'></iframe>");
+}
+
+// attach event listeners for initialization
+w3c_slidy.set_up();
+
+// hide the slides as soon as body element is available
+// to reduce annoying screen mess before the onload event
+setTimeout(w3c_slidy.hide_slides, 50);
+
diff --git a/slides/slidy/scripts/slidy.js.gz b/slides/slidy/scripts/slidy.js.gz
new file mode 100755
index 0000000..b1c58e4
--- /dev/null
+++ b/slides/slidy/scripts/slidy.js.gz
Binary files differ
diff --git a/slides/slidy/styles/.htaccess b/slides/slidy/styles/.htaccess
new file mode 100755
index 0000000..d395348
--- /dev/null
+++ b/slides/slidy/styles/.htaccess
@@ -0,0 +1,28 @@
+Options +MultiViews
+LanguagePriority en
+AddLanguage pt-br .pt-br
+
+<Files ~ "*.html">
+
+ForceType 'text/html; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.xhtml">
+
+ForceType 'application/xhtml+xml; charset=utf-8'
+
+</Files>
+
+<Files ~ *.css">
+
+ForceType 'text/css; charset=utf-8'
+
+</Files>
+
+<Files ~ "*.js">
+
+ForceType 'text/javascript; charset=utf-8'
+
+</Files>
+mkdir
diff --git a/slides/slidy/styles/slidy.css b/slides/slidy/styles/slidy.css
new file mode 100755
index 0000000..0197e64
--- /dev/null
+++ b/slides/slidy/styles/slidy.css
@@ -0,0 +1,405 @@
+/* slidy.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+ font-size: 14pt;
+}
+
+div.toolbar {
+ position: fixed; z-index: 200;
+ top: auto; bottom: 0; left: 0; right: 0;
+ height: 1.2em; text-align: right;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-size: 60%;
+ color: red;
+ background-color: rgb(240,240,240);
+ border-top: solid 1px rgb(180,180,180);
+}
+
+div.toolbar span.copyright {
+ color: black;
+ margin-left: 0.5em;
+}
+
+div.initial_prompt {
+ position: absolute;
+ z-index: 1000;
+ bottom: 1.2em;
+ width: 100%;
+ background-color: rgb(200,200,200);
+ opacity: 0.35;
+ background-color: rgb(200,200,200, 0.35);
+ cursor: pointer;
+}
+
+div.initial_prompt p.help {
+ text-align: center;
+}
+
+div.initial_prompt p.close {
+ text-align: right;
+ font-style: italic;
+}
+
+div.slidy_toc {
+ position: absolute;
+ z-index: 300;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ overflow: auto;
+ top: auto;
+ right: auto;
+ left: 4em;
+ bottom: 4em;
+ padding: 1em;
+ background: rgb(240,240,240);
+ border-style: solid;
+ border-width: 2px;
+ font-size: 60%;
+}
+
+div.slidy_toc .toc_heading {
+ text-align: center;
+ width: 100%;
+ margin: 0;
+ margin-bottom: 1em;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(180,180,180);
+ border-bottom-width: 1px;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 20px;
+ padding-right: 20px;
+ border-width: 0;
+ clear: both;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ display: none;
+}
+
+div.handout {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage h1 {
+ padding-top: 10%;
+ margin-right: 0;
+}
+
+div.slide h1 {
+ padding-left: 0;
+ padding-right: 20pt;
+ padding-top: 4pt;
+ padding-bottom: 4pt;
+ margin-top: 0;
+ margin-left: 0;
+ margin-right: 60pt;
+ margin-bottom: 0.5em;
+ display: block;
+ font-size: 160%;
+ line-height: 1.2em;
+ background: transparent;
+}
+
+div.toc {
+ position: absolute;
+ top: auto;
+ bottom: 4em;
+ left: 4em;
+ right: auto;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ border: solid thin black;
+ padding: 1em;
+ background: rgb(240,240,240);
+ color: black;
+ z-index: 300;
+ overflow: auto;
+ display: block;
+ visibility: visible;
+}
+
+div.toc-heading {
+ width: 100%;
+ border-bottom: solid 1px rgb(180,180,180);
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+img {
+ image-rendering: optimize-quality;
+}
+
+pre {
+ font-size: 80%;
+ font-weight: bold;
+ line-height: 120%;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-style: solid;
+ border-left-width: 1em;
+ border-top-width: thin;
+ border-right-width: thin;
+ border-bottom-width: thin;
+ border-color: #95ABD0;
+ color: #00428C;
+ background-color: #E4E5E7;
+}
+
+li pre { margin-left: 0; }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+a img { border-width: 0; border-style: none }
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+.smaller { font-size: smaller }
+.bigger { font-size: 130% }
+
+td,th { padding: 0.2em }
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+
+ul li {
+ list-style: square;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 0;
+ line-height: 140%;
+}
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+ list-style-type: decimal;
+}
+
+li ul li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li ul li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li ul li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+li ol li {
+ list-style-type: decimal;
+}
+
+
+li li ol li {
+ list-style-type: decimal;
+}
+
+/*
+ setting class="outline on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+/* for slides with class "title" in table of contents */
+a.titleslide { font-weight: bold; font-style: italic }
+
+/*
+ hide images for work around for save as bug
+ where browsers fail to save images used by CSS
+*/
+img.hidden { display: none; visibility: hidden }
+div.initial_prompt { display: none; visibility: hidden }
+
+ div.slide {
+ visibility: visible;
+ position: inherit;
+ }
+ div.handout {
+ border-top-style: solid;
+ border-top-width: thin;
+ border-top-color: black;
+ }
+
+@media screen {
+ .hidden { display: none; visibility: visible }
+
+ div.slide.hidden { display: block; visibility: visible }
+ div.handout.hidden { display: block; visibility: visible }
+ div.background { display: none; visibility: hidden }
+ body.single_slide div.initial_prompt { display: block; visibility: visible }
+ body.single_slide div.background { display: block; visibility: visible }
+ body.single_slide div.background.hidden { display: none; visibility: hidden }
+ body.single_slide .invisible { visibility: hidden }
+ body.single_slide .hidden { display: none; visibility: hidden }
+ body.single_slide div.slide { position: absolute }
+ body.single_slide div.handout { display: none; visibility: hidden }
+}
+
+@media print {
+ .hidden { display: block; visibility: visible }
+
+ div.slide pre { font-size: 60%; padding-left: 0.5em; }
+ div.toolbar { display: none; visibility: hidden; }
+ div.slidy_toc { display: none; visibility: hidden; }
+ div.background { display: none; visibility: hidden; }
+ div.slide { page-break-before: always }
+ /* :first-child isn't reliable for print media */
+ div.slide.first-slide { page-break-before: avoid }
+}
+
diff --git a/slides/slidy/styles/w3c-blue.css b/slides/slidy/styles/w3c-blue.css
new file mode 100755
index 0000000..6c4ff4f
--- /dev/null
+++ b/slides/slidy/styles/w3c-blue.css
@@ -0,0 +1,497 @@
+/* w3c-blue.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+ font-size: 14pt;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage h1 {
+ padding-top: 40%;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding: 0;
+ border-width: 0;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ z-index: 1;
+ position: absolute;
+ vertical-align: bottom;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: auto;
+ height: 4.1em;
+ padding: 0 0 0 0.2em;
+ margin: 0 0 0 0;
+ border-width: 0;
+ background-color: #728ec2;
+}
+
+div.background img {
+ height: 4em;
+}
+
+/* this rule is hidden from IE which doesn't support + selector */
+div.slide + div[class].slide { page-break-before: always;}
+
+div.slide h1 {
+ padding-left: 3em;
+ padding-right: 3em;
+ padding-top: 0.1em;
+ margin-bottom: 0.8em;
+ margin-top: -0.05em;
+ margin-left: 0;
+ margin-right: 0;
+ min-height: 2.3em;
+ color: white;
+ height: 2.2em;
+ font-size: 160%;
+ line-height: 1.1em;
+}
+
+div.slide h1 a {
+ color: white;
+ text-decoration: none;
+}
+
+div.slide h1 a:link {
+ color: white;
+ text-decoration: none;
+}
+
+div.slide h1 a:visited {
+ color: white;
+ text-decoration: none;
+}
+
+div.slide h1 a:hover {
+ color: white;
+ text-decoration: underline;
+}
+
+div.slide h1 a:active {
+ color: red;
+ text-decoration: underline;
+}
+
+#head-icon {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ margin-left: 0;
+ margin-right: 1em;
+ background: #728ec2;
+ border-width: 0;
+ height: 3em;
+ max-width: 3em;
+ z-index: 2;
+ float: left;
+}
+
+#head-logo {
+ margin: 0;
+ margin-top: 0.25em;
+ padding-top: 0.25em;
+ padding-bottom: 0.2em;
+ padding-left: 0;
+ padding-right: 0;
+ height: 3.2em;
+ width: 4.8em;
+ float: right;
+ z-index: 2;
+ background: #728ec2;
+}
+
+#head-logo-fallback {
+ margin: 0;
+ padding: 0;
+ margin-top: -0.8em;
+ width: 4.8em;
+ float: right;
+ z-index: 2;
+}
+
+/* the next two classes support vertical and horizontal centering */
+div.vbox {
+ float: left;
+ height: 40%;
+ width: 50%;
+ margin-top: -240px;
+}
+div.hbox {
+ width:60%;
+ margin-top: 0;
+ margin-left:auto;
+ margin-right:auto;
+ height: 60%;
+ border:1px solid silver;
+ background:#F0F0F0;
+ overflow:auto;
+ text-align:left;
+ clear:both;
+}
+
+/* styling for named background */
+div.background.slanty {
+ z-index: 2;
+ bottom: 0;
+ height: 100%;
+ background: transparent;
+}
+
+div.background.slanty img { margin-top: 4em; width: 100%; height: 80% }
+
+/* the following makes the pre background translucent */
+/* opacity is a CSS3 property but supported by Mozilla family */
+/* filter is an IE specific feature that also requires width */
+div.slide.slanty pre {
+ width: 93%; /* needed for IE filter to work */
+ opacity: .8;
+ filter: alpha(opacity=80);
+}
+
+img.withBorder {
+ border: 2px solid #c60;
+ padding: 4px;
+}
+
+li pre { margin-left: 0; }
+
+@media print { pre { font-size: 60% } }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+a img { border-width: 0; border-style: none }
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+div.cover p.explanation {
+ font-style: italic;
+ margin-top: 3em;
+}
+
+
+.smaller { font-size: smaller }
+
+td,th { padding: 0.2em }
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+
+
+ul li {
+ list-style: none;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 40px;
+ background: transparent url(../graphics/bullet.png) no-repeat 5px 0.3em;
+ line-height: 140%;
+}
+
+/* workaround IE's failure to support background on li for print media */
+@media print { ul li { list-style: disc; padding-left: 0; background: none; } }
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+}
+
+li li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+/* rectangular blue bullet + unfold/nofold/fold widget */
+
+/*
+ setting class="outline on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.3em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.3em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.3em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.3em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.3em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 52px;
+ background: transparent url(../graphics/bullet-nofold-dim.gif) no-repeat 5px 0.3em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 52px;
+ background: transparent url(../graphics/bullet-fold-dim.gif) no-repeat 5px 0.3em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 52px;
+ background: transparent url(../graphics/bullet-unfold-dim.gif) no-repeat 5px 0.3em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 52px;
+ background: transparent url(../graphics/bullet-fold.gif) no-repeat 5px 0.3em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 52px;
+ background: transparent url(../graphics/bullet-unfold.gif) no-repeat 5px 0.3em;
+}
+
+li ul.outline li.nofold {
+ padding: 0 0 0 21px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 5px 0.3em;
+}
+li ul.outline li.unfolded {
+ padding: 0 0 0 21px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 5px 0.3em;
+}
+li ul.outline li.folded {
+ padding: 0 0 0 21px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 5px 0.3em;
+}
+li ul.outline li.unfolded:hover {
+ padding: 0 0 0 21px;
+ background: transparent url(../graphics/fold.gif) no-repeat 5px 0.3em;
+}
+li ul.outline li.folded:hover {
+ padding: 0 0 0 21px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 5px 0.3em;
+}
+
+img {
+ image-rendering: optimize-quality;
+}
+
+img.withBorder {
+ border: 2px solid #c60;
+ padding: 4px;
+}
+
+div.header {
+ position: absolute;
+ z-index: 2;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: auto;
+ height: 2.95em;
+ width: 100%;
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+ border-width: 0;
+ border-style: solid;
+ background-color: #005A9C;
+ border-bottom-width: thick;
+ border-bottom-color: #95ABD0;
+}
+
+div.footer {
+ position: absolute;
+ z-index: 80;
+ left: 0;
+ right: 0;
+ top: auto;
+ bottom: 0;
+ height: 3.5em;
+ margin: 0;
+ font-size: 80%;
+ font-weight: bold;
+ padding-left: 1em;
+ padding-right: 0;
+ padding-top: 0.3em;
+ padding-bottom: 0;
+ color: #003366;
+ background-color: #95ABD0;
+}
+
+/* this is a hack to hide property from IE6 and below */
+div[class="footer"] {
+ position: fixed;
+}
+
+#hidden-bullet {
+ visibility: hidden;
+ display: none;
+}
+
+div.slide.cover {
+ color: white;
+ background-color: #728ec2;
+ padding-top: 0;
+ padding-right: 0;
+ padding-left: 3em;
+ height: 100%;
+}
+
+div.slide.cover h1 {
+ margin: 0;
+ padding: 0.5em;
+ color: white;
+ height: auto;
+}
+
+div.slide.cover h2 {
+ color: white;
+}
+
+div.slide.cover a {
+ color: white;
+}
+
+div.slide.cover a:visited { color: white }
+div.slide.cover a:link { color: white }
+div.slide.cover a:hover { color: yellow; text-decoration: underline }
+div.slide.cover a:active { color: yellow; text-decoration: underline }
+
+div.slide.cover a:hover, div.slide.cover a:active {
+ color: yellow; text-decoration: underline;
+}
+
+div.slide.cover img.cover {
+ margin: 0 0 0 0;
+ float: right;
+ padding-bottom: 4em;
+ width: 50%;
+ overflow: hidden;
+}
+
+div.slide.cover a:hover, div.slide.cover a:active {
+ color: yellow; text-decoration: underline;
+}
+
+/* for Bert as an ardent user of the old W3C slidemaker tool */
+
+div.comment { display: none; visibility: hidden }
+
+@media print {
+ div.slide h1 { background: transparent; color: black }
+ div.slide.cover { background: transparent; color: black }
+ div.slide.cover h1 { background: transparent; color: black }
+ div.comment { display: block; visibility: visible }
+}
diff --git a/slides/svg/default.xsl b/slides/svg/default.xsl
deleted file mode 100644
index 86ea133..0000000
--- a/slides/svg/default.xsl
+++ /dev/null
@@ -1,686 +0,0 @@
-<xsl:stylesheet version='1.0'
- xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:doc='http://nwalsh.com/xsl/documentation/1.0'
- exclude-result-prefixes='doc'>
-
- <xsl:import href='../../lib/lib.xsl'/>
-
- <doc:article xmlns=''>
- <articleinfo>
- <title>SVG Slides</title>
-
- <author>
- <firstname>Steve</firstname>
- <surname>Ball</surname>
- <affiliation>
- <orgname>Zveno</orgname>
- <address>
- <otheraddr>
- <ulink url='http://www.zveno.com/'>zveno.com</ulink>
- </otheraddr>
- </address>
- </affiliation>
- </author>
-
- <releaseinfo>$Id: default.xsl 6567 2007-01-30 06:43:18Z xmldoc $</releaseinfo>
-
- <copyright>
- <year>2002</year>
- <holder>Steve Ball, Zveno Pty Ltd</holder>
- </copyright>
-
- <legalnotice>
- <para>Zveno Pty Ltd makes this software and associated documentation available free of charge for any purpose. You may make copies of the software but you must include all of this notice on any copy.</para>
- <para>Zveno Pty Ltd does not warrant that this software is error free or fit for any purpose. Zveno Pty Ltd disclaims any liability for all claims, expenses, losses, damages and costs any user may incur as a result of using, copying or modifying the software.</para>
- </legalnotice>
- </articleinfo>
- </doc:article>
-
- <xsl:variable name='svg-public-id' select='"-//W3C//DTD SVG 20001102//EN"'/>
- <xsl:variable name='svg-system-id' select='"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"'/>
-
- <xsl:output method="xml" indent='yes' doctype-public='-//W3C//DTD SVG 20001102//EN' doctype-system='http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd' cdata-section-elements="script"/>
-
- <xsl:strip-space elements='slides foil foilgroup'/>
-
- <xsl:param name='css-stylesheet'>slides.css</xsl:param>
- <xsl:param name='graphics.dir'>graphics</xsl:param>
-
- <xsl:param name='toc.bg.color'>white</xsl:param>
-
- <xsl:param name='font.family'>Arial</xsl:param>
- <xsl:param name='bg.color'>white</xsl:param>
- <xsl:param name='fg.color'>black</xsl:param>
-
- <xsl:param name='foil.width' select='800'/>
- <xsl:param name='foil.height' select='600'/>
-
- <xsl:param name='toc.line.max' select='7'/>
-
- <xsl:attribute-set name="svg.attributes">
- <xsl:attribute name="xml:space">preserve</xsl:attribute>
- <xsl:attribute name="width">100%</xsl:attribute>
- <xsl:attribute name="height"><xsl:value-of select='$foil.height'/></xsl:attribute>
- <xsl:attribute name="style">font-family: <xsl:value-of select='$font.family'/>; font-size: 18pt; fill: <xsl:value-of select='$fg.color'/>; stroke: <xsl:value-of select='$fg.color'/>; background-color: <xsl:value-of select='$bg.color'/></xsl:attribute>
- </xsl:attribute-set>
-
- <xsl:attribute-set name="text-title">
- <xsl:attribute name="style">font-size: 24pt; font-weight: bold</xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="text-author">
- <xsl:attribute name="style">font-size: 18pt</xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="text-main">
- <xsl:attribute name="style">font-size: 18pt</xsl:attribute>
- </xsl:attribute-set>
-
-<!-- ============================================================ -->
-
-<xsl:template name="graphics.dir">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:variable name="source.graphics.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'graphics-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.graphics.dir != ''">
- <xsl:value-of select="$source.graphics.dir"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$graphics.dir"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="css-stylesheet">
- <!-- danger will robinson: template shadows parameter -->
- <xsl:variable name="source.css-stylesheet">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'css-stylesheet'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.css-stylesheet != ''">
- <xsl:value-of select="$source.css-stylesheet"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$css-stylesheet"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-
- <xsl:template match="/">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="slides">
- <xsl:if test='$css-stylesheet != ""'>
- <xsl:processing-instruction name='xml-stylesheet'>
- <xsl:text> href="</xsl:text>
- <xsl:value-of select='$css-stylesheet'/>
- <xsl:text>" type="text/css"</xsl:text>
- </xsl:processing-instruction>
- </xsl:if>
-
- <svg xsl:use-attribute-sets="svg.attributes">
- <title>
- <xsl:value-of select="slidesinfo/title"/>
- </title>
-
- <defs>
- <xsl:call-template name='svg.defs'/>
- </defs>
-
- <!-- Create the title foil -->
- <g id='title' display='inline'>
- <xsl:call-template name='render-background'>
- <xsl:with-param name='mode'>title</xsl:with-param>
- <xsl:with-param name='id' select='"title-bg"'/>
- </xsl:call-template>
-
- <text id='title-main' x='50%' y='33.3%' text-anchor='middle' xsl:use-attribute-sets='text-title'>
- <xsl:value-of select='/slides/slidesinfo/title'/>
- </text>
- <g id='title-author'>
- <xsl:apply-templates select='/slides/slidesinfo/author|/slides/slidesinfo/corpauthor'/>
- </g>
-
- <set attributeName='display' to='none' attributeType='CSS'>
- <xsl:attribute name='begin'>
- <xsl:text>title.click</xsl:text>
- </xsl:attribute>
- <xsl:attribute name='end'>
- <xsl:text>foil1-previous-button.click; </xsl:text>
- <xsl:value-of select='concat("foil", count(//foil), ".click")'/>
- <xsl:for-each select='//foil'>
- <xsl:value-of select='concat("; foil", count(preceding-sibling::foil|preceding::foil) + 1, "-title-button.click")'/>
- </xsl:for-each>
- </xsl:attribute>
- </set>
- </g>
-
- <!-- Create the TOC -->
- <xsl:if test='foilgroup'>
- <g id='toc' display='none'>
-
- <xsl:call-template name='render-background'>
- <xsl:with-param name='mode'>toc</xsl:with-param>
- <xsl:with-param name='id' select='"index-bg"'/>
- </xsl:call-template>
-
- <text id='toc-main' x='50%' y='50' text-anchor='middle' xsl:use-attribute-sets='text-title'>
- <xsl:value-of select='/slides/slidesinfo/title'/>
- </text>
-
- <set attributeName='display' to='inline' attributeType='CSS'>
- <xsl:attribute name='begin'>
- <xsl:text>title.click</xsl:text>
- <xsl:for-each select='//foil'>
- <xsl:value-of select='concat("; foil", count(preceding-sibling::foil|preceding::foil) + 1, "-toc-button.click")'/>
- </xsl:for-each>
- </xsl:attribute>
- <xsl:attribute name='end'>
- <xsl:text>toc.click; toc-content.click</xsl:text>
- <xsl:for-each select='//foilgroup'>
- <xsl:value-of select='concat("; index-foilgroup-", count(preceding-sibling::foilgroup|preceding::foilgroup) + 1, ".click")'/>
- </xsl:for-each>
- </xsl:attribute>
- </set>
-
- </g>
- <g id='toc-content' display='none'>
- <xsl:call-template name='layout-toc-columns'>
- <xsl:with-param name='nodes' select='foilgroup'/>
- <xsl:with-param name='x'>
- <xsl:choose>
- <xsl:when test='count(foilgroup) > $toc.line.max'>
- <xsl:text>50</xsl:text>
- </xsl:when>
- <xsl:otherwise>75</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- <set attributeName='display' to='inline' attributeType='CSS'>
- <xsl:attribute name='begin'>
- <xsl:text>title.click</xsl:text>
- <xsl:for-each select='//foil'>
- <xsl:value-of select='concat("; foil", count(preceding-sibling::foil|preceding::foil) + 1, "-toc-button.click")'/>
- </xsl:for-each>
- </xsl:attribute>
- <xsl:attribute name='end'>
- <xsl:text>toc.click; toc-content.click</xsl:text>
- <xsl:for-each select='//foilgroup'>
- <xsl:value-of select='concat("; index-foilgroup-", count(preceding-sibling::foilgroup|preceding::foilgroup) + 1, ".click")'/>
- </xsl:for-each>
- </xsl:attribute>
- </set>
- </g>
- </xsl:if>
-
- <xsl:apply-templates select='*[not(self::slidesinfo)]'/>
-
- </svg>
- </xsl:template>
-
- <!-- The application is expected to override these templates -->
- <xsl:template name='svg.defs'/>
- <xsl:template name='render-background'>
- <!-- mode lets us know what kind of foil is being produced -->
- <xsl:param name='mode'/>
-
- <!-- id is a required parameter to include in the generated graphics.
- - This is important for slide transitions.
- -->
- <xsl:param name='id'/>
-
- <!-- This background covers most of the foil area,
- - but leaves a space in the lower left corner for the
- - controls
- -->
-
- <xsl:choose>
- <xsl:when test='$mode = "toc"'>
- <g id='{$id}'>
- <!--
- <rect width='{2 * $foil.width}' height='75' style='fill: {$toc.bg.color}; stroke: none'/>
--->
- <rect width="{2 * $foil.width}" height="{$foil.height - 200}" style="fill: {$toc.bg.color}; stroke: none"/>
- <rect transform='translate(100 {$foil.height - 200})' width="{2 * $foil.width}" height="200" style="fill: {$toc.bg.color}; stroke: none"/>
- </g>
- </xsl:when>
- <xsl:otherwise>
- <g id="{$id}">
- <rect width="{2 * $foil.width}" height="{$foil.height - 200}" style="fill: {$bg.color}; stroke: none"/>
- <rect transform='translate(100 {$foil.height - 200})' width="{2 * $foil.width}" height="200" style="fill: {$bg.color}; stroke: none"/>
- </g>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match='author'>
- <text x='50%' y='60%' text-anchor='middle' xsl:use-attribute-sets='text-author'>
- <tspan>
- <xsl:apply-templates select='firstname'/>
- </tspan>
- <tspan>
- <xsl:text> </xsl:text>
- </tspan>
- <tspan>
- <xsl:apply-templates select='surname'/>
- </tspan>
- <xsl:if test='affiliation'>
- <tspan x='0' y='20'>
- <xsl:apply-templates select='affiliation'/>
- </tspan>
- </xsl:if>
- </text>
- </xsl:template>
- <xsl:template match='corpauthor'>
- <text x='50%' y='70%' text-anchor='middle' xsl:use-attribute-sets='text-author'>
- <xsl:apply-templates/>
- </text>
- </xsl:template>
-
- <xsl:template name='layout-toc-columns'>
- <xsl:param name='nodes'/>
- <xsl:param name='entries-are-links' select='"yes"'/>
- <xsl:param name='highlight'/>
- <xsl:param name='x' select='50'/>
-
- <xsl:choose>
- <xsl:when test='not($nodes)'/>
-
- <xsl:otherwise>
- <xsl:for-each select='$nodes[position() &lt;= $toc.line.max]'>
- <g>
- <xsl:if test='$entries-are-links = "yes"'>
- <xsl:attribute name='id'>
- <xsl:text>index-foilgroup-</xsl:text>
- <xsl:value-of select='count(preceding-sibling::foilgroup|preceding::foilgroup) + 1'/>
- </xsl:attribute>
- </xsl:if>
- <text x='{$x}' y='{position() * 35 + 75}' xsl:use-attribute-sets='text-main'>
- <xsl:if test='$highlight and generate-id($highlight) = generate-id(.)'>
- <xsl:attribute name='fill'>#ff8000</xsl:attribute>
- <xsl:attribute name='stroke'>#ff8000</xsl:attribute>
- </xsl:if>
- <xsl:value-of select='title'/>
- </text>
- <xsl:if test='$entries-are-links = "yes"'>
- <set attributeName='fill' attributeType='CSS' to='#ff0033' begin='mouseover' end='mouseout'/>
- <set attributeName='stroke' attributeType='CSS' to='#ff0033' begin='mouseover' end='mouseout'/>
- </xsl:if>
- </g>
- </xsl:for-each>
-
- <xsl:call-template name='layout-toc-columns'>
- <xsl:with-param name='nodes' select='$nodes[position() > $toc.line.max]'/>
- <xsl:with-param name='entries-are-links' select='$entries-are-links'/>
- <xsl:with-param name='highlight' select='$highlight'/>
- <xsl:with-param name='x' select='$x + 200'/>
- </xsl:call-template>
-
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match='foilgroup'>
- <xsl:variable name='fg-num' select='count(preceding-sibling::foilgroup) + 1'/>
-
- <!-- Add a separator foil to indicate progress -->
- <g id='toc-sep-{$fg-num}' display='none'>
- <xsl:call-template name='render-background'>
- <xsl:with-param name='mode'>toc</xsl:with-param>
- <xsl:with-param name='id' select='concat("toc-sep-", $fg-num, "-bg")'/>
- </xsl:call-template>
-
- <text id='toc-sep-{$fg-num}-main' x='50%' y='50' text-anchor='middle' xsl:use-attribute-sets='text-title'>
- <xsl:value-of select='/slides/slidesinfo/title'/>
- </text>
-
- <set attributeName='display' to='inline' attributeType='CSS' end='toc-sep-{$fg-num}.click; toc-sep-{$fg-num}-content.click'>
- <xsl:attribute name='begin'>
- <xsl:choose>
- <xsl:when test='$fg-num = 1'>
- <xsl:text>index-foilgroup-1.click; toc.click; toc-content.click</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>index-foilgroup-</xsl:text>
- <xsl:value-of select='count(preceding-sibling::foilgroup) + 1'/>
- <xsl:text>.click; foil</xsl:text>
- <xsl:value-of select='count(preceding::foil)'/>
- <xsl:text>.click</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </set>
-
- </g>
- <g id='toc-sep-{$fg-num}-content' display='none'>
- <xsl:call-template name='layout-toc-columns'>
- <xsl:with-param name='nodes' select='/slides/foilgroup'/>
- <xsl:with-param name='entries-are-links' select='no'/>
- <xsl:with-param name='highlight' select='.'/>
- <xsl:with-param name='x'>
- <xsl:choose>
- <xsl:when test='count(/slides/foilgroup) > $toc.line.max'>
- <xsl:text>50</xsl:text>
- </xsl:when>
- <xsl:otherwise>75</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- <set attributeName='display' to='inline' attributeType='CSS' end='toc-sep-{$fg-num}.click; toc-sep-{$fg-num}-content.click'>
- <xsl:attribute name='begin'>
- <xsl:choose>
- <xsl:when test='$fg-num = 1'>
- <xsl:text>index-foilgroup-1.click; toc.click; toc-content.click</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>index-foilgroup-</xsl:text>
- <xsl:value-of select='count(preceding-sibling::foilgroup) + 1'/>
- <xsl:text>.click; foil</xsl:text>
- <xsl:value-of select='count(preceding::foil)'/>
- <xsl:text>.click</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </set>
- </g>
-
- <!-- still want TOC and Previous buttons -->
-
- <xsl:apply-templates select='foil'/>
- </xsl:template>
-
- <xsl:template match='foil'>
- <xsl:variable name='number' select='count(preceding-sibling::foil|preceding::foil) + 1'/>
-
- <g id='foil{$number}' display='none'>
- <xsl:call-template name='render-background'>
- <xsl:with-param name='id' select='concat("foil", $number, "-bg")'/>
- </xsl:call-template>
-
- <text id='foil{$number}-title' transform='translate(50 50)'>
- <tspan id='foil{$number}-title-foilgroup' x='0' y='0' xsl:use-attribute-sets='text-title'>
- <xsl:choose>
- <xsl:when test='parent::foilgroup'>
- <xsl:value-of select='../title'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='/slides/slidesinfo/title'/>
- </xsl:otherwise>
- </xsl:choose>
- </tspan>
- <tspan> - </tspan>
- <tspan id='foil{$number}-title-foil' xsl:use-attribute-sets='text-title'>
- <xsl:value-of select='title'/>
- </tspan>
- </text>
-
- <g transform='translate(50 100)'>
- <xsl:apply-templates select='*[not(self::title)][1]'/>
- </g>
-
- <xsl:call-template name='foil-events'>
- <xsl:with-param name='number' select='$number'/>
- </xsl:call-template>
-
- </g>
-
- <!-- Add previous and TOC buttons
- - (no need for next, mouse click does that)
- -->
-
- <g id='foil{$number}-toc-button' transform='translate(20 {$foil.height - 180})' display='none'>
- <g style='opacity: 0'>
- <xsl:call-template name='toc-button'/>
- <text x='25' y='28'>TOC</text>
- <set attributeName='opacity' to='1' attributeType='CSS' begin='mouseover' end='mouseout'/>
- </g>
-
- <xsl:call-template name='foil-events'>
- <xsl:with-param name='number' select='$number'/>
- </xsl:call-template>
-
- </g>
- <xsl:if test='$number != 1'>
- <g id='foil{$number}-previous-button' transform='translate(20 {$foil.height - 150})' display='none'>
- <g style='opacity: 0'>
- <xsl:call-template name='previous-button'/>
- <text x='17' y='28'>Previous</text>
- <set attributeName='opacity' to='1' attributeType='CSS' begin='mouseover' end='mouseout'/>
- </g>
-
- <xsl:call-template name='foil-events'>
- <xsl:with-param name='number' select='$number'/>
- </xsl:call-template>
-
- </g>
- </xsl:if>
-
- </xsl:template>
-
- <!-- The application may override these -->
- <xsl:template name='toc-button'/>
- <xsl:template name='previous-button'/>
-
- <xsl:template match='foilinfo|foil/title|foil/subtitle|foil/titleabbrev'/>
-
- <xsl:template name='foil-events'>
- <xsl:param name='number' select='0'/>
- <xsl:param name='attribute' select='"display"'/>
- <xsl:param name='onvalue' select='"inline"'/>
- <xsl:param name='offvalue' select='"none"'/>
-
- <!-- Must account for first and last foils and also foilgroup separators:
- - On first foil, previous goes back to main TOC,
- - If no TOC foil, then go to title foil instead.
- - First foil in foilgroup follows group separator.
- - Last foil in foilgroup goes to next group separator,
- - except last foil in last group goes to main TOC.
- -->
-
- <xsl:choose>
- <xsl:when test='$number = 1'>
- <!-- This is the very first foil -->
- <set attributeName='{$attribute}' to='{$onvalue}' attributeType='CSS'
- end='foil{$number}.click; foil{$number}-toc-button.click'>
- <xsl:attribute name='begin'>
- <xsl:choose>
- <xsl:when test='parent::foilgroup'>
- <xsl:value-of select='concat("toc-sep-", count(preceding::foilgroup) + 1, ".click")'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>title.click</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test='parent::foilgroup and not(preceding-sibling::foil)'>
- <xsl:value-of select='concat("; index-foilgroup-", count(preceding::foilgroup) + 1, ".click")'/>
- </xsl:if>
- <xsl:value-of select='concat("; foil", $number + 1, "-previous-button.click")'/>
- </xsl:attribute>
- </set>
- </xsl:when>
- <xsl:when test='count(following-sibling::foil|following::foil) = 0'>
- <!-- This is the very last foil -->
- <set attributeName='{$attribute}' to='{$onvalue}' attributeType='CSS'
- end='foil{$number}.click; foil{$number}-toc-button.click; foil{$number}-previous-button.click'>
- <xsl:attribute name='begin'>
- <xsl:choose>
- <xsl:when test='parent::foilgroup and not(preceding-sibling::foil)'>
- <xsl:value-of select='concat("; index-foilgroup-", count(preceding::foilgroup) + 1, ".click; toc-sep-", count(preceding::foilgroup) + 1, ".click")'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='concat("foil", $number - 1, ".click")'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </set>
- </xsl:when>
- <xsl:otherwise>
- <set attributeName='{$attribute}' to='{$onvalue}' attributeType='CSS'
- end='foil{$number}.click; foil{$number}-toc-button.click; foil{$number}-previous-button.click'>
- <xsl:attribute name='begin'>
- <xsl:value-of select='concat("foil", $number + 1, "-previous-button.click")'/>
- <xsl:choose>
- <xsl:when test='parent::foilgroup and not(preceding-sibling::foil)'>
- <xsl:value-of select='concat("; index-foilgroup-", count(preceding::foilgroup) + 1, ".click; toc-sep-", count(preceding::foilgroup) + 1, ".click")'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select='concat("; foil", $number - 1, ".click")'/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </set>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template match="para">
- <xsl:variable name='depth'>
- <xsl:choose>
- <xsl:when test='@depth'>
- <xsl:value-of select='@depth'/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>1</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <g transform='translate(0 30)'>
- <xsl:if test='not(@style)'>
- <g transform='translate({25 * ($depth - 1)} 0)'>
- <xsl:call-template name='bullet'/>
- </g>
- </xsl:if>
-
- <text y="10">
- <xsl:attribute name='x'>
- <xsl:value-of select='25 * $depth'/>
- </xsl:attribute>
- <xsl:if test='@style'>
- <xsl:attribute name='style'>
- <xsl:value-of select='@style'/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:apply-templates/>
- </text>
-
- <xsl:apply-templates select='following-sibling::*[1]'/>
- </g>
- </xsl:template>
-
- <xsl:template match='text()'>
- <tspan>
- <xsl:value-of select='.'/>
- </tspan>
- </xsl:template>
-
- <xsl:template match='emphasis'>
- <xsl:variable name='style'>
- <xsl:choose>
- <xsl:when test='@role = "bold"'>
- <xsl:text>font-weight: bold</xsl:text>
- </xsl:when>
- <xsl:when test='@role = "italic"'>
- <xsl:text>font-style: italic</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>font-style: italic</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <tspan style='{$style}'>
- <xsl:value-of select='.'/>
- </tspan>
- </xsl:template>
-
- <xsl:template match='listitem'>
- <xsl:call-template name="bullet"/>
- <g transform='translate(20 0)'>
- <xsl:apply-templates/>
- </g>
- </xsl:template>
-
- <xsl:template name="bullet">
- <xsl:choose>
- <xsl:when test="@depth = 1 or count(ancestor-or-self::listitem) = 1">
- <xsl:call-template name="large-filled-circle"/>
- </xsl:when>
- <xsl:when test="@depth = 2 or count(ancestor-or-self::listitem) = 2">
- <xsl:call-template name="small-open-circle"/>
- </xsl:when>
- <xsl:when test="@depth = 3 or count(ancestor-or-self::listitem) = 3">
- <xsl:call-template name="small-filled-circle"/>
- </xsl:when>
- <xsl:when test="@depth = 4 or count(ancestor-or-self::listitem) = 4">
- <xsl:call-template name="closed-toggle"/>
- </xsl:when>
- <xsl:when test="@depth = 5 or count(ancestor-or-self::listitem) = 5">
- <xsl:call-template name="large-filled-circle"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="small-open-box"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="closed-toggle">
- <polyline fill="white" stroke="black" stroke-width="1" points="0 0 10 5 0 10 0 0"/>
- </xsl:template>
- <xsl:template name="large-filled-circle">
- <circle fill="black" cx="10" cy="6" r="5"/>
- </xsl:template>
- <xsl:template name="small-filled-circle">
- <circle fill="black" cx="10" cy="6" r="2.5"/>
- </xsl:template>
- <xsl:template name="small-open-circle">
- <circle fill="none" stroke="black" stroke-width="1" cx="10" cy="6" r="2.5"/>
- </xsl:template>
- <xsl:template name="small-open-box">
- <rect fill="none" stroke="black" stroke-width="1" x="5" y="5" width="5" height="5"/>
- </xsl:template>
-
- <xsl:template match="subject">
- <tspan style="font-weight: bold">
- <xsl:apply-templates/>
- </tspan>
- </xsl:template>
-
- <xsl:template match="informalexample">
- </xsl:template>
- <xsl:template match="programlisting">
- <!-- Output lines verbatim -->
- </xsl:template>
-
- <xsl:template match="imageobject|mediaobject">
- <xsl:apply-templates/>
- </xsl:template>
- <xsl:template match='textobject|videoobject'/>
- <xsl:template match='imagedata'>
- <g transform='translate(0 30)'>
- <image xlink:href='{@fileref}' x='0' y='0' width='600' height='400'/>
- </g>
- </xsl:template>
-
- <xsl:template match='ulink'>
- <a xlink:href='{@url}'>
- <xsl:apply-templates/>
- </a>
- </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/slides/tools/dbs3-upgrade.xsl b/slides/tools/dbs3-upgrade.xsl
new file mode 100644
index 0000000..e757c97
--- /dev/null
+++ b/slides/tools/dbs3-upgrade.xsl
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0">
+
+<xsl:output method="xml" encoding="utf-8" indent="no"/>
+
+<xsl:preserve-space elements="*"/>
+
+<xsl:template match="/slides">
+ <dbs:slides>
+ <xsl:call-template name="process.content"/>
+ </dbs:slides>
+</xsl:template>
+
+<xsl:template name="process.content">
+ <xsl:apply-templates select="slidesinfo|foilgroupinfo|foilinfo|title|titleabbrev|subtitle"/>
+
+ <xsl:apply-templates select="speakernotes"/>
+
+ <xsl:apply-templates select="*[not(self::speakernotes)][not(self::title)][not(self::titleabbrev)][not(self::subtitle)][not(self::slidesinfo)][not(self::foilinfo)][not(self::foilgroupinfo)]"/>
+</xsl:template>
+
+<xsl:template match="foil">
+ <dbs:foil>
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:call-template name="process.content"/>
+ </dbs:foil>
+</xsl:template>
+
+<xsl:template match="foilgroup">
+ <dbs:foilgroup>
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:call-template name="process.content"/>
+ </dbs:foilgroup>
+</xsl:template>
+
+<xsl:template match="speakernotes">
+ <dbs:speakernotes>
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:apply-templates select="*"/>
+ </dbs:speakernotes>
+</xsl:template>
+
+<xsl:template match="slidesinfo|foilgroupinfo|foilinfo">
+ <info>
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:apply-templates select="*"/>
+ </info>
+</xsl:template>
+
+<!-- ******************************************************************
+ DB4 -> DB5 related, adapted from db4-upgrade.xsl
+ ****************************************************************** -->
+
+<xsl:template name="copy.attributes">
+ <xsl:param name="suppress" select="''"/>
+
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'lang'">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'id'">
+ <xsl:attribute name="xml:id">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name(.) = 'moreinfo'"/>
+ <xsl:when test="$suppress = local-name(.)"/>
+ <xsl:otherwise>
+ <xsl:copy/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="*">
+ <xsl:element name="{local-name()}" namespace="http://docbook.org/ns/docbook">
+ <xsl:call-template name="copy.attributes"/>
+
+ <xsl:apply-templates />
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="author[not(personname)]|editor[not(personname)]|othercredit[not(personname)]">
+ <xsl:element name="{local-name()}" namespace="http://docbook.org/ns/docbook">
+ <xsl:call-template name="copy.attributes"/>
+
+ <personname>
+ <xsl:apply-templates select="honorific|firstname|surname|othername|lineage"/>
+ </personname>
+
+ <xsl:apply-templates select="*[not(self::honorific|self::firstname|self::surname
+ |self::othername|self::lineage)]"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="address|programlisting|screen|funcsynopsisinfo
+ |classsynopsisinfo|literallayout">
+ <xsl:element name="{local-name()}" namespace="http://docbook.org/ns/docbook">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'format'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="inlinegraphic[@format='linespecific']">
+ <textobject>
+ <textdata>
+ <xsl:call-template name="copy.attributes"/>
+ </textdata>
+ </textobject>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata>
+ <xsl:call-template name="copy.attributes"/>
+ </imagedata>
+ </imageobject>
+ </inlinemediaobject>
+</xsl:template>
+
+<xsl:template match="graphic[@format='linespecific']">
+ <mediaobject>
+ <textobject>
+ <textdata>
+ <xsl:call-template name="copy.attributes"/>
+ </textdata>
+ </textobject>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="graphic">
+ <mediaobject>
+ <imageobject>
+ <imagedata>
+ <xsl:call-template name="copy.attributes"/>
+ </imagedata>
+ </imageobject>
+ </mediaobject>
+</xsl:template>
+
+<xsl:template match="ulink" priority="200">
+ <xsl:choose>
+ <xsl:when test="node()">
+ <link xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <uri xlink:href="{@url}">
+ <xsl:call-template name="copy.attributes">
+ <xsl:with-param name="suppress" select="'url'"/>
+ </xsl:call-template>
+ <xsl:value-of select="@url"/>
+ </uri>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*[namespace-uri()]">
+ <xsl:copy-of select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/slides/xhtml/css.xsl b/slides/xhtml/css.xsl
deleted file mode 100644
index d0b47c6..0000000
--- a/slides/xhtml/css.xsl
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<!-- ====================================================================== -->
-
-<xsl:template name="css-file">
- <xsl:param name="css" select="'slides.css'"/>
-
- <xsl:variable name="source.css.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'css-stylesheet-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.css.dir != ''">
- <xsl:value-of select="$source.css.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$css.stylesheet.dir != ''">
- <xsl:value-of select="$css.stylesheet.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$css"/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- active navigation images -->
-
-<xsl:template name="css.stylesheet">
- <xsl:param name="css" select="$css.stylesheet"/>
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="css-file">
- <xsl:with-param name="css" select="$css"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/default.xsl b/slides/xhtml/default.xsl
deleted file mode 100644
index 86f2cb3..0000000
--- a/slides/xhtml/default.xsl
+++ /dev/null
@@ -1,246 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
-
-<xsl:param name="css.stylesheet" select="'slides-default.css'"/>
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <xsl:call-template name="generate.toc.hide.show"/>
- <td align="left" width="10%">
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
-
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>&#160;</xsl:otherwise>
- </xsl:choose>
- </td>
- <td align="center" width="80%">
- <xsl:variable name="prestitle">
- <xsl:value-of select="(/slides/slidesinfo/title |/slides/title)[1]"/>
- </xsl:variable>
-
- <span class="navheader">
- <xsl:value-of select="$prestitle"/>
- </span>
- </td>
- <td align="right" width="10%">
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
-
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>&#160;</xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <span class="index">
- <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
- </span>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <td align="left" width="10%">
- <span class="toclink">
- <a href="{$toc.html}">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </a>
- </span>
- </td>
- <td align="center" width="80%">
- <xsl:text>&#160;</xsl:text>
- </td>
- <td align="right" width="10%">
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template name="titlepage-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="(following::foilgroup|following::foil)[1]" mode="filename"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template name="toc-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <td align="left">
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template name="toc-bottom-nav">
- <div class="navfoot">
- <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <a href="{$titlefoil.html}">
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="generate.toc.hide.show">
- <xsl:if test="$toc.hide.show != 0">
- <td>
- <img hspace="4" alt="Hide/Show TOC">
- <xsl:attribute name="src">
- <xsl:call-template name="hidetoc.image"/>
- </xsl:attribute>
- <xsl:attribute name="onClick">
- <xsl:text>toggletoc(this,</xsl:text>
- <xsl:value-of select="$toc.width"/>
- <xsl:text>,'</xsl:text>
- <xsl:call-template name="hidetoc.image"/>
- <xsl:text>','</xsl:text>
- <xsl:call-template name="showtoc.image"/>
- <xsl:text>');</xsl:text>
- </xsl:attribute>
- </img>
- </td>
- </xsl:if>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:*">
- <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/flat.xsl b/slides/xhtml/flat.xsl
deleted file mode 100644
index e0c57e9..0000000
--- a/slides/xhtml/flat.xsl
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:template match="/">
- <html>
- <head>
- <title><xsl:value-of select="/slides/slidesinfo/title"/></title>
- </head>
- <body>
- <xsl:apply-templates/>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="slidesinfo">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div id="{$id}" class="titlepage">
- <div class="titlepage-body">
- <xsl:call-template name="titlepage-body"/>
- </div>
- </div>
-</xsl:template>
-
-<xsl:template match="slides" mode="toc">
- <!-- nop -->
-</xsl:template>
-
-<xsl:template match="foil">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div class="{name(.)}" id="{$id}">
- <div class="foil-body">
- <xsl:call-template name="foil-body"/>
- </div>
- <xsl:call-template name="process.footnotes"/>
- </div>
-</xsl:template>
-
-<xsl:template match="foilgroup">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div class="{name(.)}" id="{$id}">
- <div class="foilgroup-body">
- <xsl:call-template name="foilgroup-body"/>
- </div>
- <xsl:call-template name="process.footnotes"/>
- </div>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="author" mode="titlepage.mode">
- <div class="{name(.)}">
- <h2 class="{name(.)}"><xsl:call-template name="person.name"/></h2>
- <xsl:apply-templates mode="titlepage.mode" select="./contrib"/>
- <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
- </div>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/frames.xsl b/slides/xhtml/frames.xsl
deleted file mode 100644
index aea4172..0000000
--- a/slides/xhtml/frames.xsl
+++ /dev/null
@@ -1,1982 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="titlefoil.html" select="concat('titlepg', $html.ext)"/>
-
-<xsl:param name="css.stylesheet" select="'slides-frames.css'"/>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="doctype-public">
- <xsl:param name="frameset" select="0"/>
- <xsl:choose>
- <xsl:when test="$stylesheet.result.type='html'">
- <xsl:choose>
- <!-- Assume when chunker.output.doctype-public is set the user
- wants to have doctypes written out. If frameset is set
- then overide with a frameset public identifier. -->
- <xsl:when test="$chunker.output.doctype-public != '' and $frameset != 0">
- <xsl:text>-//W3C//DTD HTML 4.01 Frameset//EN</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$chunker.output.doctype-public"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$stylesheet.result.type='xhtml'">
- <xsl:choose>
- <xsl:when test="$frameset != 0">
- <xsl:text>-//W3C//DTD XHTML 1.0 Frameset//EN</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>-//W3C//DTD XHTML 1.0 Transitional//EN</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="doctype-system">
- <xsl:param name="frameset" select="0"/>
- <xsl:choose>
- <xsl:when test="$stylesheet.result.type='html'">
- <xsl:choose>
- <!-- Assume when chunker.output.doctype-system is set the user
- wants to have doctypes written out. If frameset is set
- then overide with a frameset system identifier. -->
- <xsl:when test="$chunker.output.doctype-system != '' and $frameset != 0">
- <xsl:text>http://www.w3.org/TR/html4/loose.dtd</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$chunker.output.doctype-system"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$stylesheet.result.type='xhtml'">
- <xsl:choose>
- <xsl:when test="$frameset != 0">
- <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slides">
- <xsl:variable name="title">
- <xsl:choose>
- <xsl:when test="(slidesinfo/titleabbrev|titleabbrev)">
- <xsl:value-of select="(slidesinfo/titleabbrev|titleabbrev)[1]"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="(slidesinfo/title|title)[1]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="toc.rows" select="1+count(//foilgroup)+count(//foil)"/>
- <xsl:variable name="toc.height" select="$toc.rows * $toc.row.height"/>
-
- <xsl:if test="$overlay != 0 and $multiframe != 0">
- <xsl:message terminate="yes">
- <xsl:text>Multiframe and overlay are mutually exclusive.</xsl:text>
- </xsl:message>
- </xsl:if>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="1"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="1"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,'frames', $html.ext)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="$title"/></title>
- </head>
- <frameset cols="{$toc.width},*" id="topframe">
- <frame src="{concat('toc', $html.ext)}" name="toc" id="toc" frameborder="1"/>
- <frame src="{$titlefoil.html}" name="foil" id="foil"/>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <a href="{concat('titleframe', $html.ext)}">
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </a>
- </body>
- </noframes>
- </frameset>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'toc',$html.ext)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>TOC - <xsl:value-of select="$title"/></title>
- <xsl:call-template name="system.head.content"/>
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0 or $overlay.logo != ''">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0' or $overlay.logo != ''">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$dynamic.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
-function init() {
- var width = </xsl:text>
-<xsl:value-of select="$toc.width"/>
-<xsl:text>, height = </xsl:text>
-<xsl:value-of select="$toc.row.height"/>
-<xsl:text>;
- myList = new List(true, width, height, "</xsl:text>
-<xsl:value-of select="$toc.bg.color"/>
-<xsl:text>","</xsl:text>
-<xsl:call-template name="plus.image"/>
-<xsl:text>","</xsl:text>
-<xsl:call-template name="minus.image"/>
-<xsl:text>");
-</xsl:text>
-<xsl:apply-templates mode="ns-toc"/>
- <xsl:text disable-output-escaping="yes">
- myList.build(0,0);
-}
- // --&gt;
-</xsl:text>
- </script>
- <style type="text/css">
- <xsl:text>#spacer { position: absolute; height: </xsl:text>
- <xsl:value-of select="$toc.height"/>
- <xsl:text>; }
-</xsl:text>
- </style>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="toc">
- <xsl:call-template name="body.attributes"/>
-
- <xsl:if test="$overlay.logo != ''">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('ll');</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:if test="$dynamic.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>init(</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- <xsl:if test="$overlay.logo != ''">
- <xsl:text>overlaySetup('ll');</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:choose>
- <xsl:when test="$dynamic.toc = 0">
- <div class="toc">
- <xsl:apply-templates mode="toc"/>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <div id="spacer"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="$overlay.logo != ''">
- <div style="position: absolute; visibility: visible;" id="overlayDiv">
- <img src="{$overlay.logo}" alt="logo" vspace="20"/>
- </div>
- </xsl:if>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slidesinfo">
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,$titlefoil.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <xsl:choose>
- <xsl:when test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="singleframe"/>
- </xsl:otherwise>
- </xsl:choose>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:if test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe-top"/>
- <xsl:apply-templates select="." mode="multiframe-body"/>
- <xsl:apply-templates select="." mode="multiframe-bottom"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
- <xsl:attribute name="onload">
- <xsl:text>javascript:body.focus()</xsl:text>
- </xsl:attribute>
- <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
- </frame>
- <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
- </frame>
- <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
- </frame>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <p>
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </p>
- </body>
- </noframes>
- </frameset>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe-top">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0' or $overlay.logo != ''">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe-body">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Body</title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <xsl:apply-templates select="." mode="singleframe"/>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="multiframe-bottom">
- <xsl:variable name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="singleframe">
- <xsl:param name="thisfoil">
- <xsl:value-of select="$titlefoil.html"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
-
- <body class="titlepage">
- <xsl:call-template name="body.attributes"/>
- <xsl:choose>
- <xsl:when test="$active.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>newPage('</xsl:text>
- <xsl:value-of select="$titlefoil.html"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc');</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onload">
- <xsl:text>this.focus()</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
- <xsl:apply-templates mode="titlepage.mode"/>
- </div>
-
- <xsl:if test="$multiframe=0">
- <div id="overlayDiv" class="navfoot">
- <xsl:choose>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position:absolute;visibility:visible;</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="style">
- <xsl:text>padding-top: 2in;</xsl:text>
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
-
- <table width="100%" border="0" cellspacing="0" cellpadding="0" summary="Navigation">
- <tr>
- <td align="left" width="80%" valign="top">
- <span class="navfooter">
- <!-- suppress copyright here; it's probably already on the titlepage
- <xsl:apply-templates select="/slides/slidesinfo/copyright"
- mode="slide.footer.mode"/>
- -->
- <xsl:text>&#160;</xsl:text>
- </span>
- </td>
- <td align="right" width="20%" valign="top">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </td>
- </tr>
- </table>
- </div>
- </xsl:if>
- </body>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
- <tr>
- <td align="left" valign="bottom" width="10%">
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- <td width="80%" align="center" valign="bottom">
- <xsl:call-template name="foil.number"/>
- </td>
- <td align="right" valign="bottom" width="10%">
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
- <tr>
- <td align="left" valign="top">
- <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
- <xsl:text>&#160;</xsl:text>
- </td>
-
- <td align="right" valign="top">
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:if test="$multiframe != 0">
- <xsl:attribute name="target">foil</xsl:attribute>
- </xsl:if>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">&#160;</span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="foilgroup">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,$thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <xsl:choose>
- <xsl:when test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="singleframe"/>
- </xsl:otherwise>
- </xsl:choose>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:if test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe-top"/>
- <xsl:apply-templates select="." mode="multiframe-body"/>
- <xsl:apply-templates select="." mode="multiframe-bottom"/>
- </xsl:if>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe">
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
- <xsl:attribute name="onload">
- <xsl:text>javascript:body.focus()</xsl:text>
- </xsl:attribute>
- <frame src="top-{$thisfoilgroup}" name="top" id="top" marginheight="0" frameborder="0"/>
- <frame src="body-{$thisfoilgroup}" name="body" id="body" marginheight="0" frameborder="0"/>
- <frame src="bot-{$thisfoilgroup}" name="bottom" id="bottom" marginheight="0" frameborder="0"/>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <p>
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </p>
- </body>
- </noframes>
- </frameset>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe-top">
- <xsl:variable name="foilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'top-',$foilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
- <xsl:call-template name="foilgroup-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe-body">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Body</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <xsl:apply-templates select="." mode="singleframe"/>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="multiframe-bottom">
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
- <xsl:call-template name="foilgroup-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="singleframe">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
- <body class="foilgroup">
- <xsl:call-template name="body.attributes"/>
- <xsl:choose>
- <xsl:when test="$active.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>newPage('</xsl:text>
- <xsl:value-of select="$thisfoilgroup"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc');</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:if test="$multiframe=0">
- <xsl:call-template name="foilgroup-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </xsl:if>
-
- <div class="foilgroup-body" id="{$id}">
- <xsl:call-template name="foilgroup-body">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
-
- <xsl:if test="$multiframe=0">
- <div id="overlayDiv">
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position:absolute;visibility:visible;</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="foilgroup-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </xsl:if>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="foil">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <xsl:variable name="doctype-public">
- <xsl:call-template name="doctype-public">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="doctype-system">
- <xsl:call-template name="doctype-system">
- <xsl:with-param name="frameset" select="$multiframe"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="doctype-public" select="$doctype-public"/>
- <xsl:with-param name="doctype-system" select="$doctype-system"/>
- <xsl:with-param name="filename" select="concat($base.dir,$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <xsl:choose>
- <xsl:when test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="singleframe"/>
- </xsl:otherwise>
- </xsl:choose>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:if test="$multiframe != 0">
- <xsl:apply-templates select="." mode="multiframe-top"/>
- <xsl:apply-templates select="." mode="multiframe-body"/>
- <xsl:apply-templates select="." mode="multiframe-bottom"/>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe">
- <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
-
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <frameset rows="{$multiframe.navigation.height},*,{$multiframe.navigation.height}" id="foil">
- <xsl:attribute name="onload">
- <xsl:text>javascript:body.focus()</xsl:text>
- </xsl:attribute>
- <frame src="top-{$thisfoil}" name="top" id="top" marginheight="0" frameborder="0">
- </frame>
- <frame src="body-{$thisfoil}" name="body" id="body" marginheight="0" frameborder="0">
- </frame>
- <frame src="bot-{$thisfoil}" name="bottom" id="bottom" marginheight="0" frameborder="0">
- </frame>
- <noframes>
- <body class="frameset">
- <xsl:call-template name="body.attributes"/>
- <p>
- <xsl:text>Your browser doesn't support frames.</xsl:text>
- </p>
- </body>
- </noframes>
- </frameset>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe-top">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'top-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javajcript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="topnavigation" bgcolor="{$multiframe.top.bgcolor}">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe-body">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'body-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Body</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
-
- </head>
- <xsl:apply-templates select="." mode="singleframe"/>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="multiframe-bottom">
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir,'bot-',$thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title>Navigation</title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0 or $dynamic.toc != 0 or $active.toc != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body class="botnavigation" bgcolor="{$multiframe.bottom.bgcolor}">
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="singleframe">
- <xsl:param name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <body class="foil">
- <xsl:call-template name="body.attributes"/>
- <xsl:choose>
- <xsl:when test="$active.toc != 0">
- <xsl:attribute name="onload">
- <xsl:text>newPage('</xsl:text>
- <xsl:value-of select="$thisfoil"/>
- <xsl:text>',</xsl:text>
- <xsl:value-of select="$overlay"/>
- <xsl:text>);</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc');</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:if test="$multiframe=0">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </xsl:if>
-
- <div class="foil-body">
- <xsl:apply-templates/>
- </div>
-
- <xsl:if test="$multiframe=0">
- <div id="overlayDiv">
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position:absolute;visibility:visible;</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </xsl:if>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slidesinfo" mode="toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
- <div id="{$id}" class="toc-slidesinfo">
- <a href="{$titlefoil.html}" target="foil">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:apply-templates select="titleabbrev" mode="toc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="title" mode="toc"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- <hr/>
- </div>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="toc">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
-
- <xsl:variable name="thisfoilgroup">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:variable>
-
- <div class="toc-foilgroup" id="{$id}">
- <img alt="-">
- <xsl:attribute name="src">
- <xsl:call-template name="minus.image"/>
- </xsl:attribute>
- </img>
- <a href="{$thisfoilgroup}" target="foil">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:apply-templates select="titleabbrev" mode="toc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="title" mode="toc"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- <xsl:apply-templates select="foil" mode="toc"/>
- </div>
-</xsl:template>
-
-<xsl:template match="foil" mode="toc">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
- <xsl:variable name="foil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <div id="{$id}" class="toc-foil">
- <img alt="-">
- <xsl:attribute name="src">
- <xsl:call-template name="bullet.image"/>
- </xsl:attribute>
- </img>
- <a href="{$foil}" target="foil">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:apply-templates select="titleabbrev" mode="toc"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="title" mode="toc"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slidesinfo" mode="ns-toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:text>myList.addItem('</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
- <xsl:value-of select="$id"/>
- <xsl:text disable-output-escaping="yes">" class="toc-slidesinfo"&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
- <xsl:value-of select="$titlefoil.html"/>
- <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
-
- <xsl:call-template name="string.subst">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="target">'</xsl:with-param>
- <xsl:with-param name="replacement">\'</xsl:with-param>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
- <xsl:text>');
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="ns-toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:text>subList = new List(false, width, height, "</xsl:text>
-<xsl:value-of select="$toc.bg.color"/>
-<xsl:text>");
-</xsl:text>
- <xsl:text>subList.setIndent(12);
-</xsl:text>
- <xsl:apply-templates select="foil" mode="ns-toc"/>
-
- <xsl:text>myList.addList(subList, '</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
- <xsl:value-of select="$id"/>
- <xsl:text disable-output-escaping="yes">" class="toc-foilgroup"&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
- <xsl:apply-templates select="." mode="filename"/>
- <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
-
- <xsl:call-template name="string.subst">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="target">'</xsl:with-param>
- <xsl:with-param name="replacement">\'</xsl:with-param>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
- <xsl:text>');
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="foil" mode="ns-toc">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
-
- <xsl:choose>
- <xsl:when test="ancestor::foilgroup">
- <xsl:text>subList.addItem('</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>myList.addItem('</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:text disable-output-escaping="yes">&lt;div id="</xsl:text>
- <xsl:value-of select="$id"/>
- <xsl:text disable-output-escaping="yes">" class="toc-foil"&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;img alt="-" src="</xsl:text>
- <xsl:call-template name="bullet.image"/>
- <xsl:text disable-output-escaping="yes">"&gt;&lt;\/img&gt;</xsl:text>
-
- <xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text>
- <xsl:apply-templates select="." mode="filename"/>
- <xsl:text disable-output-escaping="yes">" target="foil"&gt;</xsl:text>
-
- <xsl:call-template name="string.subst">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="target">'</xsl:with-param>
- <xsl:with-param name="replacement">\'</xsl:with-param>
- </xsl:call-template>
-
- <xsl:text disable-output-escaping="yes">&lt;\/a&gt;&lt;\/div&gt;</xsl:text>
- <xsl:text>');
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="speakernotes" mode="ns-toc">
- <!-- nop -->
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/graphics.xsl b/slides/xhtml/graphics.xsl
deleted file mode 100644
index 6317a4b..0000000
--- a/slides/xhtml/graphics.xsl
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<!-- ====================================================================== -->
-
-<xsl:template name="graphics-file">
- <xsl:param name="image" select="'bullet.gif'"/>
-
- <xsl:variable name="source.graphics.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'graphics-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.graphics.dir != ''">
- <xsl:value-of select="$source.graphics.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$graphics.dir != ''">
- <xsl:value-of select="$graphics.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://docbook.sourceforge.net/release/slides/graphics/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$image"/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- active navigation images -->
-
-<xsl:template name="toc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$toc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="home.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$home.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="up.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$up.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="prev.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$prev.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="next.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$next.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- inactive navigation images -->
-
-<xsl:template name="no.toc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.toc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.home.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.home.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.up.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.up.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.prev.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.prev.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="no.next.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$no.next.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- icon images -->
-
-<xsl:template name="bullet.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$bullet.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="plus.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$plus.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="minus.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$minus.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- hide/show ToC images -->
-
-<xsl:template name="hidetoc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$hidetoc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="showtoc.image">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$showtoc.image"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/jscript.xsl b/slides/xhtml/jscript.xsl
deleted file mode 100644
index b3047ee..0000000
--- a/slides/xhtml/jscript.xsl
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
-
-<xsl:template name="script-dir">
- <xsl:variable name="source.script.dir">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="/processing-instruction('dbhtml')"/>
- <xsl:with-param name="attribute" select="'script-dir'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$source.script.dir != ''">
- <xsl:value-of select="$source.script.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:when test="$script.dir != ''">
- <xsl:value-of select="$script.dir"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>http://docbook.sourceforge.net/release/slides/browser/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="script-file">
- <xsl:param name="js" select="'slides.js'"/>
- <xsl:call-template name="script-dir"/>
- <xsl:value-of select="$js"/>
-</xsl:template>
-
-<xsl:template name="ua.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$ua.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbDOM.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbDOM.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbStyle.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbStyle.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbLibrary.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbLibrary.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="xbCollapsibleLists.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$xbCollapsibleLists.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="overlay.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$overlay.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-<xsl:template name="slides.js">
- <!-- Danger Will Robinson: template shadows parameter -->
- <xsl:param name="language" select="'javascript'"/>
- <script type="text/javascript" language="{$language}">
- <xsl:attribute name="src">
- <xsl:call-template name="script-file">
- <xsl:with-param name="js" select="$slides.js"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text> </xsl:text>
- </script>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/param.xml b/slides/xhtml/param.xml
new file mode 100644
index 0000000..1bc7c2e
--- /dev/null
+++ b/slides/xhtml/param.xml
@@ -0,0 +1,824 @@
+<?xml version="1.0" encoding="ASCII"?>
+<book version="5.0" xml:id="slides_xhtml_doc">
+<info>
+<title>Slides XHTML Parameter Reference</title>
+<releaseinfo role="meta">
+$Id$
+</releaseinfo>
+<author>
+ <personname>
+ <surname>K&#246;vesd&#225;n</surname>
+ <firstname>G&#225;bor</firstname>
+ </personname>
+</author>
+<copyright>
+ <year>2012</year>
+ <holder>G&#225;bor K&#246;vesd&#225;n</holder>
+</copyright>
+<abstract>
+ <para>This is reference documentation for all user-configurable
+ parameters in the DocBook XSL Slides XHTML stylesheet.
+ Note that the Slides stylesheet for XHTML output is a
+ customization layer of the DocBook XSL XHTML stylesheet.
+ Therefore, in addition to the slides-specific parameters
+ listed in this section, you can also use a number of
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../fo/">XHTML stylesheet
+ parameters</link> to control Slides XHTML output.</para>
+</abstract>
+</info>
+<reference xml:id="xhtml">
+ <title>XHTML: General Params</title>
+
+<refentry version="5.0" xml:id="disable.collapsible">
+<refmeta>
+<refentrytitle>disable.collapsible</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>disable.collapsible</refname>
+<refpurpose>Specifies whether collapsible rendering is enabled</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="disable.collapsible.frag">
+ &lt;xsl:param name="disable.collapsible"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether elements marked as
+ collapsible are generated as such in the output document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="disable.incremental">
+<refmeta>
+<refentrytitle>disable.incremental</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>disable.incremental</refname>
+<refpurpose>Specifies whether incremental rendering is enabled</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="disable.incremental.frag">
+ &lt;xsl:param name="disable.incremental"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether elements marked as
+ incremental are generated as such in the output document.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.copyright">
+<refmeta>
+<refentrytitle>generate.copyright</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.copyright</refname>
+<refpurpose>Specifies whether copyright is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.copyright.frag">
+ &lt;xsl:param name="generate.copyright"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the copyright info is generated
+ in the footer area.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.foilgroup.numbered.toc">
+<refmeta>
+<refentrytitle>generate.foilgroup.numbered.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.foilgroup.numbered.toc</refname>
+<refpurpose>Specifies whether foilgroups have a numbered TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.foilgroup.numbered.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.numbered.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If TOC generation is turned on, this parameter specifies
+ whether foilgroups have a numbered TOC. If disabled, TOC items
+ will be bulleted, not numbered.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.foilgroup.toc">
+<refmeta>
+<refentrytitle>generate.foilgroup.toc</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.foilgroup.toc</refname>
+<refpurpose>Specifies whether foilgroups have a TOC</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.foilgroup.toc.frag">
+ &lt;xsl:param name="generate.foilgroup.toc"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether foilgroups will
+ contain a table of contents of the included foils.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.handoutnotes">
+<refmeta>
+<refentrytitle>generate.handoutnotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.handoutnotes</refname>
+<refpurpose>Specifies whether handoutnotes are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.handoutnotes.frag">
+ &lt;xsl:param name="generate.handoutnotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether handoutnotes shall
+ be generated to the output.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.pubdate">
+<refmeta>
+<refentrytitle>generate.pubdate</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.pubdate</refname>
+<refpurpose>Specifies whether the pubdate is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.pubdate.frag">
+ &lt;xsl:param name="generate.pubdate"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the publication date is generated
+ in the footer area.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.speakernotes">
+<refmeta>
+<refentrytitle>generate.speakernotes</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.speakernotes</refname>
+<refpurpose>Specifies whether speakernotes are generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.speakernotes.frag">
+ &lt;xsl:param name="generate.speakernotes"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether speakernotes shall
+ be generated to the output.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="generate.titlepage">
+<refmeta>
+<refentrytitle>generate.titlepage</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.titlepage</refname>
+<refpurpose>Specifies whether titlepage is generated</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="generate.titlepage.frag">
+ &lt;xsl:param name="generate.titlepage"&gt;1&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether titlepage is generated
+ for the presentation.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="mml.embedding.mode">
+<refmeta>
+<refentrytitle>mml.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">object</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">image</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">link</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iframe</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">embed</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>mml.embedding.mode</refname>
+<refpurpose>Specifies how inline MathML is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="mml.embedding.mode.frag">
+ &lt;xsl:param name="mml.embedding.mode"&gt;inline&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline MathML formulas
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>image</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>img</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>link</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>a</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iframe</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>iframe</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>embed</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>embed</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="svg.embedding.mode">
+<refmeta>
+<refentrytitle>svg.embedding.mode</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">inline</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">object</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">image</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">link</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">iframe</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">embed</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>svg.embedding.mode</refname>
+<refpurpose>Specifies how inline SVG is processed</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="svg.embedding.mode.frag">
+ &lt;xsl:param name="svg.embedding.mode"&gt;object&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies how inline SVG graphics
+ are embedded into the output document.</para>
+
+<variablelist>
+ <varlistentry>
+ <term>inline</term>
+ <listitem>
+ <para>Content is copied over inline with its namespace.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>object</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>object</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>image</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>img</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>link</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>a</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iframe</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>iframe</markup> element.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>embed</term>
+ <listitem>
+ <para>Content is extracted into an externel file and referenced
+ by an <markup>embed</markup> element.</para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="user.css">
+<refmeta>
+<refentrytitle>user.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>user.css</refname>
+<refpurpose>Specifies the path to user-supplied CSS</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="user.css.frag">
+ &lt;xsl:param name="user.css"&gt;user.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the path from where the
+ CSS styling is read. This file can be used to
+ add additional styling to the slides.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="wrap.slidecontent">
+<refmeta>
+<refentrytitle>wrap.slidecontent</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>wrap.slidecontent</refname>
+<refpurpose>Specifies whether the foil content is wrapped into a div</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="wrap.slidecontent.frag">
+ &lt;xsl:param name="wrap.slidecontent"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether the foil content is wrapped into
+ a div so that additional styling can be applied.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+
+<reference xml:id="s5">
+ <title>XHTML: S5 Params</title>
+
+<refentry version="5.0" xml:id="s5.controls">
+<refmeta>
+<refentrytitle>s5.controls</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.controls</refname>
+<refpurpose>Specifies whether S5 controls are visible</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.controls.frag">
+ &lt;xsl:param name="s5.controls"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies whether S5 navigation controls are
+ visible by default.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.defaultview">
+<refmeta>
+<refentrytitle>s5.defaultview</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">slideshow</refmiscinfo>
+<refmiscinfo class="other" otherclass="value">outline</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.defaultview</refname>
+<refpurpose>Specifies the default S5 view</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.defaultview.frag">
+ &lt;xsl:param name="s5.defaultview"&gt;slideshow&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies, which is the default view
+ in the generated S5 presentation.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.opera.css">
+<refmeta>
+<refentrytitle>s5.opera.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.opera.css</refname>
+<refpurpose>Specifies the name of the S5 Opera-specific CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.opera.css.frag">
+ &lt;xsl:param name="s5.opera.css"&gt;opera.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 Opera-specific
+ CSS file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.outline.css">
+<refmeta>
+<refentrytitle>s5.outline.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.outline.css</refname>
+<refpurpose>Specifies the name of the S5 outline CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.outline.css.frag">
+ &lt;xsl:param name="s5.outline.css"&gt;outline.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 outline CSS file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.path.prefix">
+<refmeta>
+<refentrytitle>s5.path.prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.path.prefix</refname>
+<refpurpose>Specifies the path to S5 files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.path.prefix.frag">
+ &lt;xsl:param name="s5.path.prefix"&gt;files/s5/ui/default/&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the path where S5 CSS and
+ JavaScript files reside. All the CSS and JavaScript paths
+ will be generated relative to this directory.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.print.css">
+<refmeta>
+<refentrytitle>s5.print.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.print.css</refname>
+<refpurpose>Specifies the name of the S5 print CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.print.css.frag">
+ &lt;xsl:param name="s5.print.css"&gt;print.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 print CSS file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.slides.css">
+<refmeta>
+<refentrytitle>s5.slides.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.slides.css</refname>
+<refpurpose>Specifies the name of the S5 slides CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.slides.css.frag">
+ &lt;xsl:param name="s5.slides.css"&gt;slides.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 slides CSS file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="s5.slides.js">
+<refmeta>
+<refentrytitle>s5.slides.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>s5.slides.js</refname>
+<refpurpose>Specifies the name of the S5 slides JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="s5.slides.js.frag">
+ &lt;xsl:param name="s5.slides.js"&gt;slides.js&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the S5 slides JavaScript
+ file.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+
+<reference xml:id="slidy">
+ <title>XHTML: Slidy Params</title>
+
+<refentry version="5.0" xml:id="slidy.duration">
+<refmeta>
+<refentrytitle>slidy.duration</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.duration</refname>
+<refpurpose>Specifies the duration of the presentation</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slidy.duration.frag">
+ &lt;xsl:param name="slidy.duration"&gt;0&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the duration of the presentation
+ in minutes. A JavaScript clock will count down to help the
+ speaker in not running out of time. Can be disabled if set to 0.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slidy.path.prefix">
+<refmeta>
+<refentrytitle>slidy.path.prefix</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.path.prefix</refname>
+<refpurpose>Specifies the path to Slidy files</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slidy.path.prefix.frag">
+ &lt;xsl:param name="slidy.path.prefix"&gt;files/slidy/&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the path where Slidy CSS and
+ JavaScript files reside. All the CSS and JavaScript paths
+ will be generated relative to this directory.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slidy.slidy.css">
+<refmeta>
+<refentrytitle>slidy.slidy.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.slidy.css</refname>
+<refpurpose>Specifies the name of the main Slidy CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slidy.slidy.css.frag">
+ &lt;xsl:param name="slidy.slidy.css"&gt;styles/slidy.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the main Slidy CSS file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slidy.slidy.js">
+<refmeta>
+<refentrytitle>slidy.slidy.js</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.slidy.js</refname>
+<refpurpose>Specifies the name of the Slidy JavaScript file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slidy.slidy.js.frag">
+ &lt;xsl:param name="slidy.slidy.js"&gt;scripts/slidy.js&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the Slidy JavaScript file.</para>
+
+</refsection>
+</refentry>
+
+<refentry version="5.0" xml:id="slidy.user.css">
+<refmeta>
+<refentrytitle>slidy.user.css</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">filename</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>slidy.user.css</refname>
+<refpurpose>Specifies the name of the Slidy user CSS file</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <programlisting xml:id="slidy.user.css.frag">
+ &lt;xsl:param name="slidy.user.css"&gt;styles/w3c-blue.css&lt;/xsl:param&gt;
+ </programlisting>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>This parameter specifies the name of the Slidy user CSS file.</para>
+
+</refsection>
+</refentry>
+
+</reference>
+
+
+<appendix xml:id="styleheet"><title>The Stylesheet</title>
+
+<para>The <filename>param.xsl</filename> stylesheet is just a wrapper
+around all these parameters.</para>
+
+<programlisting xml:id="top">
+
+&lt;!-- This file is generated from param.xweb --&gt;
+
+&lt;xsl:stylesheet exclude-result-prefixes="src" version="1.0"&gt;
+
+&lt;!-- ********************************************************************
+ $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
+ ********************************************************************
+
+ This file is part of the DocBook Slides Stylesheet distribution.
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
+ copyright and other information.
+
+ ******************************************************************** --&gt;
+
+&lt;src:fragref linkend="disable.collapsible.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="disable.incremental.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.copyright.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.foilgroup.numbered.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.foilgroup.toc.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.handoutnotes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.pubdate.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.speakernotes.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="generate.titlepage.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="mml.embedding.mode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="svg.embedding.mode.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="user.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="wrap.slidecontent.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;src:fragref linkend="s5.controls.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.defaultview.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.opera.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.outline.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.path.prefix.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.print.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.slides.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="s5.slides.js.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;src:fragref linkend="slidy.duration.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slidy.path.prefix.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slidy.slidy.css.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slidy.slidy.js.frag"&gt;&lt;/src:fragref&gt;
+&lt;src:fragref linkend="slidy.user.css.frag"&gt;&lt;/src:fragref&gt;
+
+&lt;/xsl:stylesheet&gt;
+</programlisting>
+
+</appendix>
+</book>
diff --git a/slides/xhtml/param.xsl b/slides/xhtml/param.xsl
index c3ec806..6bd0e5c 100644
--- a/slides/xhtml/param.xsl
+++ b/slides/xhtml/param.xsl
@@ -1,8 +1,6 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
+<?xml version="1.0"?>
<!-- This file is generated from param.xweb -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- ********************************************************************
$Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $
@@ -14,57 +12,60 @@
******************************************************************** -->
-<xsl:param name="active.toc" select="0"/>
-<xsl:param name="body.bg.color">#FFFFFF</xsl:param>
-<xsl:param name="bullet.image">toc/bullet.png</xsl:param>
-<xsl:param name="css.stylesheet">slides.css</xsl:param>
-<xsl:param name="css.stylesheet.dir"/>
-<xsl:param name="dynamic.toc" select="0"/>
-<xsl:param name="foilgroup.toc" select="1"/>
-<xsl:param name="graphics.dir"/>
-<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param>
-<xsl:param name="home.image">active/nav-home.png</xsl:param>
-<xsl:param name="keyboard.nav" select="1"/>
-<xsl:param name="minus.image">toc/open.png</xsl:param>
-<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param>
-<xsl:param name="multiframe" select="0"/>
-<xsl:param name="multiframe.navigation.height">40</xsl:param>
-<xsl:param name="multiframe.top.bgcolor">white</xsl:param>
-<xsl:param name="nav.separator" select="1"/>
-<xsl:param name="next.image">active/nav-next.png</xsl:param>
-<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param>
-<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param>
-<xsl:param name="no.prev.image">inactive/nav-prev.png</xsl:param>
-<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param>
-<xsl:param name="no.up.image">inactive/nav-up.png</xsl:param>
-<xsl:param name="output.indent">no</xsl:param>
-<xsl:param name="overlay" select="0"/>
-<xsl:param name="overlay.js">overlay.js</xsl:param>
-<xsl:param name="overlay.logo">http://docbook.sourceforge.net/release/buttons/slides-1.png</xsl:param>
-<xsl:param name="plus.image">toc/closed.png</xsl:param>
-<xsl:param name="prev.image">active/nav-prev.png</xsl:param>
-<xsl:param name="script.dir"/>
-<xsl:param name="show.foil.number" select="0"/>
-<xsl:param name="showtoc.image">showtoc.gif</xsl:param>
-<xsl:param name="slides.js">slides.js</xsl:param>
-<xsl:param name="text.home">Home</xsl:param>
-<xsl:param name="text.next">Next</xsl:param>
-<xsl:param name="text.prev">Prev</xsl:param>
-<xsl:param name="text.toc">ToC</xsl:param>
-<xsl:param name="text.up">Up</xsl:param>
-<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
-<xsl:param name="toc.bg.color">#FFFFFF</xsl:param>
-<xsl:param name="toc.hide.show" select="0"/>
-<xsl:param name="toc.html" select="concat('toc', $html.ext)"/>
-<xsl:param name="toc.image">active/nav-toc.png</xsl:param>
-<xsl:param name="toc.row.height">22</xsl:param>
-<xsl:param name="toc.width">250</xsl:param>
-<!-- Presumably in pixels? -->
-<xsl:param name="ua.js">ua.js</xsl:param>
-<xsl:param name="up.image">active/nav-up.png</xsl:param>
-<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param>
-<xsl:param name="xbDOM.js">xbDOM.js</xsl:param>
-<xsl:param name="xbStyle.js">xbStyle.js</xsl:param>
-<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param>
+ <xsl:param name="disable.collapsible">0</xsl:param>
+
+ <xsl:param name="disable.incremental">0</xsl:param>
+
+ <xsl:param name="generate.copyright">1</xsl:param>
+
+ <xsl:param name="generate.foilgroup.numbered.toc">1</xsl:param>
+
+ <xsl:param name="generate.foilgroup.toc">1</xsl:param>
+
+ <xsl:param name="generate.handoutnotes">0</xsl:param>
+
+ <xsl:param name="generate.pubdate">1</xsl:param>
+
+ <xsl:param name="generate.speakernotes">0</xsl:param>
+
+ <xsl:param name="generate.titlepage">1</xsl:param>
+
+ <xsl:param name="mml.embedding.mode">inline</xsl:param>
+
+ <xsl:param name="svg.embedding.mode">object</xsl:param>
+
+ <xsl:param name="user.css">user.css</xsl:param>
+
+ <xsl:param name="wrap.slidecontent">0</xsl:param>
+
+
+ <xsl:param name="s5.controls">0</xsl:param>
+
+ <xsl:param name="s5.defaultview">slideshow</xsl:param>
+
+ <xsl:param name="s5.opera.css">opera.css</xsl:param>
+
+ <xsl:param name="s5.outline.css">outline.css</xsl:param>
+
+ <xsl:param name="s5.path.prefix">files/s5/ui/default/</xsl:param>
+
+ <xsl:param name="s5.print.css">print.css</xsl:param>
+
+ <xsl:param name="s5.slides.css">slides.css</xsl:param>
+
+ <xsl:param name="s5.slides.js">slides.js</xsl:param>
+
+
+ <xsl:param name="slidy.duration">0</xsl:param>
+
+ <xsl:param name="slidy.path.prefix">files/slidy/</xsl:param>
+
+ <xsl:param name="slidy.slidy.css">styles/slidy.css</xsl:param>
+
+ <xsl:param name="slidy.slidy.js">scripts/slidy.js</xsl:param>
+
+ <xsl:param name="slidy.user.css">styles/w3c-blue.css</xsl:param>
+
</xsl:stylesheet>
+
diff --git a/slides/xhtml/plain-titlepage.xml b/slides/xhtml/plain-titlepage.xml
new file mode 100644
index 0000000..fb6569d
--- /dev/null
+++ b/slides/xhtml/plain-titlepage.xml
@@ -0,0 +1,26 @@
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<t:titlepage t:element="slides" t:wrapper="div" class="slide cover title">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ </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/slides/xhtml/plain-titlepage.xsl b/slides/xhtml/plain-titlepage.xsl
new file mode 100644
index 0000000..3af53f4
--- /dev/null
+++ b/slides/xhtml/plain-titlepage.xsl
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl">
+
+<!-- This stylesheet was created by template/titlepage.xsl-->
+
+<xsl:template name="slides.titlepage.recto">
+ <xsl:choose>
+ <xsl:when test="slidesinfo/title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/title"/>
+ </xsl:when>
+ <xsl:when test="docinfo/title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/title"/>
+ </xsl:when>
+ <xsl:when test="info/title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/title"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="title"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="slidesinfo/subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="docinfo/subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/subtitle"/>
+ </xsl:when>
+ <xsl:when test="info/subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/subtitle"/>
+ </xsl:when>
+ <xsl:when test="subtitle">
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="subtitle"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/corpauthor"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/corpauthor"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/corpauthor"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/authorgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/authorgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/authorgroup"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="slidesinfo/author"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="docinfo/author"/>
+ <xsl:apply-templates mode="slides.titlepage.recto.auto.mode" select="info/author"/>
+</xsl:template>
+
+<xsl:template name="slides.titlepage.verso">
+</xsl:template>
+
+<xsl:template name="slides.titlepage.separator">
+</xsl:template>
+
+<xsl:template name="slides.titlepage.before.recto">
+</xsl:template>
+
+<xsl:template name="slides.titlepage.before.verso">
+</xsl:template>
+
+<xsl:template name="slides.titlepage">
+ <div class="slide cover title">
+ <xsl:variable name="recto.content">
+ <xsl:call-template name="slides.titlepage.before.recto"/>
+ <xsl:call-template name="slides.titlepage.recto"/>
+ </xsl:variable>
+ <xsl:variable name="recto.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$recto.content"/></div>
+ </xsl:if>
+ <xsl:variable name="verso.content">
+ <xsl:call-template name="slides.titlepage.before.verso"/>
+ <xsl:call-template name="slides.titlepage.verso"/>
+ </xsl:variable>
+ <xsl:variable name="verso.elements.count">
+ <xsl:choose>
+ <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')">
+ <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count &gt; 0)">
+ <div><xsl:copy-of select="$verso.content"/></div>
+ </xsl:if>
+ <xsl:call-template name="slides.titlepage.separator"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="slides.titlepage.recto.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="*" mode="slides.titlepage.verso.mode">
+ <!-- if an element isn't found in this mode, -->
+ <!-- try the generic titlepage.mode -->
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="slides.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="slides.titlepage.recto.style">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="slides.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="slides.titlepage.recto.style">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="slides.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="slides.titlepage.recto.style">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="authorgroup" mode="slides.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="slides.titlepage.recto.style">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+<xsl:template match="author" mode="slides.titlepage.recto.auto.mode">
+<div xsl:use-attribute-sets="slides.titlepage.recto.style">
+<xsl:apply-templates select="." mode="slides.titlepage.recto.mode"/>
+</div>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/slides/xhtml/plain.xsl b/slides/xhtml/plain.xsl
index 29d43fc..05d5e51 100644
--- a/slides/xhtml/plain.xsl
+++ b/slides/xhtml/plain.xsl
@@ -1,470 +1,535 @@
<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="prev.image" select="'active/nav-prev.png'"/>
-<xsl:param name="next.image" select="'active/nav-next.png'"/>
-<xsl:param name="up.image" select="'active/nav-up.png'"/>
-<xsl:param name="toc.image" select="'active/nav-toc.png'"/>
-<xsl:param name="home.image" select="'active/nav-home.png'"/>
-
-<xsl:param name="no.prev.image" select="'inactive/nav-prev.png'"/>
-<xsl:param name="no.next.image" select="'inactive/nav-next.png'"/>
-<xsl:param name="no.up.image" select="'inactive/nav-up.png'"/>
-<xsl:param name="no.toc.image" select="'inactive/nav-toc.png'"/>
-<xsl:param name="no.home.image" select="'inactive/nav-home.png'"/>
-
-<xsl:param name="css.stylesheet" select="'slides-plain.css'"/>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="top-nav">
- <xsl:param name="prev"/>
- <xsl:param name="next"/>
- <xsl:param name="up"/>
- <xsl:param name="home"/>
- <xsl:param name="toc" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <td align="left" width="45%">
- <span class="slidestitle">
- <xsl:value-of select="(/slides/slidesinfo/title)[1]"/>
- </span>
- <xsl:text>&#160;</xsl:text>
- </td>
- <td width="10%" align="center" valign="bottom">
- <xsl:call-template name="foil.number"/>
- </td>
- <td align="right" width="45%">
- <xsl:choose>
- <xsl:when test="$home">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$home/slidesinfo/title"/>
- </xsl:attribute>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$toc != ''">
- <a title="ToC" href="{$toc}">
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prev/title"/>
- </xsl:attribute>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$up/title"/>
- </xsl:attribute>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="dbs db xlink"
+ extension-element-prefixes="exsl"
+ version="1.0">
+
+<xsl:import href="../../xhtml/chunk.xsl"/>
+<xsl:import href="../common/common.xsl"/>
+<xsl:import href="plain-titlepage.xsl"/>
+<xsl:import href="param.xsl"/>
+
+<xsl:param name="local.l10n.xml" select="document('')"/>
+<i18n xmlns="http://docbook.sourceforge.net/xmlns/l10n/1.0">
+ <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en">
+ <l:gentext key="Foilgroup" text="Foil Group"/>
+ <l:gentext key="Foil" text="Foil"/>
+ <l:gentext key="Speakernotes" text="Speaker Notes"/>
+ <l:gentext key="Handoutnotes" text="Handout Notes"/>
+ <l:gentext key="SVGImage" text="SVG image"/>
+ <l:gentext key="MathMLFormula" text="MathML formula"/>
+
+ <l:context name="title">
+ <l:gentext key="foil" text="Foil %n %t"/>
+ <l:gentext key="foilgroup" text="Foil %n %t"/>
+ </l:context>
+ </l:l10n>
+</i18n>
+
+<!-- Overrides from DocBook XSL -->
+<xsl:template name="process.qanda.toc"/>
+
+<!-- Main content starts here -->
+
+<xsl:template name="xhtml.head">
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+ <link rel="stylesheet" href="{$user.css}" type="text/css"/>
+</xsl:template>
+
+<xsl:template name="slideshow.head"/>
+
+<xsl:template name="slideshow.content">
+ <div class="presentation">
+ <xsl:if test="$generate.titlepage != 0">
+ <xsl:apply-templates select="/dbs:slides" mode="titlepage"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="/dbs:slides/dbs:foil|dbs:slides/dbs:foilgroup"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="/dbs:slides" mode="titlepage">
+ <xsl:call-template name="slides.titlepage"/>
+</xsl:template>
+
+<xsl:template name="slide.notes">
+ <xsl:if test="($generate.speakernotes != 0) and ./dbs:speakernotes">
+ <div class="notes">
+ <h2 class="notes">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Speakernotes'"/>
+ </xsl:call-template>
+ </h2>
+
+ <xsl:apply-templates select="dbs:speakernotes" mode="notes.mode"/>
+ </div>
+ </xsl:if>
+
+ <xsl:if test="($generate.handoutnotes != 0) and ./dbs:handoutnotes">
+ <div class="handout">
+ <h2 class="handout">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Handoutnotes'"/>
+ </xsl:call-template>
+ </h2>
+
+ <xsl:apply-templates select="dbs:handoutnotes" mode="notes.mode"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="/">
+ <html>
+ <xsl:if test="/dbs:slides/@xml:lang">
+ <xsl:attribute name="xml:lang">
+ <xsl:value-of select="/dbs:slides/@xml:lang"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <head>
+ <title>
+ <xsl:call-template name="get.title">
+ <xsl:with-param name="ctx" select="/dbs:slides"/>
+ </xsl:call-template>
+ </title>
+
+ <xsl:call-template name="xhtml.head"/>
+ </head>
+
+ <body>
+ <xsl:call-template name="slideshow.head"/>
+
+ <xsl:call-template name="slideshow.content"/>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template name="foilgroup.content">
+ <xsl:apply-templates select="*[not(self::dbs:foil)]"/>
+
+ <xsl:if test="($generate.foilgroup.toc != 0)">
+ <xsl:choose>
+ <xsl:when test="($generate.foilgroup.numbered.toc != 0)">
+ <ol>
+ <xsl:for-each select="dbs:foil">
+ <li><xsl:call-template name="get.title"/></li>
+ </xsl:for-each>
+ </ol>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <ul>
+ <xsl:for-each select="dbs:foil">
+ <li><xsl:call-template name="get.title"/></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="foil.classes">
+ <xsl:variable name="classValue">
+ <xsl:call-template name="process.dbs.attributes">
+ <!-- Do not put incremental or collapsible on foils -->
+ <xsl:with-param name="attributeSet" select="self::*/@dbs:style"/>
+ <xsl:with-param name="stored">
+ <xsl:value-of select="'slide'"/>
+ <xsl:if test="@*[namespace-uri() = 'http://docbook.org/ns/docbook-slides']">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:attribute name="class">
+ <xsl:value-of select="$classValue"/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="dbs:foilgroup">
+ <xsl:call-template name="generate.anchor"/>
+ <div>
+ <xsl:call-template name="foil.classes"/>
+
+ <xsl:choose>
+ <xsl:when test="($wrap.slidecontent != 0)">
+ <div class="slidecontent">
+ <xsl:call-template name="foilgroup.content"/>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="foilgroup.content"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="slide.notes"/>
+ </div>
+
+ <xsl:apply-templates select="dbs:foil"/>
+</xsl:template>
+
+<xsl:template match="dbs:foil">
+ <xsl:call-template name="generate.anchor"/>
+ <div>
+ <xsl:call-template name="foil.classes"/>
+
+ <xsl:choose>
+ <xsl:when test="($wrap.slidecontent != 0)">
+ <div class="slidecontent">
+ <xsl:apply-templates select="*"/>
+ </div>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="process.footnotes"/>
+
+ <xsl:call-template name="slide.notes"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="dbs:handoutnotes"/>
+
+<xsl:template match="dbs:speakernotes"/>
+
+<xsl:template match="dbs:handoutnotes" mode="notes.mode">
+ <div class="handoutnotes">
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="dbs:speakernotes" mode="notes.mode">
+ <div class="speakernotes">
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template name="process.dbs.attributes">
+ <xsl:param name="attributeSet"/>
+ <xsl:param name="stored" select="''"/>
+
+ <xsl:variable name="gotIncremental">
+ <xsl:if test="((local-name($attributeSet[1]) = 'incremental') and ($attributeSet[1] = '1'))">1</xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="enableIncremental">
+ <xsl:if test="($disable.incremental = '0') and ($gotIncremental = '1')">1</xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="gotCollapsible">
+ <xsl:if test="((local-name($attributeSet[1]) = 'collapsible') and ($attributeSet[1] = '1'))">1</xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="enableCollapsible">
+ <xsl:if test="($disable.collapsible = '0') and ($gotCollapsible = '1')">1</xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="append">
+ <xsl:choose>
+ <xsl:when test="local-name($attributeSet[1]) = 'style'">
+ <xsl:value-of select="$attributeSet[1]"/>
+ </xsl:when>
+
+ <xsl:when test="$enableCollapsible = '1'">
+ <xsl:value-of select="'outline'"/>
+ </xsl:when>
+
+ <xsl:when test="$enableIncremental = '1'">
+ <xsl:value-of select="'incremental'"/>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:if test="count($attributeSet) &gt; 1">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="not($attributeSet)">
+ <xsl:value-of select="$stored"/>
+ </xsl:when>
+
+ <xsl:when test="count($attributeSet) &lt;= 1">
+ <xsl:value-of select="concat($stored, $append)"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="process.dbs.attributes">
+ <xsl:with-param name="attributeSet" select="$attributeSet[position() != 1]"/>
+ <xsl:with-param name="stored" select="concat($stored, $append)"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="dbs:block">
+ <xsl:variable name="classValue">
+ <xsl:call-template name="process.dbs.attributes">
+ <xsl:with-param name="attributeSet" select="(ancestor-or-self::*/@dbs:incremental)[last()] | (ancestor-or-self::*/@dbs:collapsible)[last()] | self::*/@dbs:style"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="{$classValue}">
+ <xsl:apply-templates/>
</div>
</xsl:template>
-<!-- ============================================================ -->
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next"/>
- <xsl:param name="toc" select="$toc.html"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <td align="left" width="50%">
- <xsl:text>&#160;</xsl:text>
- </td>
- <td align="right" width="50%">
- <xsl:choose>
- <xsl:when test="$home">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$home/slidesinfo/title"/>
- </xsl:attribute>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$toc.html != ''">
- <a title="ToC" href="{$toc.html}">
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prev/title"/>
- </xsl:attribute>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$up/title"/>
- </xsl:attribute>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
+<xsl:template match="db:info">
+ <xsl:apply-templates select="db:title|db:titleabbrev|db:subtitle|db:author|db:authorgroup/db:author"/>
+</xsl:template>
+
+<xsl:template match="db:title|db:titleabbrev">
+ <xsl:if test="not(self::db:title) or (not(preceding-sibling::db:titleabbrev) and not(following-sibling::db:titleabbrev))">
+ <h1 class="title"><xsl:value-of select="."/></h1>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="db:subtitle">
+ <h1 class="subtitle"><xsl:value-of select="."/></h1>
+</xsl:template>
+
+<xsl:template match="db:author">
+ <h3 class="author"><xsl:apply-templates select="db:personname|db:orgname"/></h3>
+ <h4 class="email"><xsl:apply-templates select="db:email"/></h4>
+ <xsl:if test="db:affiliation">
+ <h4 class="affiliation"><xsl:value-of select="db:affiliation"/></h4>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="db:email">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>mailto:</xsl:text><xsl:value-of select="."/>
+ </xsl:attribute>
+
+ &lt;<xsl:value-of select="."/>&gt;
+ </a>
+</xsl:template>
+
+<xsl:template name="list.content">
+ <xsl:variable name="classValue">
+ <xsl:call-template name="process.dbs.attributes">
+ <xsl:with-param name="attributeSet" select="(ancestor-or-self::*/@dbs:incremental)[last()] | (ancestor-or-self::*/@dbs:collapsible)[last()] | self::*/@dbs:style"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:attribute name="class">
+ <xsl:value-of select="$classValue"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates select="*"/>
+</xsl:template>
+
+<xsl:template match="db:itemizedlist">
+ <ul>
+ <xsl:call-template name="list.content"/>
+ </ul>
+</xsl:template>
+
+<xsl:template match="db:orderedlist">
+ <ol>
+ <xsl:call-template name="list.content"/>
+ </ol>
+</xsl:template>
+
+<xsl:template match="db:mediaobject">
+ <xsl:variable name="classValue">
+ <xsl:call-template name="process.dbs.attributes">
+ <xsl:with-param name="attributeSet" select="(ancestor-or-self::*/@dbs:incremental)[last()] | (ancestor-or-self::*/@dbs:collapsible)[last()] | self::*/@dbs:style"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="{$classValue}">
+ <xsl:apply-templates select="db:imageobject[1]"/>
</div>
</xsl:template>
-<!-- ============================================================ -->
-
-<xsl:template name="toc-top-nav">
- <xsl:param name="home" select="/slides"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next" select="(foil|foilgroup)[1]"/>
- <xsl:param name="toc"/>
-
- <div class="navhead">
- <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="Navigation">
- <tr>
- <td align="left" width="50%">
- <xsl:text>&#160;</xsl:text>
- </td>
- <td align="right" width="50%">
- <xsl:choose>
- <xsl:when test="$home">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$home/slidesinfo/title"/>
- </xsl:attribute>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Home" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$toc != ''">
- <a title="ToC" href="{$toc}">
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="ToC" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$prev/title"/>
- </xsl:attribute>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Prev" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$up/title"/>
- </xsl:attribute>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Up" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
+<xsl:template name="bibliography.titlepage"/>
+
+<xsl:template match="db:bibliosource" mode="bibliography.mode">
+ <span>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:choose>
+ <xsl:when test="@xlink:href">
+ <a href="{@xlink:href}">
+ <xsl:apply-templates mode="bibliography.mode"/>
+ </a>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates mode="bibliomixed.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<xsl:template name="href.target.uri">
+ <xsl:param name="object" select="."/>
+ <xsl:variable name="ischunk">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="$object"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$ischunk='0'">
+ <xsl:text>#</xsl:text>
+ <xsl:call-template name="object.id">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="dbs:foil|dbs:foilgroup" mode="xref-to">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Foil'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:value-of select="count(preceding::dbs:foil|preceding::dbs:foilgroup) + 1"/>
+ <xsl:text>: </xsl:text>
+ <xsl:call-template name="get.title"/>
+</xsl:template>
+
+<xsl:template name="extension.process.image.attributes">
+ <xsl:variable name="classValue">
+ <xsl:call-template name="process.dbs.attributes">
+ <xsl:with-param name="attributeSet" select="(ancestor-or-self::*/@dbs:incremental)[last()] | (ancestor-or-self::*/@dbs:collapsible)[last()] | self::*/@dbs:style"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="./@*[namespace-uri() = 'http://docbook.org/ns/docbook-slides']">
+ <xsl:attribute name="class">
+ <xsl:value-of select="$classValue"/>
+ </xsl:attribute>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="*[namespace-uri() = 'http://www.w3.org/2000/svg']">
+ <xsl:call-template name="handle.embedded">
+ <xsl:with-param name="modeParam" select="$svg.embedding.mode"/>
+ <xsl:with-param name="fileExt" select="'.svg'"/>
+ <xsl:with-param name="mimeType" select="'image/svg+xml'"/>
+ <xsl:with-param name="gentextKey" select="'SVGImage'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="*[namespace-uri() = 'http://www.w3.org/1998/Math/MathML']">
+ <xsl:call-template name="handle.embedded">
+ <xsl:with-param name="modeParam" select="$mml.embedding.mode"/>
+ <xsl:with-param name="fileExt" select="'.mml'"/>
+ <xsl:with-param name="mimeType" select="'application/mathml-presentation+xml'"/>
+ <xsl:with-param name="gentextKey" select="'MathMLFormula'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="handle.embedded">
+ <xsl:param name="modeParam">inline</xsl:param>
+ <xsl:param name="fileExt"/>
+ <xsl:param name="mimeType"/>
+ <xsl:param name="gentextKey"/>
+
+ <xsl:choose>
+ <xsl:when test="$modeParam = 'inline'">
+ <xsl:copy-of select="."/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id"/>
+ </xsl:variable>
+ <xsl:variable name="fname">
+ <xsl:value-of select="concat($id, $fileExt)"/>
+ </xsl:variable>
+
+ <exsl:document href="{$fname}">
+ <xsl:copy-of select="."/>
+ </exsl:document>
+
+ <xsl:choose>
+ <xsl:when test="$modeParam = 'object'">
+ <object data="{$fname}" type="{$mimeType}"/>
+ </xsl:when>
+
+ <xsl:when test="$modeParam = 'image'">
+ <img alt="{$mimeType} object" src="{$fname}"/>
+ </xsl:when>
+
+ <xsl:when test="$modeParam = 'link'">
+ <a href="{$fname}">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$gentextKey"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+
+ <xsl:when test="$modeParam = 'iframe'">
+ <iframe src="{$fname}"/>
+ </xsl:when>
+
+ <xsl:when test="$modeParam = 'embed'">
+ <embed src="{$fname}" type="{$mimeType}" />
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ Unknown processing mode <xsl:value-of select="$modeParam"/>.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.anchor">
+ <a>
+ <xsl:attribute name="name">
+ <xsl:call-template name="object.id"/>
+ </xsl:attribute>
+ </a>
+</xsl:template>
+
+<xsl:template name="slide.copyright">
+ <div class="copyright">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:text>&#xa9;</xsl:text>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:value-of select="/dbs:slides/db:info/db:copyright/db:year"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:value-of select="/dbs:slides/db:info/db:copyright/db:holder"/>
</div>
</xsl:template>
-<!-- ====================================================================== -->
+<xsl:template name="slide.pubdate">
+ <div class="pubdate">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Published'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="/dbs:slides/db:info/db:pubdate"/>
+ </div>
+</xsl:template>
-<xsl:template name="bottom-nav"/>
+<xsl:template match="/" mode="slide.header.mode"/>
+<xsl:template match="/" mode="slide.footer.mode">
+ <xsl:if test="($generate.copyright != 0) and /dbs:slides/db:info/db:copyright">
+ <xsl:call-template name="slide.copyright"/>
+ </xsl:if>
+ <xsl:if test="($generate.pubdate != 0) and /dbs:slides/db:info/db:pubdate">
+ <xsl:call-template name="slide.pubdate"/>
+ </xsl:if>
+</xsl:template>
</xsl:stylesheet>
diff --git a/slides/xhtml/s5.xsl b/slides/xhtml/s5.xsl
new file mode 100644
index 0000000..9447db3
--- /dev/null
+++ b/slides/xhtml/s5.xsl
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ exclude-result-prefixes="dbs db"
+ version="1.0">
+
+<xsl:import href="plain.xsl"/>
+
+<!-- XXX: recommended by S5 but DocBook XSL produces XHTML Transitional
+
+<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
+-->
+
+<xsl:template name="xhtml.head">
+ <xsl:variable name="s5.controls.visible">
+ <xsl:choose>
+ <xsl:when test="$s5.controls != 0">visible</xsl:when>
+
+ <xsl:otherwise>hidden</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
+ <meta name="version" content="S5 1.1"/>
+ <meta name="defaultView" content="{$s5.defaultview}"/>
+ <meta name="controlVis" content="{$s5.controls.visible}"/>
+
+ <link rel="stylesheet" href="{concat($s5.path.prefix, $s5.slides.css)}" type="text/css" media="projection" id="slideProj" />
+ <link rel="stylesheet" href="{concat($s5.path.prefix, $s5.outline.css)}" type="text/css" media="screen" id="outlineStyle" />
+ <link rel="stylesheet" href="{concat($s5.path.prefix, $s5.print.css)}" type="text/css" media="print" id="slidePrint" />
+ <link rel="stylesheet" href="{concat($s5.path.prefix, $s5.opera.css)}" type="text/css" media="projection" id="operaFix" />
+ <link rel="stylesheet" href="{$user.css}" type="text/css"/>
+
+ <script src="{concat($s5.path.prefix, $s5.slides.js)}" type="text/javascript"></script>
+</xsl:template>
+
+<xsl:template name="slideshow.head">
+ <div class="layout">
+ <div id="controls"/>
+ <div id="currentSlide"/>
+ <div id="header">
+ <xsl:apply-templates select="/" mode="slide.header.mode"/>
+ </div>
+ <div id="footer">
+ <xsl:apply-templates select="/" mode="slide.footer.mode"/>
+ </div>
+ </div>
+</xsl:template>
+
+<xsl:template match="db:xref">
+ <xsl:variable name="target" select="id(./@linkend)"/>
+
+ <xsl:choose>
+ <xsl:when test="($target[self::dbs:foil] or $target[self::dbs:foilgroup])">
+ <xsl:variable name="target.no" select="count(preceding::dbs:foil|preceding::dbs:foilgroup) + 1"/>
+
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="db:biblioentry" mode="xref-to">
+ <xsl:variable name="id" select="@xml:id"/>
+
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="db:bibliography" count="db:biblioentry|db:bibliomixed" level="any" format="1"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="db:mediaobject">
+ <p>
+ <xsl:if test="@dbs:style">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@dbs:style"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/slides/xhtml/slides-common.xsl b/slides/xhtml/slides-common.xsl
deleted file mode 100644
index 9128bc3..0000000
--- a/slides/xhtml/slides-common.xsl
+++ /dev/null
@@ -1,1534 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="../../xhtml/chunk.xsl"/>
-<xsl:include href="../../VERSION.xsl"/>
-
-<xsl:include href="param.xsl"/>
-<xsl:include href="jscript.xsl"/>
-<xsl:include href="graphics.xsl"/>
-<xsl:include href="css.xsl"/>
-
-<xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
-
-<xsl:strip-space elements="slides foil foilgroup"/>
-
-<!-- Process the slides -->
-
-<xsl:template match="/">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="slides">
- <xsl:apply-templates select="." mode="toc"/>
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- Every slide has top and bottom navigation -->
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
- <tr>
- <td align="left" valign="bottom">
- <xsl:if test="$home">
- <span class="slidestitle">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
- </a>
- </span>
- </xsl:if>
- <xsl:text>&#160;</xsl:text>
- </td>
-
- <td align="right" valign="bottom">
- <xsl:choose>
- <xsl:when test="$home">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.home}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="home.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.home}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.home.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$tocfile">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="$tocfile"/>
- </xsl:attribute>
- <img alt="{$text.toc}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.toc}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$up">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.up}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="up.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.up}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.up.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table border="0" width="100%" cellspacing="0" cellpadding="0" summary="Navigation table">
- <tr>
- <td align="left" valign="top">
- <xsl:apply-templates select="/slides/slidesinfo/copyright" mode="slide.footer.mode"/>
- <xsl:text>&#160;</xsl:text>
- </td>
-
- <td align="right" valign="top">
- <xsl:choose>
- <xsl:when test="$prev">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.prev}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
-
- <xsl:choose>
- <xsl:when test="$next">
- <span class="link-text">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span class="no-link-text">
- <img alt="{$text.next}" border="0">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#160;</xsl:text>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- Navigation is also provided in the form of links in the head -->
-
-<xsl:template name="links">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:if test="$tocfile != ''">
- <link rel="contents" href="{$tocfile}">
- <xsl:attribute name="title">
- <xsl:value-of select="/slides/slidesinfo/title"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$home">
- <link rel="top">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
-
- <link rel="first">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$home" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($home/title|$home/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$up">
- <link rel="up">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$up" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($up/title|$up/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$prev">
- <link rel="previous">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="($prev/title|$prev/slidesinfo/title)[1]"/>
- </xsl:attribute>
- </link>
- </xsl:if>
-
- <xsl:if test="$next">
- <link rel="next">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$next/title"/>
- </xsl:attribute>
- </link>
-
- <xsl:variable name="last" select="$next/following::foil[last()]"/>
- <xsl:if test="$last">
- <link rel="last">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$last" mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="$last/title"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- </xsl:if>
-
- <xsl:for-each select="foil">
- <link rel="slides">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
-
- <xsl:for-each select="foilgroup|../foilgroup">
- <link rel="section">
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="title[1]"/>
- </xsl:attribute>
- </link>
- </xsl:for-each>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- There are four kinds of slides: titlepage, toc, foil, and foilgroup -->
-<!-- titlepage -->
-
-<xsl:template match="slidesinfo">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
- <xsl:variable name="tocfile" select="$toc.html"/>
- <xsl:variable name="dir">
- <xsl:call-template name="dbhtml-dir"/>
- </xsl:variable>
-
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $dir, $titlefoil.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="/slides"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select=".."/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="class">
- <xsl:text>titlepage</xsl:text>
- <xsl:if test="@role">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- </xsl:attribute>
-
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="titlepage" id="{$id}">
- <xsl:call-template name="titlepage-top-nav">
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <div class="titlepage-body">
- <xsl:call-template name="titlepage-body"/>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="titlepage-bottom-nav">
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
- </div>
- </div>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="titlepage-body">
- <div class="{name(.)}">
- <xsl:apply-templates mode="titlepage.mode"/>
- </div>
-</xsl:template>
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="titlepage-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="slidesinfo/title">
- <h1 class="{name(.)}"><xsl:apply-templates/></h1>
-</xsl:template>
-
-<xsl:template match="slidesinfo/authorgroup">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="slidesinfo/author|slidesinfo/authorgroup/author">
- <h1 class="{name(.)}"><xsl:apply-imports/></h1>
-</xsl:template>
-
-<xsl:template match="slidesinfo/releaseinfo">
- <h4 class="{name(.)}"><xsl:apply-templates/></h4>
-</xsl:template>
-
-<xsl:template match="slidesinfo/date">
- <h4 class="{name(.)}"><xsl:apply-templates/></h4>
-</xsl:template>
-
-<xsl:template match="slidesinfo/copyright">
- <!-- nop -->
-</xsl:template>
-
-<!-- On slides, output the credits explicitly each time -->
-<xsl:template match="othercredit" mode="titlepage.mode">
- <xsl:variable name="contrib" select="string(contrib)"/>
- <xsl:choose>
- <xsl:when test="contrib">
- <xsl:call-template name="paragraph">
- <xsl:with-param name="class" select="name(.)"/>
- <xsl:with-param name="content">
- <xsl:apply-templates mode="titlepage.mode" select="contrib"/>
- <xsl:text>: </xsl:text>
- <xsl:call-template name="person.name"/>
- <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="paragraph">
- <xsl:with-param name="class" select="name(.)"/>
- <xsl:with-param name="content">
- <xsl:call-template name="person.name"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- toc -->
-
-<xsl:template match="slides" mode="toc">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="/slides"/>
- <xsl:variable name="next" select="(foil|foilgroup)[1]"/>
- <xsl:variable name="tocfile" select="''"/>
- <xsl:variable name="dir"> <!-- MJ: added -->
- <xsl:call-template name="dbhtml-dir"/>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $dir, $toc.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="slidesinfo/title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
-
- <body class="tocpage">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div id="{$id}">
- <xsl:call-template name="toc-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-
- <div class="toc-body">
- <xsl:call-template name="toc-body"/>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="toc-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
- </div>
- </div>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="toc-body">
- <h1 class="title">
- <a href="{$titlefoil.html}">
- <xsl:value-of select="/slides/slidesinfo/title"/>
- </a>
- </h1>
-
- <p class="toctitle">
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </strong>
- </p>
- <dl class="toc">
- <xsl:apply-templates select="foilgroup|foil" mode="toc"/>
- </dl>
-</xsl:template>
-
-<xsl:template name="toc-top-nav">
- <xsl:param name="home" select="/slides"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next" select="(foil|foilgroup)[1]"/>
- <xsl:param name="tocfile"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="toc-bottom-nav">
- <xsl:param name="home" select="/slides"/>
- <xsl:param name="up"/>
- <xsl:param name="prev"/>
- <xsl:param name="next" select="(foil|foilgroup)[1]"/>
- <xsl:param name="tocfile"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="tocfile" select="$tocfile"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="toc">
- <xsl:param name="recursive" select="1"/>
-
- <dt>
- <xsl:apply-templates select="." mode="number"/>
- <xsl:text>. </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:value-of select="title"/>
- </a>
- </dt>
- <xsl:if test="$recursive != 0">
- <dd>
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </dd>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="foil" mode="toc">
- <dt>
- <xsl:apply-templates select="." mode="number"/>
- <xsl:text>. </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:value-of select="title"/>
- </a>
- </dt>
-</xsl:template>
-
-<xsl:template match="title|titleabbrev" mode="toc">
- <xsl:apply-templates mode="toc"/>
-</xsl:template>
-
-<xsl:template match="speakernotes" mode="toc">
- <!-- nop -->
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- foil -->
-
-<xsl:template match="foil">
- <xsl:param name="thisfoil">
- <xsl:apply-templates select="." mode="chunk-filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="(following::foil |following::foilgroup)[1]"/>
- <xsl:variable name="prev" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body>
- <xsl:attribute name="class">
- <xsl:value-of select="local-name(.)"/>
- <xsl:if test="@role">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- </xsl:attribute>
-
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:call-template name="foil-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <div class="foil-body">
- <xsl:call-template name="foil-body">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="foil-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="foil-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template name="foil-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="foil-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil/title">
- <h1 class="{name(.)}">
- <xsl:apply-templates/>
- </h1>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- foilgroup -->
-
-<xsl:template match="foilgroup">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="chunk-filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="home" select="/slides"/>
- <xsl:variable name="up" select="(parent::slides|parent::foilgroup)[1]"/>
- <xsl:variable name="next" select="foil[1]"/>
- <xsl:variable name="prev" select="(preceding::foil|parent::foilgroup|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
-
- <xsl:call-template name="system.head.content"/>
-
- <meta name="generator" content="DocBook Slides Stylesheets V{$VERSION}"/>
-
- <!-- Links -->
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <!-- Scripts -->
-
- <xsl:if test="$overlay != 0 or $keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('</xsl:text>
- <xsl:call-template name="script-dir"/>
- <xsl:text disable-output-escaping="yes">');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="$overlay != '0'">
- <xsl:call-template name="overlay.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="user.head.content"/>
- </head>
- <body>
- <xsl:attribute name="class">
- <xsl:value-of select="local-name(.)"/>
- <xsl:if test="@role">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- </xsl:attribute>
-
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="onload">
- <xsl:text>overlaySetup('lc')</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}" id="{$id}">
- <xsl:call-template name="foilgroup-top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-
- <!-- n.b. the foilgroup-body template is responsible for generating -->
- <!-- the foilgroup toc -->
- <div class="foilgroup-body">
- <xsl:call-template name="foilgroup-body">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
-
- <div id="overlayDiv">
- <xsl:call-template name="overlayDiv.attributes"/>
- <xsl:call-template name="foilgroup-bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
- </div>
- </div>
-
- <xsl:call-template name="process.footnotes"/>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="foilgroup/title">
- <h1 class="{name(.)}"><xsl:apply-templates/></h1>
-</xsl:template>
-
-<xsl:template name="foilgroup-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:apply-templates select="*[name(.) != 'foil' and name(.) != 'foilgroup']"/>
-
- <xsl:if test="$foilgroup.toc != 0">
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </xsl:if>
-</xsl:template>
-
-<xsl:template name="foilgroup-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="top-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="foilgroup-bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <xsl:call-template name="bottom-nav">
- <xsl:with-param name="home" select="$home"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="prev" select="$prev"/>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="overlayDiv.attributes">
- <xsl:choose>
- <xsl:when test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position: absolute; visibility: visible;</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="style">padding-top: 2in;</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="processing-instruction('dbhtml')" mode="css.pi">
- <xsl:variable name="href">
- <xsl:call-template name="dbhtml-attribute">
- <xsl:with-param name="pis" select="."/>
- <xsl:with-param name="attribute" select="'css-stylesheet'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:if test="$href!=''">
- <xsl:choose>
- <xsl:when test="$href = ''">
- <!-- nop -->
- </xsl:when>
- <xsl:when test="contains($href, '//')">
- <link type="text/css" rel="stylesheet" href="{$href}"/>
- </xsl:when>
- <xsl:when test="starts-with($href, '/')">
- <link type="text/css" rel="stylesheet" href="{$href}"/>
- </xsl:when>
- <xsl:otherwise>
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css-file">
- <xsl:with-param name="css" select="$href"/>
- </xsl:call-template>
- </xsl:attribute>
- </link>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
-
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="foil" mode="number">
- <xsl:number count="foil|foilgroup" level="any"/>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="number">
- <xsl:number count="foil|foilgroup" level="any"/>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="slides" mode="filename">
- <xsl:value-of select="$titlefoil.html"/>
-</xsl:template>
-
-<xsl:template match="foil" mode="filename">
- <xsl:text>foil</xsl:text>
- <xsl:number count="foil" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="filename">
- <xsl:text>foilgroup</xsl:text>
- <xsl:number count="foilgroup" level="any" format="01"/>
- <xsl:value-of select="$html.ext"/>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="processing-instruction('Pub')">
- <xsl:variable name="pidata"><xsl:value-of select="(.)"/></xsl:variable>
- <xsl:choose>
- <xsl:when test="contains($pidata,'UDT')"/>
- <xsl:when test="contains($pidata,'/_font')">
- <xsl:text disable-output-escaping="yes">&lt;/span&gt;</xsl:text>
- </xsl:when>
- <xsl:when test="contains($pidata,'_font')">
- <xsl:text disable-output-escaping="yes">&lt;span </xsl:text>
- <xsl:choose>
- <xsl:when test="contains($pidata,'green')">class="green"</xsl:when>
- <xsl:when test="contains($pidata,'blue')">class="blue"</xsl:when>
- <xsl:when test="contains($pidata,'orange')">class="orange"</xsl:when>
- <xsl:when test="contains($pidata,'red')">class="red"</xsl:when>
- <xsl:when test="contains($pidata,'brown')">class="brown"</xsl:when>
- <xsl:when test="contains($pidata,'violet')">class="violet"</xsl:when>
- <xsl:when test="contains($pidata,'black')">class="black"</xsl:when>
- <xsl:otherwise>class="bold"</xsl:otherwise>
- </xsl:choose>
- <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-<!-- blocks -->
-
-<xsl:template match="figure">
- <div class="{name(.)}">
- <xsl:apply-imports/>
- </div>
- <xsl:if test="following-sibling::*"><hr/></xsl:if>
-</xsl:template>
-
-<xsl:template match="copyright" mode="slide.footer.mode">
- <span class="{name(.)}">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Copyright'"/>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="dingbat">
- <xsl:with-param name="dingbat">copyright</xsl:with-param>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="copyright.years">
- <xsl:with-param name="years" select="year"/>
- <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
- <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges"/>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:apply-templates select="holder" mode="titlepage.mode"/>
- </span>
-</xsl:template>
-
-<!-- ============================================================ -->
-<!-- inlines -->
-
-<xsl:template match="link">
- <xsl:call-template name="link">
- <xsl:with-param name="a.target" select="'foil'"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="ulink">
- <a>
- <xsl:if test="@id">
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:if>
- <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
- <xsl:if test="$ulink.target != ''">
- <xsl:attribute name="target">
- <xsl:value-of select="$ulink.target"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="count(child::node())=0">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- <xsl:if test="@role='show'">
- <xsl:text> (</xsl:text>
- <xsl:value-of select="@url"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </a>
-</xsl:template>
-
-<xsl:template match="title/ulink">
- <a>
- <xsl:if test="@id">
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:if>
- <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
- <xsl:if test="$ulink.target != ''">
- <xsl:attribute name="target">
- <xsl:value-of select="$ulink.target"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="count(child::node())=0">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
-</xsl:template>
-
-<xsl:template match="subtitle">
- <h2 class="subtitle">
- <xsl:apply-templates/>
- </h2>
-</xsl:template>
-
-<xsl:template match="graphic">
- <center>
- <!-- can't this be done a better way? -->
- <xsl:apply-imports/>
- </center>
-</xsl:template>
-
-<xsl:template match="titleabbrev">
- <!-- nop -->
-</xsl:template>
-
-<xsl:template match="speakernotes">
- <!-- nop -->
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- Chunking for slides -->
-
-<xsl:template name="chunk">
- <xsl:param name="node" select="."/>
- <xsl:choose>
- <xsl:when test="name($node)='slides'">1</xsl:when>
- <xsl:when test="name($node)='foilgroup'">1</xsl:when>
- <xsl:when test="name($node)='foil'">1</xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="*" mode="chunk-filename">
- <xsl:param name="recursive">0</xsl:param>
- <!-- returns the filename of a chunk -->
- <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable>
- <xsl:variable name="filename">
- <xsl:call-template name="pi.dbhtml_filename"/>
- </xsl:variable>
- <xsl:variable name="dir">
- <xsl:call-template name="dbhtml-dir"/>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$ischunk='0'">
- <!-- if called on something that isn't a chunk, walk up... -->
- <xsl:choose>
- <xsl:when test="count(./parent::*)&gt;0">
- <xsl:apply-templates mode="chunk-filename" select="./parent::*">
- <xsl:with-param name="recursive" select="$recursive"/>
- </xsl:apply-templates>
- </xsl:when>
- <!-- unless there is no up, in which case return "" -->
- <xsl:otherwise/>
- </xsl:choose>
- </xsl:when>
-
- <xsl:when test="not($recursive) and $filename != ''">
- <!-- if this chunk has an explicit name, use it -->
- <xsl:if test="$dir != ''">
- <xsl:value-of select="$dir"/>
- <xsl:text>/</xsl:text>
- </xsl:if>
- <xsl:value-of select="$filename"/>
- </xsl:when>
-
- <xsl:when test="name(.)='foil'">
- <xsl:variable name="foilnumber">
- <xsl:number count="foil" level="any"/>
- </xsl:variable>
-
- <xsl:value-of select="$dir"/>
- <xsl:text>foil</xsl:text>
- <xsl:number value="$foilnumber" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:when>
-
- <xsl:when test="name(.)='foilgroup'">
- <xsl:variable name="foilgroupnumber">
- <xsl:number count="foilgroup" level="any" format="01"/>
- </xsl:variable>
-
- <xsl:value-of select="$dir"/>
- <xsl:text>foilgroup</xsl:text>
- <xsl:number value="$foilgroupnumber" format="01"/>
- <xsl:value-of select="$html.ext"/>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:text>chunk-filename-error-</xsl:text>
- <xsl:value-of select="name(.)"/>
- <xsl:number level="any" format="01" from="set"/>
- <xsl:if test="not($recursive)">
- <xsl:value-of select="$html.ext"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ====================================================================== -->
-<!-- Handling of xrefs -->
-
-<xsl:template match="foil|foilgroup" mode="xref-to">
- <xsl:param name="referrer"/>
- <xsl:param name="xrefstyle"/>
-
- <xsl:apply-templates select="." mode="object.xref.markup">
- <xsl:with-param name="purpose" select="'xref'"/>
- <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
- <xsl:with-param name="referrer" select="$referrer"/>
- </xsl:apply-templates>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:*">
- <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="foil.number">
- <xsl:choose>
- <xsl:when test="$show.foil.number != 0 and self::foil">
- <xsl:number count="foil" level="any"/>
- /
- <xsl:value-of select="count(//foil)"/>
- </xsl:when>
- <xsl:otherwise>
- &#160;
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/slidy.xsl b/slides/xhtml/slidy.xsl
new file mode 100644
index 0000000..d286c55
--- /dev/null
+++ b/slides/xhtml/slidy.xsl
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:dbs="http://docbook.org/ns/docbook-slides"
+ exclude-result-prefixes="dbs db"
+ version="1.0">
+
+<xsl:import href="plain.xsl"/>
+
+<xsl:param name="wrap.slidecontent">0</xsl:param>
+
+<xsl:template name="xhtml.head">
+ <meta name="copyright">
+ <xsl:attribute name="content">
+ <xsl:if test="/dbs:slides/db:info/db:copyright">
+ <xsl:call-template name="slide.copyright"/>
+ </xsl:if>
+ </xsl:attribute>
+ </meta>
+
+ <xsl:if test="$slidy.duration != 0">
+ <meta name="duration" content="{$slidy.duration}"/>
+ </xsl:if>
+
+ <link rel="stylesheet" href="{concat($slidy.path.prefix, $slidy.slidy.css)}" type="text/css"/>
+ <xsl:if test="$slidy.user.css">
+ <link rel="stylesheet" href="{concat($slidy.path.prefix, $slidy.user.css)}" type="text/css"/>
+ </xsl:if>
+ <link rel="stylesheet" href="{$user.css}" type="text/css"/>
+ <script src="{concat($slidy.path.prefix, $slidy.slidy.js)}" charset="utf-8" type="text/javascript"/>
+</xsl:template>
+
+<xsl:template name="slideshow.head">
+ <div class="background"/>
+</xsl:template>
+
+<xsl:template name="slideshow.content">
+ <xsl:if test="$generate.titlepage != 0">
+ <xsl:apply-templates select="/dbs:slides" mode="titlepage"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="/dbs:slides/dbs:foil|dbs:slides/dbs:foilgroup"/>
+</xsl:template>
+
+<xsl:template match="db:xref">
+ <xsl:variable name="target" select="id(./@linkend)"/>
+
+ <xsl:choose>
+ <xsl:when test="($target[self::dbs:foil] or $target[self::dbs:foilgroup])">
+ <!-- foil no: preceding foil(group)s + titlepage + 1 -->
+ <xsl:variable name="target.no" select="count($target/preceding::dbs:foil|$target/preceding::dbs:foilgroup) + 1 + $generate.titlepage"/>
+
+ <a href="{concat('#(', $target.no, ')')}">
+ <xsl:apply-templates select="$target" mode="xref-to"/>
+ </a>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="xref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="db:biblioentry" mode="xref-to">
+ <xsl:variable name="id" select="@xml:id"/>
+ <xsl:variable name="entry" select="//db:bibliography/*[@xml:id=$id][1]"/>
+
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#(', count($entry/preceding::dbs:foil|$entry/preceding::dbs:foilgroup) + 1 + $generate.titlepage, ')')"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="$bibliography.numbered != 0">
+ <xsl:number from="db:bibliography" count="db:biblioentry|db:bibliomixed" level="any" format="1"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/slides/xhtml/tables.xsl b/slides/xhtml/tables.xsl
deleted file mode 100644
index 7d5ec6b..0000000
--- a/slides/xhtml/tables.xsl
+++ /dev/null
@@ -1,334 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="blank.image" select="'blank.png'"/>
-<xsl:param name="arrow.image" select="'pointer.png'"/>
-
-<xsl:param name="toc.bg.color">#6A719C</xsl:param>
-<xsl:param name="toc.width">220</xsl:param>
-
-<xsl:param name="css.stylesheet" select="'slides-table.css'"/>
-
-<!-- ============================================================ -->
-
-<xsl:template name="foilgroup-body">
- <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="ttoc">
- <xsl:apply-templates select="." mode="t-toc"/>
- </div>
- </td>
- <td>&#160;</td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="{name(.)}">
- <xsl:apply-templates select="*[name(.) != 'foil' and name(.) != 'foilgroup']"/>
- </div>
-
- <xsl:if test="$foilgroup.toc != 0">
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </xsl:if>
- </td>
- </tr>
- </table>
-</xsl:template>
-
-<xsl:template name="foil-body">
- <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="ttoc">
- <xsl:apply-templates select="." mode="t-toc"/>
- </div>
- </td>
- <td>&#160;</td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="{name(.)}">
- <xsl:apply-templates/>
- </div>
- </td>
- </tr>
- </table>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="foilgroup" mode="t-toc">
- <xsl:variable name="thisfoilgroup" select="."/>
-
- <xsl:for-each select="/slides/foil|/slides/foilgroup">
- <xsl:choose>
- <xsl:when test="name(.) = 'foilgroup'">
- <xsl:choose>
- <xsl:when test="$thisfoilgroup = .">
- <img alt="+">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$arrow.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <span class="ttoc-foilgroup">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
-
- <xsl:if test="$thisfoilgroup = .">
- <xsl:for-each select="foil">
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
-
- <span class="ttoc-foil">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- <span class="ttoc-foil">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template match="foil" mode="t-toc">
- <xsl:variable name="thisfoil" select="."/>
-
- <xsl:for-each select="/slides/foil|/slides/foilgroup">
- <xsl:choose>
- <xsl:when test="name(.) = 'foilgroup'">
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- <span class="ttoc-foilgroup">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
-
- <xsl:if test="$thisfoil/ancestor::foilgroup = .">
- <xsl:for-each select="foil">
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
-
- <xsl:choose>
- <xsl:when test="$thisfoil = .">
- <img alt="+">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$arrow.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <span class="ttoc-foil">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="toc-title"/>
- </a>
- </span>
- <br/>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <!-- foils only -->
- <xsl:for-each select="/slides/foil">
- <xsl:choose>
- <xsl:when test="$thisfoil = .">
- <img alt="+">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$arrow.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img alt=" ">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$blank.image"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <span class="ttoc-foil">
- <xsl:apply-templates select="." mode="toc-title"/>
- </span>
- <br/>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slides" mode="toc-title">
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="slidesinfo/titleabbrev">
- <xsl:value-of select="slidesinfo/titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="slidesinfo/title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup" mode="toc-title">
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foil" mode="toc-title">
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string">
- <xsl:choose>
- <xsl:when test="titleabbrev">
- <xsl:value-of select="titleabbrev"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="nobreak">
- <xsl:param name="string" select="''"/>
- <xsl:choose>
- <xsl:when test="contains($string, ' ')">
- <xsl:value-of select="substring-before($string, ' ')"/>
- <xsl:text>&#160;</xsl:text>
- <xsl:call-template name="nobreak">
- <xsl:with-param name="string" select="substring-after($string, ' ')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$string"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/vslides.xsl b/slides/xhtml/vslides.xsl
deleted file mode 100644
index 26e9961..0000000
--- a/slides/xhtml/vslides.xsl
+++ /dev/null
@@ -1,652 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="but-fforward.png" select="'active/but-fforward.png'"/>
-<xsl:param name="but-info.png" select="'active/but-info.png'"/>
-<xsl:param name="but-next.png" select="'active/but-next.png'"/>
-<xsl:param name="but-prev.png" select="'active/but-prev.png'"/>
-<xsl:param name="but-rewind.png" select="'active/but-rewind.png'"/>
-
-<xsl:param name="but-xfforward.png" select="'inactive/but-fforward.png'"/>
-<xsl:param name="but-xinfo.png" select="'inactive/but-info.png'"/>
-<xsl:param name="but-xnext.png" select="'inactive/but-next.png'"/>
-<xsl:param name="but-xprev.png" select="'inactive/but-prev.png'"/>
-<xsl:param name="but-xrewind.png" select="'inactive/but-rewind.png'"/>
-
-<!-- overrides for this stylesheet -->
-<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"/>
-<xsl:param name="toc.width" select="40"/>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slides">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $toc.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="slidesinfo/title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="/slides"/>
- <xsl:with-param name="tocfile" select="$toc.html"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="tocpage">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="next" select="/slides"/>
- <xsl:with-param name="tocfile"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
-
- <div class="toc-body">
- <xsl:call-template name="toc-body"/>
- </div>
-
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="slidesinfo">
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $titlefoil.html)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="next" select="(/slides/foil|/slides/foilgroup)[1]"/>
- <xsl:with-param name="tocfile" select="$toc.html"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="titlepage">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="first"/>
- <xsl:with-param name="last" select="(following::foilgroup|following::foil)[last()]"/>
- <xsl:with-param name="next" select="(following::foilgroup|following::foil)[1]"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
- <div class="{name(.)}">
- <xsl:apply-templates mode="titlepage.mode"/>
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template match="foilgroup">
- <xsl:param name="thisfoilgroup">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:param>
-
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="nextfoil" select="foil[1]"/>
- <xsl:variable name="lastfoil" select="(descendant::foil|following::foil)[last()]"/>
- <xsl:variable name="prevfoil" select="(preceding::foil|/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoilgroup)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="foilgroup">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="last" select="$lastfoil"/>
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
- <xsl:apply-templates/>
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:apply-templates select="foil"/>
-</xsl:template>
-
-<xsl:template match="foil">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="foilgroup" select="ancestor::foilgroup"/>
-
- <xsl:variable name="thisfoil">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <xsl:variable name="nextfoil" select="(following::foil |following::foilgroup)[1]"/>
-
- <xsl:variable name="lastfoil" select="following::foil[last()]"/>
-
- <xsl:variable name="prevfoil" select="(preceding-sibling::foil[1] |parent::foilgroup[1] |/slides)[last()]"/>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="indent" select="$output.indent"/>
- <xsl:with-param name="filename" select="concat($base.dir, $thisfoil)"/>
- <xsl:with-param name="content">
- <html>
- <head>
- <title><xsl:value-of select="title"/></title>
- <xsl:if test="$css.stylesheet != ''">
- <link type="text/css" rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="css.stylesheet"/>
- </xsl:attribute>
- </link>
- </xsl:if>
- <xsl:apply-templates select="/processing-instruction('dbhtml')" mode="css.pi"/>
-
- <xsl:call-template name="links">
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- <xsl:if test="$keyboard.nav != 0">
- <script language="javascript" type="text/javascript">
- <xsl:text> </xsl:text>
- </script>
- </xsl:if>
-
- <xsl:if test="$keyboard.nav != 0">
- <xsl:call-template name="ua.js"/>
- <xsl:call-template name="xbDOM.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- <xsl:call-template name="xbLibrary.js"/>
- <script language="javascript" type="text/javascript">
- <xsl:text disable-output-escaping="yes">
- &lt;!--
- xblibrary = new xbLibrary('../browser');
- // --&gt;
- </xsl:text>
- </script>
- <xsl:call-template name="xbStyle.js"/>
- <xsl:call-template name="xbCollapsibleLists.js"/>
- <xsl:call-template name="slides.js">
- <xsl:with-param name="language" select="'javascript'"/>
- </xsl:call-template>
- </xsl:if>
- </head>
- <body class="foil">
- <xsl:call-template name="body.attributes"/>
- <xsl:if test="$keyboard.nav != 0">
- <xsl:attribute name="onkeypress">
- <xsl:text>navigate(event)</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <table border="0" width="100%" summary="Navigation and body table" cellpadding="0" cellspacing="0">
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="header"/></td>
- </tr>
-
- <tr>
- <td width="{$toc.width}" valign="top" align="left">
- <xsl:if test="$toc.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$toc.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:call-template name="vertical-navigation">
- <xsl:with-param name="last" select="$lastfoil"/>
- <xsl:with-param name="prev" select="$prevfoil"/>
- <xsl:with-param name="next" select="$nextfoil"/>
- </xsl:call-template>
-
- </td>
- <td valign="top" align="left">
- <xsl:if test="$body.bg.color != ''">
- <xsl:attribute name="bgcolor">
- <xsl:value-of select="$body.bg.color"/>
- </xsl:attribute>
- </xsl:if>
-
- <div class="{name(.)}">
- <xsl:apply-templates/>
- </div>
- </td>
- </tr>
-
- <tr>
- <td>&#160;</td>
- <td><xsl:apply-templates select="." mode="footer"/></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="slidesinfo" mode="header">
- <div class="navhead">
- <!-- nop -->
- </div>
-</xsl:template>
-
-<xsl:template match="foil|foilgroup" mode="header">
- <div class="navhead">
- <table border="0" width="100%" summary="Header table" cellpadding="0" cellspacing="0">
- <tr>
- <td align="left">
- <xsl:apply-templates select="/slides/slidesinfo/title" mode="slide.footer.mode"/>
- </td>
- <td align="right">
- <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template match="slidesinfo" mode="footer">
- <div class="navfoot">
- <!-- nop -->
- </div>
-</xsl:template>
-
-<xsl:template match="foil|foilgroup" mode="footer">
- <div class="navfoot">
- <table border="0" width="100%" summary="Header table" cellpadding="0" cellspacing="0">
- <tr>
- <td align="center">
- <xsl:text>Slide </xsl:text>
- <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
- <xsl:text> of </xsl:text>
- <xsl:value-of select="count(//foil) + count(//foilgroup)"/>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template match="slides" mode="footer"/>
-
-<!-- ============================================================ -->
-
-<xsl:template name="vertical-navigation">
- <xsl:param name="first" select="/slides"/>
- <xsl:param name="prev"/>
- <xsl:param name="last"/>
- <xsl:param name="next"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="vnav">
- <xsl:choose>
- <xsl:when test="$first">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$first" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="First">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-rewind.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="First">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xrewind.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <xsl:choose>
- <xsl:when test="$prev">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="Previous">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-prev.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Previous">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xprev.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <xsl:choose>
- <xsl:when test="$next">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="Last">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-next.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Last">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xnext.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <xsl:choose>
- <xsl:when test="$last">
- <a>
- <xsl:attribute name="href">
- <xsl:apply-templates select="$last" mode="filename"/>
- </xsl:attribute>
- <img border="0" alt="Next">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-fforward.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img alt="Next">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xfforward.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <br/>
- <br/>
-
- <xsl:choose>
- <xsl:when test="$tocfile != ''">
- <a href="{$tocfile}">
- <img border="0" alt="ToC">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-info.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" alt="ToC">
- <xsl:attribute name="src">
- <xsl:call-template name="graphics-file">
- <xsl:with-param name="image" select="$but-xinfo.png"/>
- </xsl:call-template>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/slides/xhtml/w3c.xsl b/slides/xhtml/w3c.xsl
deleted file mode 100644
index d361a33..0000000
--- a/slides/xhtml/w3c.xsl
+++ /dev/null
@@ -1,358 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
-
-<xsl:import href="slides-common.xsl"/>
-
-<xsl:param name="logo.image.uri" select="''"/>
-<xsl:param name="logo.uri" select="''"/>
-<xsl:param name="logo.title" select="''"/>
-
-<xsl:param name="next.image" select="'active/w3c-next.png'"/>
-<xsl:param name="no.next.image" select="'inactive/w3c-next.png'"/>
-
-<xsl:param name="prev.image" select="'active/w3c-prev.png'"/>
-<xsl:param name="no.prev.image" select="'inactive/w3c-prev.png'"/>
-
-<xsl:param name="toc.image" select="'active/w3c-toc.png'"/>
-<xsl:param name="no.toc.image" select="'inactive/w3c-toc.png'"/>
-
-<xsl:param name="css.stylesheet" select="'slides-w3c.css'"/>
-
-<xsl:template name="logo">
- <xsl:if test="$logo.uri != ''">
- <a href="{$logo.uri}" title="{$logo.title}">
- <xsl:choose>
- <xsl:when test="$logo.image.uri=''">
- <xsl:value-of select="$logo.title"/>
- </xsl:when>
- <xsl:otherwise>
- <img src="{$logo.image.uri}" alt="{$logo.title}" border="0"/>
- </xsl:otherwise>
- </xsl:choose>
- </a>
- </xsl:if>
-</xsl:template>
-
-<xsl:template name="overlayDiv.attributes">
- <xsl:if test="$overlay != 0">
- <xsl:attribute name="style">
- <xsl:text>position: absolute; visibility: visible;</xsl:text>
- </xsl:attribute>
- </xsl:if>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%" summary="Navigation buttons">
- <tr>
- <td align="left" valign="top">
- <xsl:call-template name="logo"/>
- </td>
- <td valign="top" nowrap="nowrap" width="150">
- <div align="right">
- <xsl:choose>
- <xsl:when test="$prev">
- <a rel="previous" accesskey="P">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32" alt=" Previous" title="{$prev/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Previous" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$tocfile != ''">
- <a rel="contents" href="{$tocfile}" accesskey="C">
- <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a rel="next" accesskey="N">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32" alt=" Next" title="{$next/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Next" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </td>
- </tr>
- </table>
-
- <xsl:apply-templates select="title"/>
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<xsl:template name="bottom-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navfoot">
- <hr class="bottom-nav-sep"/>
- <table class="footer" cellspacing="0" cellpadding="0" border="0" width="97%" summary="footer">
- <tr>
- <td align="left" valign="top">
- <xsl:variable name="author" select="(/slides/slidesinfo//author |/slides/slidesinfo//editor)"/>
- <xsl:for-each select="$author">
- <xsl:choose>
- <xsl:when test=".//email">
- <a href="mailto:{.//email[1]}">
- <xsl:call-template name="person.name"/>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="person.name"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="position() &lt; last()">, </xsl:if>
- </xsl:for-each>
- </td>
- <td align="right" valign="top">
- <span class="index">
- <xsl:value-of select="count(preceding::foil) + count(preceding::foilgroup) + count(ancestor::foilgroup) + 1"/>
- <xsl:text> of </xsl:text>
- <xsl:value-of select="count(//foil|//foilgroup)"/>
- </span>
- </td>
-
- <td valign="top" nowrap="nowrap" width="150">
- <div align="right">
- <xsl:choose>
- <xsl:when test="$prev">
- <a rel="previous" accesskey="P">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32" alt=" Previous" title="{$prev/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Prev" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a rel="next" accesskey="N">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32" alt=" Next" title="{$next/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Next" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="titlepage-top-nav">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <div class="navhead">
- <table class="navbar" cellspacing="0" cellpadding="0" border="0" width="97%" summary="Navigation buttons">
- <tr>
- <td align="left" valign="top">
- <xsl:call-template name="logo"/>
- </td>
- <td valign="top" nowrap="nowrap" width="150">
- <div align="right">
- <xsl:choose>
- <xsl:when test="$prev">
- <a rel="previous" accesskey="P">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$prev" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32" alt=" Previous" title="{$prev/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="prev.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Previous" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.prev.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$tocfile != ''">
- <a rel="contents" href="{$tocfile}" accesskey="C">
- <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="toc.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Contents" title="Table of Contents">
- <xsl:attribute name="src">
- <xsl:call-template name="no.toc.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$next">
- <a rel="next" accesskey="N">
- <xsl:attribute name="href">
- <xsl:apply-templates select="$next" mode="filename"/>
- </xsl:attribute>
- <img border="0" width="32" height="32" alt=" Next" title="{$next/title}">
- <xsl:attribute name="src">
- <xsl:call-template name="next.image"/>
- </xsl:attribute>
- </img>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <img border="0" width="32" height="32" alt=" Next" title="">
- <xsl:attribute name="src">
- <xsl:call-template name="no.next.image"/>
- </xsl:attribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </td>
- </tr>
- </table>
-
- <hr class="top-nav-sep"/>
- </div>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template name="foil-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <!-- skip the title -->
- <xsl:apply-templates select="*[name(.) != 'title']"/>
-</xsl:template>
-
-<xsl:template name="foilgroup-body">
- <xsl:param name="home"/>
- <xsl:param name="up"/>
- <xsl:param name="next"/>
- <xsl:param name="prev"/>
- <xsl:param name="tocfile" select="$toc.html"/>
-
- <!-- skip the title -->
- <xsl:apply-templates select="*[name(.) != 'title' and name(.) != 'foil' and name(.) != 'foilgroup']"/>
-
- <xsl:if test="$foilgroup.toc != 0">
- <dl class="toc">
- <xsl:apply-templates select="foil" mode="toc"/>
- </dl>
- </xsl:if>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<xsl:template xmlns:html="http://www.w3.org/1999/xhtml" match="html:*">
- <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ====================================================================== -->
-
-</xsl:stylesheet>
diff --git a/template/titlepage.xml b/template/titlepage.xml
index b9fb6c5..80b58ae 100644
--- a/template/titlepage.xml
+++ b/template/titlepage.xml
@@ -6,7 +6,7 @@
<info>
<title>Titlepage Template Stylesheet Reference</title>
<releaseinfo role="meta">
- $Id: titlepage.xsl 9394 2012-06-02 21:18:04Z bobstayton $
+ $Id: titlepage.xsl 9600 2012-09-11 12:12:09Z kosek $
</releaseinfo>
</info>
<partintro xml:id="intro_partintro">
diff --git a/template/titlepage.xsl b/template/titlepage.xsl
index 836be0e..388d4e3 100644
--- a/template/titlepage.xsl
+++ b/template/titlepage.xsl
@@ -9,7 +9,7 @@
version='1.0'>
<!-- ********************************************************************
- $Id: titlepage.xsl 9394 2012-06-02 21:18:04Z bobstayton $
+ $Id: titlepage.xsl 9600 2012-09-11 12:12:09Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -21,7 +21,13 @@
<!-- ==================================================================== -->
<!-- Namespace for wrapper elements. Please set it for XHTML. -->
-<xsl:param name="ns"/>
+<xsl:param name="ns">
+ <!-- Guess correct setting for cases where parameter is not supplied -->
+ <xsl:choose>
+ <xsl:when test="//*[namespace-uri() = 'http://www.w3.org/1999/XSL/Format']">http://www.w3.org/1999/XSL/Format</xsl:when>
+ <xsl:when test="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']">http://www.w3.org/1999/xhtml</xsl:when>
+ </xsl:choose>
+</xsl:param>
<xsl:template match="/">
<xsl:text>&#x0a;</xsl:text>
@@ -35,7 +41,7 @@
<info>
<title>Titlepage Template Stylesheet Reference</title>
<releaseinfo role="meta">
- $Id: titlepage.xsl 9394 2012-06-02 21:18:04Z bobstayton $
+ $Id: titlepage.xsl 9600 2012-09-11 12:12:09Z kosek $
</releaseinfo>
</info>
<partintro xml:id="intro_partintro">
diff --git a/tools/bin/docbook-xsl-update b/tools/bin/docbook-xsl-update
index 0d44f56..aba0016 100755
--- a/tools/bin/docbook-xsl-update
+++ b/tools/bin/docbook-xsl-update
@@ -2,7 +2,7 @@
# vim: number
# docbook-xsl-update - Update environment to latest docbook-xsl snapshot
-# $Id: docbook-xsl-update 6565 2007-01-29 23:00:16Z xmldoc $
+# $Id: docbook-xsl-update 9628 2012-10-20 23:52:01Z dcramer $
if [ -z $DOCBOOK_MIRROR ]; then
myhost=docbook.xml-doc.org:5873;
@@ -13,7 +13,7 @@ fi
mydir=$(readlink -f $(dirname $0))
mydocbook_xsl_base=$(readlink -f $(dirname $0)/../..)
-if [ ! -f $mydocbook_xsl_base/VERSION ]; then
+if [ ! -f $mydocbook_xsl_base/VERSION.xsl ]; then
cat <<- EOF
$(basename $0): error: not in snapshot directory. Stopping.
diff --git a/webhelp/Makefile.sample b/webhelp/Makefile.sample
new file mode 100644
index 0000000..d9a9a38
--- /dev/null
+++ b/webhelp/Makefile.sample
@@ -0,0 +1,111 @@
+# Configuration
+# The name of the source DocBook xml file
+INPUT_XML = docsrc/readme.xml
+
+# The makefile assumes that you have a
+# directory named images that contains
+# your images. It copies this to the
+# output directory
+USER_IMAGES_PARENT_DIR=docsrc
+
+# Name of the desired output directory
+# This will be created if it doesn't exist
+OUTPUT_DIR = docs
+
+# A list of files to exclude from indexing
+INDEXER_EXCLUDED_FILES = ix01.html
+
+# Profiling params. For more information on
+# profiling (conditional text) and DocBook documents, see
+# http://www.sagehill.net/docbookxsl/Profiling.html
+PROFILE.ARCH = ""
+PROFILE.AUDIENCE = ""
+PROFILE.CONDITION = ""
+PROFILE.CONFORMANCE = ""
+PROFILE.LANG = ""
+PROFILE.OS = ""
+PROFILE.REVISION = ""
+PROFILE.REVISIONFLAG = ""
+PROFILE.ROLE = ""
+PROFILE.SECURITY = ""
+PROFILE.STATUS = ""
+PROFILE.USERLEVEL = ""
+PROFILE.VENDOR = ""
+PROFILE.WORDSIZE = ""
+PROFILE.ATTRIBUTE = ""
+PROFILE.VALUE = ""
+
+# Use this variable to pass in other stringparams
+# to the xsltproc pass that generates DocBook output.
+# For example:
+# OTHER_XSLTPROC_ARGS = --stringparam example.param ""
+OTHER_XSLTPROC_ARGS =
+
+# Path to the DocBook Distribution that
+# contains the xslts etc.
+DOCBOOK_DIST := ../$(pwd)
+
+# =================================================
+# You probably don't need to change anything below
+# unless you choose to add a validation step.
+# ================================================
+DOCBOOK_EXTENSIONS_DIR = $(DOCBOOK_DIST)/extensions
+INDEXER_JAR := $(DOCBOOK_EXTENSIONS_DIR)/webhelpindexer.jar
+TAGSOUP_JAR := $(DOCBOOK_EXTENSIONS_DIR)/tagsoup-1.2.1.jar
+LUCENE_ANALYZER_JAR := $(DOCBOOK_EXTENSIONS_DIR)/lucene-analyzers-3.0.0.jar
+LUCENE_CORE_JAR := $(DOCBOOK_EXTENSIONS_DIR)/lucene-core-3.0.0.jar
+
+classpath := $(INDEXER_JAR):$(TAGSOUP_JAR):$(LUCENE_ANALYZER_JAR):$(LUCENE_CORE_JAR)
+
+all: webhelp
+
+webhelp: $(INPUT_XML) copyfiles chunk index
+
+copyfiles:
+ -rm -rf $(OUTPUT_DIR)
+ mkdir -p $(OUTPUT_DIR)
+ cp -r template/common ${OUTPUT_DIR}
+ test ! -d $(USER_IMAGES_PARENT_DIR)/images/ || cp -r $(USER_IMAGES_PARENT_DIR)/images ${OUTPUT_DIR}/images
+ cp template/favicon.ico ${OUTPUT_DIR}/
+
+chunk:
+ xsltproc --xinclude --output xincluded-profiled.xml \
+ --stringparam profile.arch ${PROFILE.ARCH} \
+ --stringparam profile.audience ${PROFILE.AUDIENCE} \
+ --stringparam profile.condition ${PROFILE.CONDITION} \
+ --stringparam profile.conformance ${PROFILE.CONFORMANCE} \
+ --stringparam profile.lang ${PROFILE.LANG} \
+ --stringparam profile.os ${PROFILE.OS} \
+ --stringparam profile.revision ${PROFILE.REVISION} \
+ --stringparam profile.revisionflag ${PROFILE.REVISIONFLAG} \
+ --stringparam profile.role ${PROFILE.ROLE} \
+ --stringparam profile.security ${PROFILE.SECURITY} \
+ --stringparam profile.status ${PROFILE.STATUS} \
+ --stringparam profile.userlevel ${PROFILE.USERLEVEL} \
+ --stringparam profile.vendor ${PROFILE.VENDOR} \
+ --stringparam profile.wordsize ${PROFILE.WORDSIZE} \
+ --stringparam profile.attribute ${PROFILE.ATTRIBUTE} \
+ --stringparam profile.value ${PROFILE.VALUE} \
+ ../profiling/profile.xsl \
+ ${INPUT_XML}
+
+ xsltproc ${OTHER_XSLTPROC_ARGS} xsl/webhelp.xsl xincluded-profiled.xml
+
+ rm xincluded-profiled.xml
+index:
+ java \
+ -DhtmlDir=$(OUTPUT_DIR) \
+ -DindexerLanguage=en \
+ -DhtmlExtension=html \
+ -DdoStem=true \
+ -DindexerExcludedFiles=$(INDEXER_EXCLUDED_FILES) \
+ -Dorg.xml.sax.driver=org.ccil.cowan.tagsoup.Parser \
+ -Djavax.xml.parsers.SAXParserFactory=org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl \
+ -classpath $(classpath) \
+ com.nexwave.nquindexer.IndexerMain
+
+ cp -r template/search/* ${OUTPUT_DIR}/search
+
+clean:
+ $(RM) -r ${OUTPUT_DIR}
+
diff --git a/webhelp/build.properties b/webhelp/build.properties
index 23e0994..9432e77 100644
--- a/webhelp/build.properties
+++ b/webhelp/build.properties
@@ -35,7 +35,7 @@ xml-apis.jar=/usr/share/java/xml-apis.jar
# For non-ns version only, this validates the document
# against a dtd.
-validate-against-dtd=true
+validate-against-dtd=false
# The extension for files to be indexed (html/htm/xhtml etc.)
html.extension=html
@@ -64,4 +64,9 @@ brandname=DocBook
# Set admon.graphics to 1 to user graphics for note, tip, etc.
admon.graphics=0
-suppress.footer.navigation=0 \ No newline at end of file
+suppress.footer.navigation=0
+
+# Use this property to specify a list of file
+# names to exclude from indexing. For example,
+# you may choose not to index your book index.
+indexer-excluded-files=ix01.html \ No newline at end of file
diff --git a/webhelp/build.xml b/webhelp/build.xml
index cf3ceab..87f4447 100644
--- a/webhelp/build.xml
+++ b/webhelp/build.xml
@@ -32,7 +32,8 @@
<xslt
in="${input-xml}"
out="${xincluded-profiled.xml}"
- style="${ant.file.dir}/../profiling/profile.xsl">
+ style="${ant.file.dir}/../profiling/profile.xsl"
+ classpath="${xercesImpl.jar}">
<sysproperty key="org.apache.xerces.xni.parser.XMLParserConfiguration"
value="org.apache.xerces.parsers.XIncludeParserConfiguration"/>
<param name="profile.arch" expression="${profile.arch}" if="profile.arch"/>
@@ -74,7 +75,7 @@
<copy todir="${output-dir}">
<fileset dir="${ant.file.dir}/template">
<include name="**/*"/>
- <exclude name="**/content/search/**"/>
+ <exclude name="**/search/**"/>
</fileset>
</copy>
@@ -82,45 +83,41 @@
<!-- TODO: Look at html help code that produces a manifest file...list of images -->
<!-- Customize webhelp.xsl to produce ant file to copy images actually used? -->
<dirname property="input-images-basedir" file="${input-xml}"/>
- <copy todir="${output-dir}/content" failonerror="false">
+ <copy todir="${output-dir}" failonerror="false">
<fileset dir="${input-images-basedir}" includes="${input-images-dirs}" />
</copy>
</target>
<target name="index" if="do-search-indexing">
- <copy todir="${output-dir}">
- <fileset dir="${ant.file.dir}/template">
+ <copy todir="${output-dir}/search">
+ <fileset dir="${ant.file.dir}/template/search">
<include name="**/*"/>
- <exclude name="**/content/search/*.props"/>
- <exclude name="**/content/search/stemmers/*"/>
+ <exclude name="**/*.props"/>
+ <exclude name="**/stemmers/*"/>
</fileset>
</copy>
<!-- We separate this out so we only copy the stopwords list and stemmer for the indexer language -->
- <copy todir="${output-dir}">
- <fileset dir="${ant.file.dir}/template">
- <include name="**/content/search/default.props"/>
- <include name="**/content/search/punctuation.props"/>
- <include name="**/content/search/${webhelp.indexer.language}*.props"/>
- <include name="**/content/search/stemmers/${webhelp.indexer.language}_stemmer.js"/>
+ <copy todir="${output-dir}/search">
+ <fileset dir="${ant.file.dir}/template/search">
+ <include name="**/default.props"/>
+ <include name="**/punctuation.props"/>
+ <include name="**/${webhelp.indexer.language}*.props"/>
+ <include name="**/stemmers/${webhelp.indexer.language}_stemmer.js"/>
</fileset>
</copy>
- <!--taskdef name="indexertask"
- classname="com.nexwave.nquindexer.IndexerMain">
- <classpath refid="classpath"/>
- </taskdef-->
-
- <echo>Indexing html files in ${output-dir}/content</echo>
+ <echo>Indexing html files in ${output-dir}</echo>
<java classname="com.nexwave.nquindexer.IndexerMain" fork="true">
- <sysproperty key="htmlDir" value="${output-dir}/content"/>
+ <sysproperty key="htmlDir" value="${output-dir}"/>
<sysproperty key="indexerLanguage" value="${webhelp.indexer.language}"/>
<sysproperty key="htmlExtension" value="${html.extension}"/>
<sysproperty key="doStem" value="${enable.stemming}"/>
<sysproperty key="tocFile" value="${toc.file}"/>
-
+ <sysproperty key="indexerExcludedFiles" value="${indexer-excluded-files}"/>
+
<!--TagSoup SAX Parser for parsing even the bad html contents. see
http://sourceforge.net/tracker/?func=detail&aid=3401185&group_id=21935&atid=373750-->
<sysproperty key="org.xml.sax.driver" value="org.ccil.cowan.tagsoup.Parser"/>
@@ -146,7 +143,7 @@
</java>
<delete>
- <fileset dir="${output-dir}/content/search" includes="*.props"/>
+ <fileset dir="${output-dir}/search" includes="*.props"/>
</delete>
</target>
diff --git a/webhelp/docs/ch01.html b/webhelp/docs/ch01.html
new file mode 100644
index 0000000..5495587
--- /dev/null
+++ b/webhelp/docs/ch01.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Introduction - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><meta name="description" content="Overview of the package."></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="next" href="ch02.html" title="Using the package"></link><meta name="Section-title" content="Introduction"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Introduction</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="index.html">Prev</a> 
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp96432"></a>Introduction</h1></div></div></div>
+<p>A common requirement for technical publications groups is to produce a Web-based help
+ format that includes a table of contents pane, a search feature, and an index similar to what
+ you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for
+ a Web application that is not exposed to the Internet or requires that the user be logged in,
+ then it is impossible to use services like Google to add search. <a id="idp99472" class="indexterm"></a>
+ </p><div class="itemizedlist"><p class="title"><strong>Features</strong></p><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Sophisticated CSS-based page layout</p></li><li class="listitem"><p>Client-side search.<a id="idp102640" class="indexterm"></a></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Provides full content search of the documentation. Shows the search results with
+ links to chunked pages, and a small description.</p></li><li class="listitem"><p>Search results scoring/rating - The results are weighted according to how many
+ times the words in search query appears in it, is it bold or not, is in index terms
+ etc. The score out of 5 is shown by small colored boxes after each
+ search-result.</p></li><li class="listitem"><p>Search results can include brief descriptions of the target.<a id="idp107424" class="indexterm"></a></p></li><li class="listitem"><p>Stemming support for English, French, and German. Stemming support can be added
+ for other languages by implementing a stemmer.<a id="idp109952" class="indexterm"></a></p></li><li class="listitem"><p>Support for Chinese, Japanese, and Korean languages using code from the Lucene search
+ engine.</p></li><li class="listitem"><p>Search highlighting shows where the searched term appears in the results.
+ <a id="idp113232" class="indexterm"></a></p></li></ul></div></li><li class="listitem"><p>Table of contents (TOC) pane with collapsible toc tree.</p></li><li class="listitem"><p>Auto-synchronization of content pane and TOC.</p></li><li class="listitem"><p>Nicely placed small forward, backward, top links</p></li><li class="listitem"><p>TOC and search pane implemented without the use of a frameset.</p></li><li class="listitem"><p>An Ant script and sample Makefile to generate output.
+ You can use the ant build file by importing it into your
+ own or use it as a model for integrating this output
+ format into your own build system. Alternatively, you can
+ use the build scripts as a template for creating your own
+ script. You can also generate webhelp from DocBook using
+ the <a class="ulink" href="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html" target="_top">Docbkx Maven plugin</a>.</p></li></ul></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li id="webhelp-currentid"><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch02.html b/webhelp/docs/ch02.html
new file mode 100644
index 0000000..51c8581
--- /dev/null
+++ b/webhelp/docs/ch02.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Using the package - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch01.html" title="Introduction"></link><link rel="next" href="ch02s01.html" title="Generating webhelp output using the Ant build.xml file"></link><meta name="Section-title" content="Using the package"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch01.html">Prev</a> 
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp120560"></a>Using the package</h1></div></div></div>
+<div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ch02s01.html">Generating webhelp output using the Ant build.xml
+ file</a></span></dt><dt><span class="section"><a href="ch02s02.html">Using and customizing the output</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02s01.html">Recommended Apache configurations</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">Search indexing</a></span></dt><dt><span class="section"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></dt><dt><span class="section"><a href="ch02s05.html">Adding images</a></span></dt></dl></div><p class="summary">The following sections describe how to
+ install and use the package on Windows with the sample Ant build
+ script. In an environment where unix shell command are
+ available, you can also use the
+ <code class="filename">Makefile.sample</code> as a starting point for
+ creating your build script. To use
+ <code class="filename">Makefile.sample</code> you must have
+ <span class="command"><strong>xsltproc</strong></span> and <span class="command"><strong>java</strong></span>
+ available in your <code class="envar">PATH</code>.</p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02s01.html b/webhelp/docs/ch02s01.html
index 281937d..45f04fa 100644
--- a/webhelp/docs/content/ch02s01.html
+++ b/webhelp/docs/ch02s01.html
@@ -1,10 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Generating webhelp output</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><meta name="description" content="Installation instructions"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02.html" title="Using the package"></link><link rel="next" href="ch02s02.html" title="Using and customizing the output"></link><script type="text/javascript">
+<title>Generating webhelp output using the Ant build.xml file - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><meta name="description" content="Installation instructions"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02.html" title="Using the package"></link><link rel="next" href="ch02s02.html" title="Using and customizing the output"></link><meta name="Section-title" content="Generating webhelp output using the Ant build.xml file"></meta><script type="text/javascript">
//The id for tree cookie
- var treeCookieId = "treeview-1055";
+ var treeCookieId = "treeview-1102";
var language = "en";
var w = new Object();
//Localization
@@ -13,10 +13,22 @@
txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
txt_please_wait = "Please wait. Search in progress...";
txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
}
+
input {
margin-bottom: 5px;
margin-top: 2px;
@@ -25,15 +37,15 @@ input {
display: block;
height: 22px;
padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
}
span.contentsTab {
padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
}
span.searchTab {
padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
}
/* Overide jquery treeview's defaults for ul. */
@@ -85,17 +97,49 @@ border: none; background: none; font-weight: none; color: none; }
.ui-tabs { padding: .2em;}
.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
</a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02.html">Prev</a>
|
<a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
|
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s02.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id375833"></a>Generating webhelp output</h2></div></div></div>
-<div class="procedure"><a id="id375868"></a><p class="title"><strong>Procedure 1. To install the package on Windows</strong></p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The examples in this procedure assume a Windows installation, but the process is the
- same in other environments, <span class="foreignphrase"><em class="foreignphrase">mutatis mutandis</em></span>.</p><p>In addition to using the ant
- <code class="filename">build.xml</code> provided, you can also
- use the <a class="ulink" href="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html" target="_top">Docbkx Maven plugin</a> to generate
- webhelp.</p></div><ol class="procedure" type="1"><li class="step"><p>If necessary, install <a class="ulink" href="http://www.java.com/en/download/manual.jsp" target="_top">Java
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s02.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp125040"></a>Generating webhelp output using the Ant build.xml
+ file</h2></div></div></div>
+<div class="procedure"><a id="idp126912"></a><p class="title"><strong>Procedure 1. To install the package</strong></p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The examples in this procedure assume a Windows
+ installation, but the process is the same in other
+ environments, <span class="foreignphrase"><em class="foreignphrase">mutatis
+ mutandis</em></span>. In an environment where unix
+ shell command are available, you can also use the
+ <code class="filename">Makefile.sample</code> as a starting point
+ for creating your build script. To use
+ <code class="filename">Makefile.sample</code> you must have
+ <span class="command"><strong>xsltproc</strong></span> and <span class="command"><strong>java</strong></span>
+ available in your <code class="envar">PATH</code>. You can also use
+ the <a class="ulink" href="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html" target="_top">Docbkx Maven plugin</a> to generate webhelp.</p></div><ol class="procedure" type="1"><li class="step"><p>If necessary, install <a class="ulink" href="http://www.java.com/en/download/manual.jsp" target="_top">Java
1.6</a> or higher.</p><ol type="a" class="substeps"><li class="step"><p>Confirm that Java is installed and in your <code class="envar">PATH</code> by typing the
following at a command prompt: </p><pre class="programlisting">java -version</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>To build the indexer, you must have the JDK.</p></div></li></ol></li><li class="step"><p>If necessary, install <a class="ulink" href="http://ant.apache.org/bindownload.cgi" target="_top">Apache
Ant</a> 1.8.0 or higher. See <a class="ulink" href="http://ant.apache.org/manual/install.html" target="_top">Ant installation instructions</a>.</p><ol type="a" class="substeps"><li class="step"><p>Unzip the Ant binary distribution to a convenient location on your system. For
@@ -107,10 +151,15 @@ border: none; background: none; font-weight: none; color: none; }
</p><pre class="programlisting">ant -version</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you see a message about the file <code class="filename">tools.jar</code> being
missing, you can safely ignore it.</p></div></li></ol></li><li class="step"><p>Download <a class="ulink" href="http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip" target="_top">Saxon
6.5.x</a> and unzip the distribution to a convenient location on your file system.
- You will use the path to <code class="filename">saxon.jar</code> in <a class="xref" href="ch02s01.html#edit-build-properties" title="Step 4">Step 4</a> below.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The <code class="filename">build.xml</code> has only been tested with Saxon 6.5, though
+ You will use the path to <code class="filename">saxon.jar</code> in <a class="xref" href="ch02s01.html#edit-build-properties" title="Step 5">Step 5</a> below.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The <code class="filename">build.xml</code> has only been tested with Saxon 6.5, though
it could be adapted to work with other XSLT processors. However, when you generate
output, the Saxon jar must <span class="bold"><strong>not</strong></span> be in your
- <code class="envar">CLASSPATH</code>.</p></div></li><li class="step"><a id="edit-build-properties"></a><p>In a text editor, edit the
+ <code class="envar">CLASSPATH</code>.</p></div></li><li class="step"><p>Download <a class="ulink" href="https://xerces.apache.org/xerces2-j/" target="_top">Xerces2
+ Java</a> and extract it to a convenient location on
+ your file system. You will need the
+ <code class="filename">xercesImpl.jar</code> and
+ <code class="filename">xml-apis.jar</code> from this distribution
+ in in <a class="xref" href="ch02s01.html#edit-build-properties" title="Step 5">Step 5</a>. </p></li><li class="step"><a id="edit-build-properties"></a><p>In a text editor, edit the
<code class="filename">build.properties</code> file in the
webhelp directory and make the changes indicated by the comments.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>You must set appropriate values for
<code class="code">xslt-processor-classpath</code>,
@@ -148,7 +197,7 @@ stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
# and uncomment this line.
#input-images-basedir=/path/to/image/location
-# Modify the follosing so that they point to your local
+<span class="emphasis"><em># Modify the follosing so that they point to your local
# copy of the jars indicated:
# * Saxon 6.5 jar
# * Xerces 2: xercesImpl.jar
@@ -156,7 +205,7 @@ stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
xercesImpl.jar=/usr/share/java/xercesImpl.jar
xml-apis.jar=/usr/share/java/xml-apis.jar
-
+</em></span>
# For non-ns version only, this validates the document
# against a dtd.
validate-against-dtd=true
@@ -180,13 +229,13 @@ enable.stemming=true
# Set admon.graphics to 1 to user graphics for note, tip, etc.
admon.graphics=0
-suppress.footer.navigation=0</pre></li><li class="step"><p>Test the package by running the command <code class="code">ant webhelp
- -Doutput-dir=test-ouput</code> at the command line in the webhelp directory. It should
- generate a copy of this documentation in the <code class="filename">doc</code>
- directory. Type <code class="code">start test-output\index.html</code> to open the output in a
- browser. Once you have confirmed that the process worked, you can delete the <code class="filename">test-output</code> directory. </p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>The Saxon 6.5 jar should <span class="emphasis"><em>not</em></span> be in your
- <code class="envar">CLASSPATH</code> when you generate the webhelp output. If you have any
- problems, try running ant with an empty <code class="envar">CLASSPATH</code>.</p></div></li><li class="step"><p>To process your own document, simply refer to this package from another
+suppress.footer.navigation=0</pre></li><li class="step"><p>Test the package by running the command <code class="code">ant
+ webhelp -Doutput-dir=test-ouput</code> at the command
+ line in the webhelp directory. It should generate a copy
+ of this documentation in the <code class="filename">doc</code> directory. Type <code class="code">start
+ test-output\index.html</code> to open the output in a
+ browser. Once you have confirmed that the process worked,
+ you can delete the <code class="filename">test-output</code> directory. </p></li><li class="step"><p>To process your own document, simply refer to this package from another
<code class="filename">build.xml</code> in arbitrary location on your system:</p><ol type="a" class="substeps"><li class="step"><p>Create a new <code class="filename">build.xml</code> file that defines the name of your
source file, the desired output directory, and imports the
<code class="filename">build.xml</code> from this package. For example:
@@ -196,4 +245,5 @@ suppress.footer.navigation=0</pre></li><li class="step"><p>Test the package by r
&lt;property name="output-dir" value="<em class="replaceable"><code>path-to/desired-output-dir</code></em>"/&gt;
&lt;import file="<em class="replaceable"><code>path-to/docbook-webhelp/</code></em>build.xml"/&gt;
&lt;/project&gt;</pre></li><li class="step"><p>From the directory containing your newly created <code class="filename">build.xml</code>
- file, type <code class="code">ant webhelp</code> to build your document.</p></li></ol></li></ol></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
+ file, type <code class="code">ant webhelp</code> to build your document.</p></li></ol></li></ol></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch02s02.html b/webhelp/docs/ch02s02.html
new file mode 100644
index 0000000..cbf5bbf
--- /dev/null
+++ b/webhelp/docs/ch02s02.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Using and customizing the output - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s01.html" title="Generating webhelp output using the Ant build.xml file"></link><link rel="next" href="ch02s02s01.html" title="Recommended Apache configurations"></link><meta name="Section-title" content="Using and customizing the output"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s01.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s02s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp184368"></a>Using and customizing the output</h2></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="ch02s02s01.html">Recommended Apache configurations</a></span></dt></dl></div><p>To deep link to a topic inside the help set, simply link directly to the page. This help
+ system uses no frameset, so nothing further is necessary. </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>See <a class="ulink" href="http://www.sagehill.net/docbookxsl/Chunking.html" target="_top">Chunking into
+ multiple HTML files</a> in Bob Stayton's <a class="ulink" href="http://www.sagehill.net/docbookxsl/index.html" target="_top">DocBook XSL: The Complete
+ Guide</a> for information on controlling output file names and which files are
+ chunked in DocBook.</p></div><p>When you perform a search, the results can include brief summaries. These are populated
+ in one of two ways:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>By adding <code class="sgmltag-element">role="summary"</code> to a <code class="sgmltag-element">para</code> or
+ <code class="sgmltag-element">phrase</code> in the <code class="sgmltag-element">chapter</code> or
+ <code class="sgmltag-element">section</code>.</p></li><li class="listitem"><p>By adding an <code class="sgmltag-element">abstract</code> to the <code class="sgmltag-element">chapterinfo</code> or
+ <code class="sgmltag-element">sectioninfo</code> element.</p></li></ul></div><p>To customize the look and feel of the help, study the following css files:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="filename">docs/common/css/positioning.css</code>: This handles the Positioning
+ of DIVs in appropriate positions. For example, it causes the
+ <code class="code">leftnavigation</code> div to appear on the left, the header on top, and so on.
+ Use this if you need to change the relative positions or need to change the
+ width/height etc.</p></li><li class="listitem"><p><code class="filename">docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css</code>:
+ This is the theming part which adds colors and stuff. This is a default theme comes
+ with <a class="ulink" href="http://jqueryui.com/download" target="_top">jqueryui</a> unchanged. You can get
+ any theme based your interest from this. (Themes are on right navigation bar.) Then
+ replace the css theme folder (theme-redmond) with it, and change the xsl to point to
+ the new css.</p></li><li class="listitem"><p><code class="filename">docs/common/jquery/treeview/jquery.treeview.css</code>: This styles
+ the toc Tree. Generally, you don't have to edit this file.</p></li></ul></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch02s02s01.html b/webhelp/docs/ch02s02s01.html
new file mode 100644
index 0000000..311ad0a
--- /dev/null
+++ b/webhelp/docs/ch02s02s01.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Recommended Apache configurations - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02s02.html" title="Using and customizing the output"></link><link rel="prev" href="ch02s02.html" title="Using and customizing the output"></link><link rel="next" href="ch02s03.html" title="Search indexing"></link><meta name="Section-title" content="Recommended Apache configurations"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using and customizing the output</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s02.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02s02.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s03.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp200560"></a>Recommended Apache configurations</h3></div></div></div>
+<p>If you are serving a long document from an Apache web
+ server, we recommend you make the following additions or
+ changes to your <code class="filename">httpd.conf</code> or
+ <code class="filename">.htaccess</code> file. </p><pre class="programlisting">AddDefaultCharSet UTF-8 # <a id="AddDefaultCharSet"></a><span><img src="common/images/callouts/1.png" alt="1" border="0"></img></span>
+
+ # 480 weeks
+ &lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt; # <a id="CachingSettings"></a><span><img src="common/images/callouts/2.png" alt="2" border="0"></img></span>
+ Header set Cache-Control "max-age=290304000, public"
+ &lt;/FilesMatch&gt;
+
+ # 2 DAYS
+ &lt;FilesMatch "\.(xml|txt)$"&gt;
+ Header set Cache-Control "max-age=172800, public, must-revalidate"
+ &lt;/FilesMatch&gt;
+
+ # 2 HOURS
+ &lt;FilesMatch "\.(html|htm)$"&gt;
+ Header set Cache-Control "max-age=7200, must-revalidate"
+ &lt;/FilesMatch&gt;
+
+ # compress text, html, javascript, css, xml:
+ AddOutputFilterByType DEFLATE text/plain # <a id="CompressSetting"></a><span><img src="common/images/callouts/3.png" alt="3" border="0"></img></span>
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/xml
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/x-javascript
+
+ # Or, compress certain file types by extension:
+ &lt;Files *.html&gt;
+ SetOutputFilter DEFLATE
+ &lt;/Files&gt;
+ </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#AddDefaultCharSet"><span><img src="common/images/callouts/1.png" alt="1" border="0"></img></span></a> </p></td><td valign="top" align="left"><p>See <a class="ulink" href="http://www.sagehill.net/docbookxsl/SpecialChars.html" target="_top">Odd characters in HTML output</a> in Bob
+ Stayton's book <em class="citetitle">DocBook XSL: The Complete
+ Guide</em> for more information about this
+ setting.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#CachingSettings"><span><img src="common/images/callouts/2.png" alt="2" border="0"></img></span></a> </p></td><td valign="top" align="left"><p>These lines and those that follow cause the
+ browser to cache various resources such as bitmaps and
+ JavaScript files. Note that caching JavaScript files
+ could cause your users to have stale search indexes if
+ you update your document since the search index is
+ stored in JavaScript files.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#CompressSetting"><span><img src="common/images/callouts/3.png" alt="3" border="0"></img></span></a> </p></td><td valign="top" align="left"><p>These lines cause the the server to compress html,
+ css, and JavaScript files and the brower to uncompress
+ them to improve download performance.</p></td></tr></table></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02s02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch02s03.html b/webhelp/docs/ch02s03.html
new file mode 100644
index 0000000..3cfb5df
--- /dev/null
+++ b/webhelp/docs/ch02s03.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Search indexing - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s02s01.html" title="Recommended Apache configurations"></link><link rel="next" href="ch02s04.html" title="Adding support for other (non-CJKV) languages"></link><meta name="Section-title" content="Search indexing"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s02s01.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s04.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp213328"></a>Search indexing</h2></div></div></div>
+<p>Run <span class="command"><strong>ant index</strong></span> in the webhelp directory to index the content. Running
+ <span class="command"><strong>ant webhelp</strong></span> will do the indexing as part of the process as well.</p><p>Here's some detailed information about invoking the indexer. The indexing process is
+ pretty smooth, so probably you doesn't need to be concerned with following details. Webhelp
+ Ant script does all the needed bits.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Following should be in the CLASSPATH.</p><p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="filename">webhelpindexer.jar</code>,
+ <code class="filename">lucene-analyzers-3.0.0.jar</code>,
+ <code class="filename">lucene-core-3.0.0.jar</code> - These three are available in the
+ extensions/ directory of docsbook-xsl-1.76.1, and is automatically fetched to the
+ webhelp's Ant script. Go for a XSL snapshot if you can which contains the latest
+ version http://docbook.sourceforge.net/snapshot/</p></li><li class="listitem"><p><code class="filename">xercesImpl.jar</code>, <code class="filename"> xml-apis.jar</code> -
+ These two comes by default with Ant 1.8.0 or prior versions. These are available
+ under /usr/share/java directory of Linux distributions as well. Else, you may have
+ to download, and put them to <code class="filename">jre/lib/endorsed</code>.</p></li></ul></div><p>
+ </p></li><li class="listitem"><p>The main class is <code class="classname">com.nexwave.nquindexer.IndexerMain</code> for the
+ version 1.76.1+. It's <code class="classname">com.nexwave.nquindexer.IndexerTask</code> for the
+ versions 1.76.0 and 1.76.1.</p><p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Needs two parameters as command-line arguments:</p><p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>The folder where the files to be indexed reside</p></li></ul></div><p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>(Optional) language. defaults to "en". See build.properties for
+ details</p></li></ul></div><p>
+ </p></li></ul></div><p>
+ </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>We have changed the way we invoke the webhelp indexer from the Ant Task to
+ <code class="code">indexertask</code> to direct invocation. This seems to have remove the
+ <code class="envar">CLASSPATH</code> issue some people were having.</p></div><p>
+ </p></li></ul></div><a id="idp232704" class="indexterm"></a><a id="idp234192" class="indexterm"></a><p class="summary">To build the indexer, you must have installed the JDK version 1.5 or
+ higher and set the <code class="envar">ANT_HOME</code> environment variable. </p><a id="idp236896" class="indexterm"></a><a id="idp237968" class="indexterm"></a></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch02s04.html b/webhelp/docs/ch02s04.html
new file mode 100644
index 0000000..dc76f6a
--- /dev/null
+++ b/webhelp/docs/ch02s04.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Adding support for other (non-CJKV) languages - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s03.html" title="Search indexing"></link><link rel="next" href="ch02s05.html" title="Adding images"></link><meta name="Section-title" content="Adding support for other (non-CJKV) languages"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s03.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s05.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp239584"></a>Adding support for other (non-CJKV) languages</h2></div></div></div>
+<p>To support stemming for a language, the search mechanism requires a stemmer implemented
+ in both Java and JavaScript. The Java version is used by the indexer and the JavaScript
+ verison is used to stem the user's input on the search form. Currently the search mechanism
+ supports stemming for English and German. In addition, Java stemmers are included for the
+ following languages. Therefore, to support these languages, you only need to implement the
+ stemmer in JavaScript and add it to the template. If you do undertake this task, please
+ consider contributing the JavaScript version back to this project and to <a class="ulink" href="http://snowball.tartarus.org/texts/stemmersoverview.html" target="_top">Martin Porter's
+ project</a>.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Danish</p></li><li class="listitem"><p>Dutch</p></li><li class="listitem"><p>Finnish</p></li><li class="listitem"><p>Hungarian</p></li><li class="listitem"><p>Italian</p></li><li class="listitem"><p>Norwegian</p></li><li class="listitem"><p>Portuguese</p></li><li class="listitem"><p>Romanian</p></li><li class="listitem"><p>Russian</p></li><li class="listitem"><p>Spanish</p></li><li class="listitem"><p>Swedish</p></li><li class="listitem"><p>Turkish</p></li></ul></div><p><a id="idp251824" class="indexterm"></a></p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch02s05.html b/webhelp/docs/ch02s05.html
new file mode 100644
index 0000000..07cd0e2
--- /dev/null
+++ b/webhelp/docs/ch02s05.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Adding images - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s04.html" title="Adding support for other (non-CJKV) languages"></link><link rel="next" href="ch03.html" title="Developer Docs"></link><meta name="Section-title" content="Adding images"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s04.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp253024"></a>Adding images</h2></div></div></div>
+<p>This section shows how to add images to WebHelp. For that, follow the simple procedure given.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Put the images in a subdirectory of your source file directory. For example
+ <code class="filename">docsrc/images</code>.</p></li><li class="listitem"><p>Then refer to those images from your docbook document.</p><p>Following image is from <span class="bold"><strong>webhelp/docsrs/images/sample.jpg</strong></span>. The docbook code is shown
+ below.</p><p>
+ </p><div class="figure"><a id="idp258048"></a><p class="title"><strong>Figure 1. Sample Image</strong></p><div class="figure-contents"><div class="mediaobject"><img src="images/sample.jpg" alt="Sample Image"></img></div></div></div><p><br class="figure-break"></br>
+ </p><div class="example"><a id="idp260752"></a><p class="title"><strong>Example 1. Example code for adding images. Note down the relative path used</strong></p><div class="example-contents"><pre class="programlisting">&lt;figure&gt;
+ &lt;title&gt;Sample&lt;/title&gt;
+ &lt;mediaobject&gt;
+ &lt;imageobject&gt;
+ &lt;imagedata fileref="<span class="bold"><strong>images/sample.jpg</strong></span>" format="JPG"/&gt;
+ &lt;/imageobject&gt;
+ &lt;/mediaobject&gt;
+&lt;/figure&gt;</pre></div></div><br class="example-break"></br></li><li class="listitem"><p> The <code class="filename">build.properties</code> file controls what directories are copied
+ over from the source tree to the output
+ tree:</p><pre class="programlisting"># If your document has image directories that need to be copied
+# to the output directory, you can list patterns here.
+# See the Ant documentation for fileset for documentation
+# on patterns.
+input-images-dirs=images/**,figures/**,graphics/**</pre></li></ul></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch03.html b/webhelp/docs/ch03.html
new file mode 100644
index 0000000..f4a33e4
--- /dev/null
+++ b/webhelp/docs/ch03.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Developer Docs - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch02s05.html" title="Adding images"></link><link rel="next" href="ch03s01.html" title="Design"></link><meta name="Section-title" content="Developer Docs"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Developer Docs</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s05.html">Prev</a> 
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp266096"></a>Developer Docs</h1></div></div></div>
+<div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ch03s01.html">Design</a></span></dt><dt><span class="section"><a href="ch03s02.html">Search</a></span></dt><dd><dl><dt><span class="section"><a href="ch03s02s01.html">New Stemmers</a></span></dt></dl></dd></dl></div><p class="summary">This chapter provides an overview of how webhelp is implemented.</p><p>The table of contents and search panes are implemented as divs and rendered as if they
+ were the left pane in a frameset. As a result, the page must save the state of the table of
+ contents and the search in cookies when you navigate away from a page. When you load a new
+ page, the page reads these cookies and restores the state of the table of contents tree and
+ search. The result is that the help system behaves exactly as if it were a frameset.</p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch03s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch03s01.html b/webhelp/docs/ch03s01.html
new file mode 100644
index 0000000..5ee1ecc
--- /dev/null
+++ b/webhelp/docs/ch03s01.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Design - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03.html" title="Developer Docs"></link><link rel="prev" href="ch03.html" title="Developer Docs"></link><link rel="next" href="ch03s02.html" title="Search"></link><meta name="Section-title" content="Design"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Developer Docs</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch03.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03s02.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp268368"></a>Design</h2></div></div></div>
+<p class="summary">An overview of webhelp page structure.</p><p>DocBook WebHelp page structure is fully built on css-based design abandoning frameset
+ structure. Overall page structure can be divided in to three main sections </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Header: Header is a separate Div which include company logo, navigation
+ button(prev, next etc.), page title and heading of parent topic.</p></li><li class="listitem"><p>Content: This includes the content of the documentation. The processing of this
+ part is done by <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl" target="_top"> DocBook
+ XSL Chunking customization</a>. Few further css-styling applied from
+ <code class="filename">positioning.css</code>. </p></li><li class="listitem"><p>Left Navigation: This includes the table of contents and search tab. This is
+ customized using <a class="ulink" href="http://jqueryui.com/" target="_top">jquery-ui</a> styling.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Tabbed Navigation: The navigation pane is organized in to two tabs. Contents
+ tab, and Search tab. Tabbed output is achieved using <a class="ulink" href="http://docs.jquery.com/UI/Tabs" target="_top">JQuery Tabs plugin</a>. </p></li><li class="listitem"><p>Table of Contents (TOC) tree: When building the chunked html from the docbook
+ file, Table of Contents is generated as an Unordered List (a list made from
+ <code class="code">&lt;ul&gt; &lt;li&gt;</code> tags). When page loads in the browser, we apply
+ styling to it to achieve the nice look that you see. Styling for TOC tree is done
+ by a JQuery UI plugin called <a class="ulink" href="http://bassistance.de/jquery-plugins/jquery-plugin-treeview/" target="_top">
+ TreeView</a>. We can generate the tree easily by following javascript code:
+ </p><pre class="programlisting">
+//Generate the tree
+$("#tree").treeview({
+collapsed: true,
+animated: "medium",
+control: "#sidetreecontrol",
+persist: "cookie"
+});
+</pre><p>
+ </p></li><li class="listitem"><p>Search Tab: This includes the search feature.</p></li></ul></div></li></ul></div><p>
+ <a id="idp281632" class="indexterm"></a></p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch03s02.html b/webhelp/docs/ch03s02.html
new file mode 100644
index 0000000..8fd6f85
--- /dev/null
+++ b/webhelp/docs/ch03s02.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Search - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03.html" title="Developer Docs"></link><link rel="prev" href="ch03s01.html" title="Design"></link><link rel="next" href="ch03s02s01.html" title="New Stemmers"></link><meta name="Section-title" content="Search"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Developer Docs</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03s01.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch03.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03s02s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp282832"></a>Search</h2></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="ch03s02s01.html">New Stemmers</a></span></dt></dl></div><p class="summary">Overview design of Search mechanism.</p><p>The serching is a fully client-side implementation of querying texts for content
+ searching. There's no server involved. So, the search queries by the users are processed by
+ JavaScript inside the browser, and displays the matching results by comparing the query with
+ a simplified 'index' that too resides in JavaScript. Mainly the search mechanism has two
+ parts. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Indexing: First we need to traverse the content in
+ the docs folder and index the words in it. This is done
+ by <code class="filename">webhelpindexer.jar</code> in
+ <code class="filename">xsl/extentions/</code> folder. You can
+ invoke it by <code class="code">ant index</code> command from the
+ root of webhelp of directory. The source of
+ webhelpindexer is now moved to it's own location at
+ <code class="filename">trunk/xsl-webhelpindexer/</code>.
+ Checkout the Docbook trunk svn directory to get this
+ source. Then, do your changes and recompile it by simply
+ running <code class="code">ant</code> command. My assumption is that
+ it can be opened by Netbeans IDE by one click. Or if you
+ are using IntelliJ Idea, you can simply create a new
+ project from existing sources. Indexer has extensive
+ support for features such as word scoring, stemming of
+ words, and support for languages English, German,
+ French. For CJK (Chinese, Japanese, Korean) languages,
+ it uses bi-gram tokenizing to break up the words (since
+ CJK languages does not have spaces between
+ words).</p><p> When <code class="code">ant index</code> is run, it generates five output files: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="filename">htmlFileList.js</code> - This contains an array named
+ <code class="code">fl</code> which stores details all the files indexed by the indexer.
+ Further, the doStem in it defines whether stemming should be used. It defaults
+ to false.</p></li><li class="listitem"><p><code class="filename">htmlFileInfoList.js</code> -
+ This includes some meta data about the indexed
+ files in an array named <code class="code">fil</code>. It
+ includes details about file name, file (html)
+ title, a summary of the content. Format would look
+ like, <code class="code">fil["4"]= "ch03.html@@@Developer
+ Docs@@@This chapter provides an overview of how
+ webhelp is implemented.";</code>
+ </p></li><li class="listitem"><p><code class="filename">index-*.js</code> (Three index files) - These three files
+ actually stores the index of the content. Index is added to an array named
+ <code class="code">w</code>.</p></li></ul></div></li><li class="listitem"><p> Querying: Query processing happens totally in client side. Following JavaScript
+ files handles them. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="filename">nwSearchFnt.js</code> - This handles the user query and
+ returns the search results. It does query word tokenizing, drop unnecessary
+ punctuations and common words, do stemming if docbook language supports it,
+ etc.</p></li><li class="listitem"><p><code class="filename">{$indexer-language-code}_stemmer.js</code> - This includes the
+ stemming library. <code class="filename">nwSearchFnt.js</code> file calls
+ <code class="code">stemmer</code> method in this file for stemming. ex: <code class="code">var stem =
+ stemmer(foobar);</code>
+ </p></li></ul></div><p>
+ </p></li></ul></div><p>
+ <a id="idp304304" class="indexterm"></a></p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch03s02s01.html b/webhelp/docs/ch03s02s01.html
index 4e9cf80..e9d07ed 100644
--- a/webhelp/docs/content/ch03s02s01.html
+++ b/webhelp/docs/ch03s02s01.html
@@ -1,10 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>New Stemmers</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03s02.html" title="Search"></link><link rel="prev" href="ch03s02.html" title="Search"></link><link rel="next" href="ch04.html" title="FAQ"></link><script type="text/javascript">
+<title>New Stemmers - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03s02.html" title="Search"></link><link rel="prev" href="ch03s02.html" title="Search"></link><link rel="next" href="ch04.html" title="FAQ"></link><meta name="Section-title" content="New Stemmers"></meta><script type="text/javascript">
//The id for tree cookie
- var treeCookieId = "treeview-1055";
+ var treeCookieId = "treeview-1102";
var language = "en";
var w = new Object();
//Localization
@@ -13,10 +13,22 @@
txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
txt_please_wait = "Please wait. Search in progress...";
txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
}
+
input {
margin-bottom: 5px;
margin-top: 2px;
@@ -25,15 +37,15 @@ input {
display: block;
height: 22px;
padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
}
span.contentsTab {
padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
}
span.searchTab {
padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
}
/* Overide jquery treeview's defaults for ul. */
@@ -85,12 +97,37 @@ border: none; background: none; font-weight: none; color: none; }
.ui-tabs { padding: .2em;}
.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Search</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Search</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
</a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03s02.html">Prev</a>
|
<a accesskey="u" class="navLinkUp" tabindex="5" href="ch03s02.html">Up</a>
|
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch04.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id377401"></a>New Stemmers</h3></div></div></div>
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch04.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp305376"></a>New Stemmers</h3></div></div></div>
<p class="summary">Adding new Stemmers is very simple.</p><p>Currently, only English, French, and German stemmers are integrated in to WebHelp. But
the code is extensible such that you can add new stemmers easily by few steps.</p><p>What you need: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>You'll need two versions of the stemmer; One written in JavaScript, and another
in Java. But fortunately, Snowball contains Java stemmers for number of popular
@@ -101,15 +138,21 @@ border: none; background: none; font-weight: none; color: none; }
other languages</a> location. If javascript stemmer for your language is
available, then download it. Else, you can write a new stemmer in JavaScript using
SnowBall algorithm fairly easily. Algorithms are at <a class="ulink" href="http://snowball.tartarus.org/" target="_top">Snowball</a>. </p></li><li class="listitem"><p>Then, name the JS stemmer exactly like this:
- <code class="filename">{$language-code}_stemmer.js</code>. For example, for Italian(it),
- name it as, <code class="filename">it_stemmer.js</code>. Then, copy it to the
- <code class="filename">docbook-webhelp/template/content/search/stemmers/</code> folder. (I
- assumed <code class="filename">docbook-webhelp</code> is the root folder for webhelp.) </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Make sure you changed the <code class="code">webhelp.indexer.language</code> property in
- <code class="filename">build.properties</code> to your language. </p></div><p>
+ <code class="filename">{$language-code}_stemmer.js</code>.
+ For example, for Italian(it), name it as,
+ <code class="filename">it_stemmer.js</code>. Then, copy it to
+ the
+ <code class="filename">docbook-webhelp/template/search/stemmers/</code>
+ folder. (I assumed
+ <code class="filename">docbook-webhelp</code> is the root
+ folder for webhelp.) </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Make sure you changed the
+ <code class="code">webhelp.indexer.language</code> property
+ in <code class="filename">build.properties</code> to your
+ language. </p></div><p>
</p></li><li class="listitem"><p>Now two easy changes needed for the indexer.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Open
<code class="filename">docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java</code>
in a text editor and add your language code to the
- <code class="code">supportedLanguages</code> String Array. </p><div class="example"><a id="id377526"></a><p class="title"><strong>Example 2. Add new language to supportedLanguages array</strong></p><div class="example-contents"><p> change the Array from,
+ <code class="code">supportedLanguages</code> String Array. </p><div class="example"><a id="idp320496"></a><p class="title"><strong>Example 2. Add new language to supportedLanguages array</strong></p><div class="example-contents"><p> change the Array from,
</p><pre class="programlisting">
private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"};
//currently extended support available for
@@ -125,7 +168,7 @@ private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", <span
for <code class="code">SnowballStemmer stemmer;</code>). Then add code to initialize the
stemmer Object in your language. It's self understandable. See the example. The
class names are at:
- <code class="filename">docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/</code>. </p><div class="example"><a id="id377581"></a><p class="title"><strong>Example 3. Initialize correct stemmer based on the
+ <code class="filename">docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/</code>. </p><div class="example"><a id="idp327120"></a><p class="title"><strong>Example 3. Initialize correct stemmer based on the
<code class="code">webhelp.indexer.language</code> specified</strong></p><div class="example-contents"><pre class="programlisting">
SnowballStemmer stemmer;
if(indexerLanguage.equalsIgnoreCase("en")){
@@ -145,4 +188,5 @@ private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", <span
</p><p>That's all. Now run <code class="code">ant build-indexer</code> to compile and build the java code.
Then, run <code class="code">ant webhelp</code> to generate the output from your docbook file. For any
questions, contact us or email to the docbook mailing list
- <code class="email">&lt;<a class="email" href="mailto:docbook-apps@lists.oasis-open.org">docbook-apps@lists.oasis-open.org</a>&gt;</code>.</p><a id="id377631" class="indexterm"></a></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03s02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
+ <code class="email">&lt;<a class="email" href="mailto:docbook-apps@lists.oasis-open.org">docbook-apps@lists.oasis-open.org</a>&gt;</code>.</p><a id="idp333072" class="indexterm"></a></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03s02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch04.html b/webhelp/docs/ch04.html
new file mode 100644
index 0000000..3f139a1
--- /dev/null
+++ b/webhelp/docs/ch04.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>FAQ - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><meta name="description" content="Frequently Asked Questions"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch03s02s01.html" title="New Stemmers"></link><link rel="next" href="ch05.html" title="Test section"></link><meta name="Section-title" content="FAQ"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>FAQ</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03s02s01.html">Prev</a> 
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch05.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp334528"></a>FAQ</h1></div></div></div>
+<div class="qandaset"><a id="idp336416"></a><dl><dt>1. <a href="ch04.html#idp336672">On what browsers and operating systems WebHelp has tested extensively?</a></dt><dt>2. <a href="ch04.html#idp339168">Apart from this demo, where can I find other demos or production deployments of
+ WebHelp?</a></dt><dt>3. <a href="ch04.html#idp342000">When building the webhelp output, I'm getting the following error. What's the reason
+ for this?</a></dt><dt>4. <a href="ch04.html#idp346336">Does WebHelp Indexer can index HTML transformation as well?</a></dt><dt>5. <a href="ch04.html#idp348432">I need more information about webhelp-indexer. Where can I find it?</a></dt></dl><table border="0" style="width: 100%;"><colgroup><col align="left" width="1%"></col><col></col></colgroup><tbody><tr class="question"><td align="left" valign="top"><a id="idp336672"></a><a id="idp336928"></a><p><strong>1.</strong></p></td><td align="left" valign="top"><p>On what browsers and operating systems WebHelp has tested extensively?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>We tested it with versions of most browsers including Firefox 3.x+, IE 7+, Chrome,
+ Safari, and iPod/iPhone. The JavaScript codes are mostly jquery plugins, so you’d want
+ to check the jquery support matrix for details.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="idp339168"></a><a id="idp339424"></a><p><strong>2.</strong></p></td><td align="left" valign="top"><p>Apart from this demo, where can I find other demos or production deployments of
+ WebHelp?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>There are four production deployments provided in <a class="ulink" href="http://wiki.docbook.org/WebHelp" target="_top">WebHelp wiki</a> currently.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="idp342000"></a><a id="idp342256"></a><p><strong>3.</strong></p></td><td align="left" valign="top"><p>When building the webhelp output, I'm getting the following error. What's the reason
+ for this?</p><pre class="programlisting">[xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl:
+ line 596: Attribute 'href' outside of element.
+[xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl:
+ line 596: Attribute 'href' outside of element.</pre><p>----</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>This happens if you haven't done the step 3 and 4 of webhelp build guide "Generating
+ webhelp output" in the documentation. Basically, you need to correctly set the following
+ folder
+ paths.</p><pre class="programlisting">xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
+xercesImpl.jar=/usr/share/java/xercesImpl.jar
+xml-apis.jar=/usr/share/java/xml-apis.jar</pre></td></tr><tr class="question"><td align="left" valign="top"><a id="idp346336"></a><a id="idp346592"></a><p><strong>4.</strong></p></td><td align="left" valign="top"><p>Does WebHelp Indexer can index HTML transformation as well?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>Yes, WebHelp supports HTML transformations as well in addition to XHTML.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="idp348432"></a><a id="idp348688"></a><p><strong>5.</strong></p></td><td align="left" valign="top"><p>I need more information about webhelp-indexer. Where can I find it?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>The DocBook Webhelp Indexer is based on the HTMLSearch plugin for DITA. See <a class="ulink" href="http://www.helpml.com:8088/help/index.jsp?topic=/org.sample.help.doc/htmlsearch/DHSC_BestPractices_htmlsearch.html" target="_top">HTMLSearch documentation </a> for more information.</p></td></tr></tbody></table></div><a id="idp351488" class="indexterm"></a></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02s01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch05.html b/webhelp/docs/ch05.html
new file mode 100644
index 0000000..8e90798
--- /dev/null
+++ b/webhelp/docs/ch05.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Test section - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch04.html" title="FAQ"></link><link rel="next" href="ch05s01.html" title="Some search words for testing"></link><meta name="Section-title" content="Test section"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Test section</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch04.html">Prev</a> 
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch05s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp352656"></a>Test section</h1></div></div></div>
+<div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ch05s01.html">Some search words for testing</a></span></dt><dt><span class="section"><a href="ch05s02.html">Some search words for testing (inflected)</a></span></dt></dl></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch05s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch05s01.html b/webhelp/docs/ch05s01.html
new file mode 100644
index 0000000..9cff33c
--- /dev/null
+++ b/webhelp/docs/ch05s01.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Some search words for testing - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch05.html" title="Test section"></link><link rel="prev" href="ch05.html" title="Test section"></link><link rel="next" href="ch05s02.html" title="Some search words for testing (inflected)"></link><meta name="Section-title" content="Some search words for testing"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Test section</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch05.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch05.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch05s02.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp353328"></a>Some search words for testing</h2></div></div></div>
+<p>arsenal, arsenic, buy, say, by, vary, try, sky, nucleus, day, key, currency, currencies, build.xml</p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch05s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ch05s02.html b/webhelp/docs/ch05s02.html
new file mode 100644
index 0000000..72834e8
--- /dev/null
+++ b/webhelp/docs/ch05s02.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Some search words for testing (inflected) - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch05.html" title="Test section"></link><link rel="prev" href="ch05s01.html" title="Some search words for testing"></link><link rel="next" href="ix01.html" title="Index"></link><meta name="Section-title" content="Some search words for testing (inflected)"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Test section</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch05s01.html">Prev</a>
+ |
+ <a accesskey="u" class="navLinkUp" tabindex="5" href="ch05.html">Up</a>
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ix01.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="idp354640"></a>Some search words for testing (inflected)</h2></div></div></div>
+<p>arsenal, arsenic, buys, says, varies, tries, skies, nuclei, days, keys, currencies, build.xml</p></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ix01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/common/css/ie.css b/webhelp/docs/common/css/ie.css
index 4c5f1c2..875ef62 100644
--- a/webhelp/docs/common/css/ie.css
+++ b/webhelp/docs/common/css/ie.css
@@ -9,5 +9,5 @@
}
body #content{
- padding-top: 136px;
+ /* padding-top: 136px;*/
}
diff --git a/webhelp/docs/common/css/positioning.css b/webhelp/docs/common/css/positioning.css
index d843f64..ce39ee0 100644
--- a/webhelp/docs/common/css/positioning.css
+++ b/webhelp/docs/common/css/positioning.css
@@ -16,7 +16,7 @@ span.off { }
body { font: 12px Verdana, Geneva, sans-serif; }
p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; }
h1 { font: 15pt Arial, Helvetica, geneva;
- color: black!important!;
+ color: black!important;
}
h2 { font: normal 12pt Arial, Helvetica, geneva; }
@@ -36,16 +36,16 @@ h2 { font: normal 12pt Arial, Helvetica, geneva; }
#header h1 {
margin-left: 310px;
position: fixed;
- top: 10px;
+ top: 20px;
left: -15px;
color: #404040 !important;
}
-/*
+
#header h1 {
margin-top: 2px;
}
-*/
+
p.breadcrumbs {
margin-top: 30px;
@@ -66,30 +66,32 @@ p.breadcrumbs {
overflow: auto;
position: fixed;
height: auto;
- top: 95px;
+ top:100px;
+ /*right:10px;*/
+ /*left:10px;*/
bottom: 0;
left: 0;
- width: 280px;
+ width:inherit;
z-index: 1500;
border-right:2px solid #bbc4c5;
- padding: 0px;
+ padding:1px;
background-color: #ededed!important;
}
#treeDiv {
overflow: auto;
- position: fixed;
+ /* position: fixed;*/
height: auto;
top: 136px;
bottom: 0;
left: 0;
- width: 243px;
+ /* width: 18%;*/
z-index: 1500;
- border-right:2px solid #CCCCCC;
- background-color: #f0f0f0!important;
+ /* border-right:2px solid #CCCCCC;
+ background-color: #f0f0f0!important;*/
}
-#searchDiv {
+/*#searchDiv {
overflow: auto;
position: fixed;
height: auto;
@@ -100,21 +102,22 @@ p.breadcrumbs {
z-index: 1500;
border-right:2px solid #CCCCCC;
background-color: #f0f0f0!important;
-}
+}*/
#content {
position: relative;
- top: 90px; /* left: 240px;*/
- right: auto; /* bottom: 20px; */
- margin: 0px 0px 0px 280px;
+ top: 90px; /*left: 240px;*/
+ right: auto; bottom: 20px;
+ /*margin: 0px 0px 0px 280px;*/
width: auto;
height: inherit;
padding-left: 5px;
padding-right: 30px;
- color: #000000;
- /*border-left: 2px solid #cccccc; overflow :scroll;*/
+ border-left: 1px solid #cccccc;
+ overflow :scroll;
+ overflow-x:hidden;
z-index: 1000;
- min-width:200px;
+
}
#navheader {
@@ -159,16 +162,18 @@ font-weight: normal;
}
.searchresult li { color: #0050A0; }
.shortdesclink { color: gray; font-size: 9pt; }
-.searchText { width: 11em }
+.searchText { float:left;width:150px; }
.searchButton {
- margin-left: 3px;
- background: #F4F4F4;
- color: #black;
- border: #ACCEAF solid 1pt;
+ padding: 2px 12px 2px 12px;
+ background-color:#bbb;
+ border:#bbb solid 1pt;
font-weight: bold;
font-size: 10pt
}
-.searchFieldSet { border: 1px solid #BFBAB0; background-color: #F2EFE9;}
+.searchButton:hover{
+ background-color: #cccccc;
+}
+.searchFieldSet {}
.title, div.toc>p{ font-weight: bold; }
@@ -310,11 +315,11 @@ body p.breadcrumbs {
line-height: 28px;
}
-body #content {
+/*body #content {
position: static;
margin-top: 126px;
top: 0px;
-}
+}*/
body.sidebar #toolbar{left: 0px;}
@@ -348,6 +353,8 @@ div.note *, div.caution *, div.important *, div.tip *, div.warning * {
border: 0px solid;
}
+#sidebar { display: none }
+
@media print {
body * {
@@ -367,3 +374,4 @@ div.note *, div.caution *, div.important *, div.tip *, div.warning * {
}
}
+
diff --git a/webhelp/docs/common/images/callouts/1.png b/webhelp/docs/common/images/callouts/1.png
index de682c6..de682c6 100644..100755
--- a/webhelp/docs/common/images/callouts/1.png
+++ b/webhelp/docs/common/images/callouts/1.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/10.png b/webhelp/docs/common/images/callouts/10.png
index 96c6ce4..96c6ce4 100644..100755
--- a/webhelp/docs/common/images/callouts/10.png
+++ b/webhelp/docs/common/images/callouts/10.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/11.png b/webhelp/docs/common/images/callouts/11.png
index 4550cb0..4550cb0 100644..100755
--- a/webhelp/docs/common/images/callouts/11.png
+++ b/webhelp/docs/common/images/callouts/11.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/12.png b/webhelp/docs/common/images/callouts/12.png
index ef0f635..ef0f635 100644..100755
--- a/webhelp/docs/common/images/callouts/12.png
+++ b/webhelp/docs/common/images/callouts/12.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/13.png b/webhelp/docs/common/images/callouts/13.png
index b4878f1..b4878f1 100644..100755
--- a/webhelp/docs/common/images/callouts/13.png
+++ b/webhelp/docs/common/images/callouts/13.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/14.png b/webhelp/docs/common/images/callouts/14.png
index a222d7b..a222d7b 100644..100755
--- a/webhelp/docs/common/images/callouts/14.png
+++ b/webhelp/docs/common/images/callouts/14.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/15.png b/webhelp/docs/common/images/callouts/15.png
index f6a76d5..f6a76d5 100644..100755
--- a/webhelp/docs/common/images/callouts/15.png
+++ b/webhelp/docs/common/images/callouts/15.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/16.png b/webhelp/docs/common/images/callouts/16.png
index c5ef635..c5ef635 100644..100755
--- a/webhelp/docs/common/images/callouts/16.png
+++ b/webhelp/docs/common/images/callouts/16.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/17.png b/webhelp/docs/common/images/callouts/17.png
index 85a2101..85a2101 100644..100755
--- a/webhelp/docs/common/images/callouts/17.png
+++ b/webhelp/docs/common/images/callouts/17.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/18.png b/webhelp/docs/common/images/callouts/18.png
index 7744d25..7744d25 100644..100755
--- a/webhelp/docs/common/images/callouts/18.png
+++ b/webhelp/docs/common/images/callouts/18.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/19.png b/webhelp/docs/common/images/callouts/19.png
index 44bacf8..44bacf8 100644..100755
--- a/webhelp/docs/common/images/callouts/19.png
+++ b/webhelp/docs/common/images/callouts/19.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/2.png b/webhelp/docs/common/images/callouts/2.png
index 24ec0f6..24ec0f6 100644..100755
--- a/webhelp/docs/common/images/callouts/2.png
+++ b/webhelp/docs/common/images/callouts/2.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/20.png b/webhelp/docs/common/images/callouts/20.png
index 5e100fe..5e100fe 100644..100755
--- a/webhelp/docs/common/images/callouts/20.png
+++ b/webhelp/docs/common/images/callouts/20.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/21.png b/webhelp/docs/common/images/callouts/21.png
index c87e80a..c87e80a 100644..100755
--- a/webhelp/docs/common/images/callouts/21.png
+++ b/webhelp/docs/common/images/callouts/21.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/22.png b/webhelp/docs/common/images/callouts/22.png
index 20593a4..20593a4 100644..100755
--- a/webhelp/docs/common/images/callouts/22.png
+++ b/webhelp/docs/common/images/callouts/22.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/23.png b/webhelp/docs/common/images/callouts/23.png
index 3909b9c..3909b9c 100644..100755
--- a/webhelp/docs/common/images/callouts/23.png
+++ b/webhelp/docs/common/images/callouts/23.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/24.png b/webhelp/docs/common/images/callouts/24.png
index 963a9e7..963a9e7 100644..100755
--- a/webhelp/docs/common/images/callouts/24.png
+++ b/webhelp/docs/common/images/callouts/24.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/25.png b/webhelp/docs/common/images/callouts/25.png
index 458a919..458a919 100644..100755
--- a/webhelp/docs/common/images/callouts/25.png
+++ b/webhelp/docs/common/images/callouts/25.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/26.png b/webhelp/docs/common/images/callouts/26.png
index 74b2507..74b2507 100644..100755
--- a/webhelp/docs/common/images/callouts/26.png
+++ b/webhelp/docs/common/images/callouts/26.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/27.png b/webhelp/docs/common/images/callouts/27.png
index 611b8ce..611b8ce 100644..100755
--- a/webhelp/docs/common/images/callouts/27.png
+++ b/webhelp/docs/common/images/callouts/27.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/28.png b/webhelp/docs/common/images/callouts/28.png
index 6aa21af..6aa21af 100644..100755
--- a/webhelp/docs/common/images/callouts/28.png
+++ b/webhelp/docs/common/images/callouts/28.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/29.png b/webhelp/docs/common/images/callouts/29.png
index 6009b52..6009b52 100644..100755
--- a/webhelp/docs/common/images/callouts/29.png
+++ b/webhelp/docs/common/images/callouts/29.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/3.png b/webhelp/docs/common/images/callouts/3.png
index 01cdff1..01cdff1 100644..100755
--- a/webhelp/docs/common/images/callouts/3.png
+++ b/webhelp/docs/common/images/callouts/3.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/30.png b/webhelp/docs/common/images/callouts/30.png
index c4dc404..c4dc404 100644..100755
--- a/webhelp/docs/common/images/callouts/30.png
+++ b/webhelp/docs/common/images/callouts/30.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/4.png b/webhelp/docs/common/images/callouts/4.png
index 1e42fb3..1e42fb3 100644..100755
--- a/webhelp/docs/common/images/callouts/4.png
+++ b/webhelp/docs/common/images/callouts/4.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/5.png b/webhelp/docs/common/images/callouts/5.png
index 635e7f8..635e7f8 100644..100755
--- a/webhelp/docs/common/images/callouts/5.png
+++ b/webhelp/docs/common/images/callouts/5.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/6.png b/webhelp/docs/common/images/callouts/6.png
index 521aedd..521aedd 100644..100755
--- a/webhelp/docs/common/images/callouts/6.png
+++ b/webhelp/docs/common/images/callouts/6.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/7.png b/webhelp/docs/common/images/callouts/7.png
index 0d4b876..0d4b876 100644..100755
--- a/webhelp/docs/common/images/callouts/7.png
+++ b/webhelp/docs/common/images/callouts/7.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/8.png b/webhelp/docs/common/images/callouts/8.png
index 50fa94d..50fa94d 100644..100755
--- a/webhelp/docs/common/images/callouts/8.png
+++ b/webhelp/docs/common/images/callouts/8.png
Binary files differ
diff --git a/webhelp/docs/common/images/callouts/9.png b/webhelp/docs/common/images/callouts/9.png
index 7190d5a..7190d5a 100644..100755
--- a/webhelp/docs/common/images/callouts/9.png
+++ b/webhelp/docs/common/images/callouts/9.png
Binary files differ
diff --git a/webhelp/docs/common/images/header-bg.png b/webhelp/docs/common/images/header-bg.png
index 75202f9..75202f9 100644..100755
--- a/webhelp/docs/common/images/header-bg.png
+++ b/webhelp/docs/common/images/header-bg.png
Binary files differ
diff --git a/webhelp/docs/common/jquery/jquery-1.4.2.min.js b/webhelp/docs/common/jquery/jquery-1.4.2.min.js
deleted file mode 100644
index 7c24308..0000000
--- a/webhelp/docs/common/jquery/jquery-1.4.2.min.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/webhelp/docs/common/jquery/jquery-1.7.2.min.js b/webhelp/docs/common/jquery/jquery-1.7.2.min.js
new file mode 100644
index 0000000..93adea1
--- /dev/null
+++ b/webhelp/docs/common/jquery/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/webhelp/docs/common/jquery/jquery.ui.all.js b/webhelp/docs/common/jquery/jquery.ui.all.js
new file mode 100644
index 0000000..8d3ce59
--- /dev/null
+++ b/webhelp/docs/common/jquery/jquery.ui.all.js
@@ -0,0 +1,418 @@
+/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(b,a){function c(c,a){var e=c.nodeName.toLowerCase();if("area"===e){var e=c.parentNode,f=e.name;if(!c.href||!f||"map"!==e.nodeName.toLowerCase())return!1;e=b("img[usemap=#"+f+"]")[0];return!!e&&d(e)}return(/input|select|textarea|button|object/.test(e)?!c.disabled:"a"==e?c.href||a:a)&&d(c)}function d(c){return!b(c).parents().andSelf().filter(function(){return"hidden"===b.curCSS(this,"visibility")||b.expr.filters.hidden(this)}).length}b.ui=b.ui||{};b.ui.version||(b.extend(b.ui,{version:"1.8.14",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),b.fn.extend({_focus:b.fn.focus,focus:function(c,a){return"number"===typeof c?this.each(function(){var d=this;setTimeout(function(){b(d).focus();
+a&&a.call(d)},c)}):this._focus.apply(this,arguments)},scrollParent:function(){var c;c=b.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(b.curCSS(this,"position",1))&&/(auto|scroll)/.test(b.curCSS(this,"overflow",1)+b.curCSS(this,"overflow-y",1)+b.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(b.curCSS(this,"overflow",1)+b.curCSS(this,
+"overflow-y",1)+b.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!c.length?b(document):c},zIndex:function(c){if(c!==a)return this.css("zIndex",c);if(this.length)for(var c=b(this[0]),d;c.length&&c[0]!==document;){d=c.css("position");if("absolute"===d||"relative"===d||"fixed"===d)if(d=parseInt(c.css("zIndex"),10),!isNaN(d)&&0!==d)return d;c=c.parent()}return 0},disableSelection:function(){return this.bind((b.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
+function(b){b.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),b.each(["Width","Height"],function(c,d){function e(c,a,d,g){b.each(f,function(){a-=parseFloat(b.curCSS(c,"padding"+this,!0))||0;d&&(a-=parseFloat(b.curCSS(c,"border"+this+"Width",!0))||0);g&&(a-=parseFloat(b.curCSS(c,"margin"+this,!0))||0)});return a}var f="Width"===d?["Left","Right"]:["Top","Bottom"],i=d.toLowerCase(),j={innerWidth:b.fn.innerWidth,innerHeight:b.fn.innerHeight,outerWidth:b.fn.outerWidth,
+outerHeight:b.fn.outerHeight};b.fn["inner"+d]=function(f){return f===a?j["inner"+d].call(this):this.each(function(){b(this).css(i,e(this,f)+"px")})};b.fn["outer"+d]=function(f,c){return"number"!==typeof f?j["outer"+d].call(this,f):this.each(function(){b(this).css(i,e(this,f,!0,c)+"px")})}}),b.extend(b.expr[":"],{data:function(c,a,d){return!!b.data(c,d[3])},focusable:function(a){return c(a,!isNaN(b.attr(a,"tabindex")))},tabbable:function(a){var d=b.attr(a,"tabindex"),e=isNaN(d);return(e||0<=d)&&c(a,
+!e)}}),b(function(){var c=document.body,a=c.appendChild(a=document.createElement("div"));b.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});b.support.minHeight=100===a.offsetHeight;b.support.selectstart="onselectstart"in a;c.removeChild(a).style.display="none"}),b.extend(b.ui,{plugin:{add:function(c,a,d){var c=b.ui[c].prototype,f;for(f in d)c.plugins[f]=c.plugins[f]||[],c.plugins[f].push([a,d[f]])},call:function(b,c,a){if((c=b.plugins[c])&&b.element[0].parentNode)for(var f=
+0;f<c.length;f++)b.options[c[f][0]]&&c[f][1].apply(b.element,a)}},contains:function(b,c){return document.compareDocumentPosition?b.compareDocumentPosition(c)&16:b!==c&&b.contains(c)},hasScroll:function(c,a){if("hidden"===b(c).css("overflow"))return!1;var d=a&&"left"===a?"scrollLeft":"scrollTop",f=!1;if(0<c[d])return!0;c[d]=1;f=0<c[d];c[d]=0;return f},isOverAxis:function(b,c,a){return b>c&&b<c+a},isOver:function(c,a,d,f,i,j){return b.ui.isOverAxis(c,d,i)&&b.ui.isOverAxis(a,f,j)}}))})(jQuery);
+(function(b,a){if(b.cleanData){var c=b.cleanData;b.cleanData=function(a){for(var d=0,e;null!=(e=a[d]);d++)b(e).triggerHandler("remove");c(a)}}else{var d=b.fn.remove;b.fn.remove=function(c,a){return this.each(function(){a||(!c||b.filter(c,[this]).length)&&b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return d.call(b(this),c,a)})}}b.widget=function(c,a,d){var f=c.split(".")[0],i,c=c.split(".")[1];i=f+"-"+c;d||(d=a,a=b.Widget);b.expr[":"][i]=function(f){return!!b.data(f,
+c)};b[f]=b[f]||{};b[f][c]=function(b,f){arguments.length&&this._createWidget(b,f)};a=new a;a.options=b.extend(!0,{},a.options);b[f][c].prototype=b.extend(!0,a,{namespace:f,widgetName:c,widgetEventPrefix:b[f][c].prototype.widgetEventPrefix||c,widgetBaseClass:i},d);b.widget.bridge(c,b[f][c])};b.widget.bridge=function(c,d){b.fn[c]=function(e){var f="string"===typeof e,i=Array.prototype.slice.call(arguments,1),j=this,e=!f&&i.length?b.extend.apply(null,[!0,e].concat(i)):e;if(f&&"_"===e.charAt(0))return j;
+f?this.each(function(){var f=b.data(this,c),d=f&&b.isFunction(f[e])?f[e].apply(f,i):f;if(d!==f&&d!==a)return j=d,!1}):this.each(function(){var f=b.data(this,c);f?f.option(e||{})._init():b.data(this,c,new d(e,this))});return j}};b.Widget=function(b,c){arguments.length&&this._createWidget(b,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(c,a){b.data(a,this.widgetName,this);this.element=b(a);this.options=b.extend(!0,{},this.options,this._getCreateOptions(),
+c);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},
+option:function(c,d){var e=c;if(0===arguments.length)return b.extend({},this.options);if("string"===typeof c){if(d===a)return this.options[c];e={};e[c]=d}this._setOptions(e);return this},_setOptions:function(c){var a=this;b.each(c,function(b,f){a._setOption(b,f)});return this},_setOption:function(b,c){this.options[b]=c;"disabled"===b&&this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",
+!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(c,a,d){var f=this.options[c],a=b.Event(a);a.type=(c===this.widgetEventPrefix?c:this.widgetEventPrefix+c).toLowerCase();d=d||{};if(a.originalEvent)for(var c=b.event.props.length,i;c;)i=b.event.props[--c],a[i]=a.originalEvent[i];this.element.trigger(a,d);return!(b.isFunction(f)&&!1===f.call(this.element[0],a,d)||a.isDefaultPrevented())}}})(jQuery);
+(function(b){var a=!1;b(document).mousedown(function(){a=!1});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var c=this;this.element.bind("mousedown."+this.widgetName,function(b){return c._mouseDown(b)}).bind("click."+this.widgetName,function(a){if(!0===b.data(a.target,c.widgetName+".preventClickEvent"))return b.removeData(a.target,c.widgetName+".preventClickEvent"),a.stopImmediatePropagation(),!1});this.started=!1},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(c){if(!a){this._mouseStarted&&this._mouseUp(c);this._mouseDownEvent=c;var d=this,g=1==c.which,h="string"==typeof this.options.cancel?b(c.target).closest(this.options.cancel).length:!1;if(!g||h||!this._mouseCapture(c))return!0;this.mouseDelayMet=!this.options.delay;this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c)&&(this._mouseStarted=!1!==this._mouseStart(c),
+!this._mouseStarted))return c.preventDefault(),!0;!0===b.data(c.target,this.widgetName+".preventClickEvent")&&b.removeData(c.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(b){return d._mouseMove(b)};this._mouseUpDelegate=function(b){return d._mouseUp(b)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.preventDefault();return a=!0}},_mouseMove:function(c){if(b.browser.msie&&!(9<=document.documentMode)&&
+!c.button)return this._mouseUp(c);if(this._mouseStarted)return this._mouseDrag(c),c.preventDefault();this._mouseDistanceMet(c)&&this._mouseDelayMet(c)&&((this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,c))?this._mouseDrag(c):this._mouseUp(c));return!this._mouseStarted},_mouseUp:function(c){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);this._mouseStarted&&(this._mouseStarted=!1,c.target==this._mouseDownEvent.target&&
+b.data(c.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(c));return!1},_mouseDistanceMet:function(b){return Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);
+(function(b){b.ui=b.ui||{};var a=/left|center|right/,c=/top|center|bottom/,d=b.fn.position,g=b.fn.offset;b.fn.position=function(g){if(!g||!g.of)return d.apply(this,arguments);var g=b.extend({},g),e=b(g.of),f=e[0],i=(g.collision||"flip").split(" "),j=g.offset?g.offset.split(" "):[0,0],k,l,m;9===f.nodeType?(k=e.width(),l=e.height(),m={top:0,left:0}):f.setTimeout?(k=e.width(),l=e.height(),m={top:e.scrollTop(),left:e.scrollLeft()}):f.preventDefault?(g.at="left top",k=l=0,m={top:g.of.pageY,left:g.of.pageX}):
+(k=e.outerWidth(),l=e.outerHeight(),m=e.offset());b.each(["my","at"],function(){var b=(g[this]||"").split(" ");b.length===1&&(b=a.test(b[0])?b.concat(["center"]):c.test(b[0])?["center"].concat(b):["center","center"]);b[0]=a.test(b[0])?b[0]:"center";b[1]=c.test(b[1])?b[1]:"center";g[this]=b});1===i.length&&(i[1]=i[0]);j[0]=parseInt(j[0],10)||0;1===j.length&&(j[1]=j[0]);j[1]=parseInt(j[1],10)||0;"right"===g.at[0]?m.left+=k:"center"===g.at[0]&&(m.left+=k/2);"bottom"===g.at[1]?m.top+=l:"center"===g.at[1]&&
+(m.top+=l/2);m.left+=j[0];m.top+=j[1];return this.each(function(){var f=b(this),c=f.outerWidth(),a=f.outerHeight(),d=parseInt(b.curCSS(this,"marginLeft",true))||0,e=parseInt(b.curCSS(this,"marginTop",true))||0,r=c+d+(parseInt(b.curCSS(this,"marginRight",true))||0),u=a+e+(parseInt(b.curCSS(this,"marginBottom",true))||0),s=b.extend({},m),v;if(g.my[0]==="right")s.left=s.left-c;else if(g.my[0]==="center")s.left=s.left-c/2;if(g.my[1]==="bottom")s.top=s.top-a;else if(g.my[1]==="center")s.top=s.top-a/2;
+s.left=Math.round(s.left);s.top=Math.round(s.top);v={left:s.left-d,top:s.top-e};b.each(["left","top"],function(f,d){if(b.ui.position[i[f]])b.ui.position[i[f]][d](s,{targetWidth:k,targetHeight:l,elemWidth:c,elemHeight:a,collisionPosition:v,collisionWidth:r,collisionHeight:u,offset:j,my:g.my,at:g.at})});b.fn.bgiframe&&f.bgiframe();f.offset(b.extend(s,{using:g.using}))})};b.ui.position={fit:{left:function(c,a){var f=b(window),f=a.collisionPosition.left+a.collisionWidth-f.width()-f.scrollLeft();c.left=
+0<f?c.left-f:Math.max(c.left-a.collisionPosition.left,c.left)},top:function(c,a){var f=b(window),f=a.collisionPosition.top+a.collisionHeight-f.height()-f.scrollTop();c.top=0<f?c.top-f:Math.max(c.top-a.collisionPosition.top,c.top)}},flip:{left:function(c,a){if("center"!==a.at[0]){var f=b(window),f=a.collisionPosition.left+a.collisionWidth-f.width()-f.scrollLeft(),d="left"===a.my[0]?-a.elemWidth:"right"===a.my[0]?a.elemWidth:0,g="left"===a.at[0]?a.targetWidth:-a.targetWidth,k=-2*a.offset[0];c.left+=
+0>a.collisionPosition.left?d+g+k:0<f?d+g+k:0}},top:function(c,a){if("center"!==a.at[1]){var f=b(window),f=a.collisionPosition.top+a.collisionHeight-f.height()-f.scrollTop(),d="top"===a.my[1]?-a.elemHeight:"bottom"===a.my[1]?a.elemHeight:0,g="top"===a.at[1]?a.targetHeight:-a.targetHeight,k=-2*a.offset[1];c.top+=0>a.collisionPosition.top?d+g+k:0<f?d+g+k:0}}}};b.offset.setOffset||(b.offset.setOffset=function(c,a){/static/.test(b.curCSS(c,"position"))&&(c.style.position="relative");var f=b(c),d=f.offset(),
+g=parseInt(b.curCSS(c,"top",!0),10)||0,k=parseInt(b.curCSS(c,"left",!0),10)||0,d={top:a.top-d.top+g,left:a.left-d.left+k};"using"in a?a.using.call(c,d):f.css(d)},b.fn.offset=function(c){var a=this[0];return!a||!a.ownerDocument?null:c?this.each(function(){b.offset.setOffset(this,c)}):g.call(this)})})(jQuery);
+(function(b){b.widget("ui.draggable",b.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){"original"==this.options.helper&&!/^(?:r|a|f)/.test(this.element.css("position"))&&
+(this.element[0].style.position="relative");this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable"))return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(a){var c=this.options;if(this.helper||c.disabled||b(a.target).is(".ui-resizable-handle"))return!1;
+this.handle=this._getHandle(a);if(!this.handle)return!1;b(!0===c.iframeFix?"iframe":c.iframeFix).each(function(){b('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this);
+this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=
+a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped=
+!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0===
+this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c=
+!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]||
+0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],
+this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top-
+(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),
+height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document:
+window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"),
+10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];
+this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?
+0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,
+g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.left<f[0]&&(h=f[0]+this.offset.click.left),a.pageY-this.offset.click.top<f[1]&&(e=f[1]+this.offset.click.top),a.pageX-this.offset.click.left>f[2]&&(h=f[2]+this.offset.click.left),
+a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.top<f[1]||e-this.offset.click.top>f[3])?e:!(e-this.offset.click.top<f[1])?e-c.grid[1]:e+c.grid[1]:e,h=c.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX,h=f?!(h-this.offset.click.left<f[0]||h-this.offset.click.left>f[2])?h:!(h-this.offset.click.left<
+f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");
+this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"});
+b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver?
+(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs=
+d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a,
+!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&&
+(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options;
+a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable",
+"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY<d.scrollSensitivity?c.scrollParent[0].scrollTop=g=c.scrollParent[0].scrollTop+d.scrollSpeed:a.pageY-c.overflowOffset.top<
+d.scrollSensitivity&&(c.scrollParent[0].scrollTop=g=c.scrollParent[0].scrollTop-d.scrollSpeed);if(!d.axis||"y"!=d.axis)c.overflowOffset.left+c.scrollParent[0].offsetWidth-a.pageX<d.scrollSensitivity?c.scrollParent[0].scrollLeft=g=c.scrollParent[0].scrollLeft+d.scrollSpeed:a.pageX-c.overflowOffset.left<d.scrollSensitivity&&(c.scrollParent[0].scrollLeft=g=c.scrollParent[0].scrollLeft-d.scrollSpeed)}else{if(!d.axis||"x"!=d.axis)a.pageY-b(document).scrollTop()<d.scrollSensitivity?g=b(document).scrollTop(b(document).scrollTop()-
+d.scrollSpeed):b(window).height()-(a.pageY-b(document).scrollTop())<d.scrollSensitivity&&(g=b(document).scrollTop(b(document).scrollTop()+d.scrollSpeed));if(!d.axis||"y"!=d.axis)a.pageX-b(document).scrollLeft()<d.scrollSensitivity?g=b(document).scrollLeft(b(document).scrollLeft()-d.scrollSpeed):b(window).width()-(a.pageX-b(document).scrollLeft())<d.scrollSensitivity&&(g=b(document).scrollLeft(b(document).scrollLeft()+d.scrollSpeed))}!1!==g&&(b.ui.ddmanager&&!d.dropBehaviour)&&b.ui.ddmanager.prepareOffsets(c,
+a)}});b.ui.plugin.add("draggable","snap",{start:function(){var a=b(this).data("draggable"),c=a.options;a.snapElements=[];b(c.snap.constructor!=String?c.snap.items||":data(draggable)":c.snap).each(function(){var c=b(this),g=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,width:c.outerWidth(),height:c.outerHeight(),top:g.top,left:g.left})})},drag:function(a,c){for(var d=b(this).data("draggable"),g=d.options,h=g.snapTolerance,e=c.offset.left,f=e+d.helperProportions.width,i=c.offset.top,
+j=i+d.helperProportions.height,k=d.snapElements.length-1;0<=k;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,p=d.snapElements[k].top,n=p+d.snapElements[k].height;if(l-h<e&&e<m+h&&p-h<i&&i<n+h||l-h<e&&e<m+h&&p-h<j&&j<n+h||l-h<f&&f<m+h&&p-h<i&&i<n+h||l-h<f&&f<m+h&&p-h<j&&j<n+h){if("inner"!=g.snapMode){var q=Math.abs(p-j)<=h,o=Math.abs(n-i)<=h,w=Math.abs(l-f)<=h,r=Math.abs(m-e)<=h;q&&(c.position.top=d._convertPositionTo("relative",{top:p-d.helperProportions.height,left:0}).top-d.margins.top);
+o&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top);w&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left);r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var u=q||o||w||r;if("outer"!=g.snapMode&&(q=Math.abs(p-i)<=h,o=Math.abs(n-j)<=h,w=Math.abs(l-e)<=h,r=Math.abs(m-f)<=h,q&&(c.position.top=d._convertPositionTo("relative",{top:p,left:0}).top-d.margins.top),o&&(c.position.top=
+d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),w&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),r))c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left;!d.snapElements[k].snapping&&(q||o||w||r||u)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,a,b.extend(d._uiHash(),{snapItem:d.snapElements[k].item}));d.snapElements[k].snapping=q||o||w||r||u}else d.snapElements[k].snapping&&
+d.options.snap.release&&d.options.snap.release.call(d.element,a,b.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1}}});b.ui.plugin.add("draggable","stack",{start:function(){var a=b(this).data("draggable").options,a=b.makeArray(b(a.stack)).sort(function(c,a){return(parseInt(b(c).css("zIndex"),10)||0)-(parseInt(b(a).css("zIndex"),10)||0)});if(a.length){var c=parseInt(a[0].style.zIndex)||0;b(a).each(function(b){this.style.zIndex=c+b});this[0].style.zIndex=c+a.length}}});
+b.ui.plugin.add("draggable","zIndex",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("zIndex")&&(g._zIndex=d.css("zIndex"));d.css("zIndex",g.zIndex)},stop:function(a,c){var d=b(this).data("draggable").options;d._zIndex&&b(c.helper).css("zIndex",d._zIndex)}})})(jQuery);
+(function(b){b.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,c=a.accept;this.isover=0;this.isout=1;this.accept=b.isFunction(c)?c:function(b){return b.is(c)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};b.ui.ddmanager.droppables[a.scope]=b.ui.ddmanager.droppables[a.scope]||[];b.ui.ddmanager.droppables[a.scope].push(this);
+a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=b.ui.ddmanager.droppables[this.options.scope],c=0;c<a.length;c++)a[c]==this&&a.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,c){"accept"==a&&(this.accept=b.isFunction(c)?c:function(b){return b.is(c)});b.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var c=b.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);c&&this._trigger("activate",a,this.ui(c))},_deactivate:function(a){var c=b.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);c&&this._trigger("deactivate",a,this.ui(c))},_over:function(a){var c=b.ui.ddmanager.current;if(c&&(c.currentItem||c.element)[0]!=this.element[0])if(this.accept.call(this.element[0],c.currentItem||c.element))this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",
+a,this.ui(c))},_out:function(a){var c=b.ui.ddmanager.current;if(c&&(c.currentItem||c.element)[0]!=this.element[0])if(this.accept.call(this.element[0],c.currentItem||c.element))this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",a,this.ui(c))},_drop:function(a,c){var d=c||b.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var g=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var c=b.data(this,
+"droppable");if(c.options.greedy&&!c.options.disabled&&c.options.scope==d.options.scope&&c.accept.call(c.element[0],d.currentItem||d.element)&&b.ui.intersect(d,b.extend(c,{offset:c.element.offset()}),c.options.tolerance))return g=!0,!1});return g?!1:this.accept.call(this.element[0],d.currentItem||d.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",a,this.ui(d)),this.element):
+!1},ui:function(b){return{draggable:b.currentItem||b.element,helper:b.helper,position:b.position,offset:b.positionAbs}}});b.extend(b.ui.droppable,{version:"1.8.14"});b.ui.intersect=function(a,c,d){if(!c.offset)return!1;var g=(a.positionAbs||a.position.absolute).left,h=g+a.helperProportions.width,e=(a.positionAbs||a.position.absolute).top,f=e+a.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case "fit":return i<=g&&h<=j&&k<=e&&f<=l;
+case "intersect":return i<g+a.helperProportions.width/2&&h-a.helperProportions.width/2<j&&k<e+a.helperProportions.height/2&&f-a.helperProportions.height/2<l;case "pointer":return b.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,k,i,c.proportions.height,c.proportions.width);case "touch":return(e>=k&&e<=l||f>=k&&f<=l||e<k&&f>l)&&(g>=i&&g<=j||h>=i&&h<=j||g<i&&h>j);default:return!1}};
+b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e<d.length;e++)if(!(d[e].options.disabled||a&&!d[e].accept.call(d[e].element[0],a.currentItem||a.element))){for(var f=0;f<h.length;f++)if(h[f]==d[e].element[0]){d[e].proportions.height=0;continue a}d[e].visible="none"!=d[e].element.css("display");d[e].visible&&("mousedown"==
+g&&d[e]._activate.call(d[e],c),d[e].offset=d[e].element.offset(),d[e].proportions={width:d[e].element[0].offsetWidth,height:d[e].element[0].offsetHeight})}},drop:function(a,c){var d=!1;b.each(b.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options&&(!this.options.disabled&&(this.visible&&b.ui.intersect(a,this,this.options.tolerance))&&(d=d||this._drop.call(this,c)),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||a.element)))this.isout=1,this.isover=
+0,this._deactivate.call(this,c)});return d},dragStart:function(a,c){a.element.parentsUntil("body").bind("scroll.droppable",function(){a.options.refreshPositions||b.ui.ddmanager.prepareOffsets(a,c)})},drag:function(a,c){a.options.refreshPositions&&b.ui.ddmanager.prepareOffsets(a,c);b.each(b.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var d=b.ui.intersect(a,this,this.options.tolerance);if(d=!d&&1==this.isover?"isout":d&&0==this.isover?
+"isover":null){var g;if(this.options.greedy){var h=this.element.parents(":data(droppable):eq(0)");h.length&&(g=b.data(h[0],"droppable"),g.greedyChild="isover"==d?1:0)}g&&"isover"==d&&(g.isover=0,g.isout=1,g._out.call(g,c));this[d]=1;this["isout"==d?"isover":"isout"]=0;this["isover"==d?"_over":"_out"].call(this,c);g&&"isout"==d&&(g.isout=0,g.isover=1,g._over.call(g,c))}}})},dragStop:function(a,c){a.element.parentsUntil("body").unbind("scroll.droppable");a.options.refreshPositions||b.ui.ddmanager.prepareOffsets(a,
+c)}}})(jQuery);
+(function(b){b.widget("ui.resizable",b.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var c=this,a=this.options;this.element.addClass("ui-resizable");b.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],
+_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(/relative/.test(this.element.css("position"))&&b.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"}),this.element.wrap(b('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),
+this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize",
+"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"==
+this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e<h.length;e++){var f=b.trim(h[e]),i=b('<div class="ui-resizable-handle ui-resizable-'+f+'"></div>');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=
+b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy();
+var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a=
+!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();
+var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()-
+e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a=
+e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing=
+!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h}));
+this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity};
+if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),h<a.maxWidth&&(a.maxWidth=h),f<a.maxHeight)a.maxHeight=f;this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();c(b.left)&&(this.position.left=b.left);c(b.top)&&(this.position.top=b.top);c(b.height)&&(this.size.height=b.height);c(b.width)&&(this.size.width=b.width)},_updateRatio:function(b){var a=
+this.position,h=this.size,e=this.axis;c(b.height)?b.width=b.height*this.aspectRatio:c(b.width)&&(b.height=b.width/this.aspectRatio);"sw"==e&&(b.left=a.left+(h.width-b.width),b.top=null);"nw"==e&&(b.top=a.top+(h.height-b.height),b.left=a.left+(h.width-b.width));return b},_respectSize:function(b){var a=this._vBoundaries,h=this.axis,e=c(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=c(b.height)&&a.maxHeight&&a.maxHeight<b.height,i=c(b.width)&&a.minWidth&&a.minWidth>b.width,j=c(b.height)&&a.minHeight&&a.minHeight>
+b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c=
+this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var h=this._proportionallyResizeElements[a];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],f=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=b.map(e,function(b,c){var a=parseInt(b,10)||0,d=parseInt(f[c],10)||0;return a+d})}if(!b.browser.msie||!b(c).is(":hidden")&&!b(c).parents(":hidden").length)h.css({height:c.height()-
+this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var c=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||b('<div style="overflow:hidden;"></div>');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top-
+h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,
+[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,
+element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})};
+"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={},
+e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options,
+h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),
+i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),
+top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0},
+c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)?
+g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper?
+e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left);
+h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&&
+b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost:
+"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width-
+e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b,
+10))}})(jQuery);
+(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"),
+unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d=
+this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d=
+b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g>
+e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.right<g||i.top>f||i.bottom<h):d.tolerance=="fit"&&(k=i.left>g&&i.right<e&&i.top>h&&i.bottom<f);if(k){if(i.selected){i.$element.removeClass("ui-selected");i.selected=false}if(i.unselecting){i.$element.removeClass("ui-unselecting");i.unselecting=false}if(!i.selecting){i.$element.addClass("ui-selecting");
+i.selecting=true;c._trigger("selecting",a,{selecting:i.element})}}else{if(i.selecting)if(a.metaKey&&i.startselected){i.$element.removeClass("ui-selecting");i.selecting=false;i.$element.addClass("ui-selected");i.selected=true}else{i.$element.removeClass("ui-selecting");i.selecting=false;if(i.startselected){i.$element.addClass("ui-unselecting");i.unselecting=true}c._trigger("unselecting",a,{unselecting:i.element})}if(i.selected&&!a.metaKey&&!i.startselected){i.$element.removeClass("ui-selected");i.selected=
+false;i.$element.addClass("ui-unselecting");i.unselecting=true;c._trigger("unselecting",a,{unselecting:i.element})}}}});return!1}},_mouseStop:function(a){var c=this;this.dragged=!1;b(".ui-unselecting",this.element[0]).each(function(){var d=b.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=!1;d.startselected=!1;c._trigger("unselected",a,{unselected:d.element})});b(".ui-selecting",this.element[0]).each(function(){var d=b.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");
+d.selecting=!1;d.selected=!0;d.startselected=!0;c._trigger("selected",a,{selected:d.element})});this._trigger("stop",a);this.helper.remove();return!1}});b.extend(b.ui.selectable,{version:"1.8.14"})})(jQuery);
+(function(b){b.widget("ui.sortable",b.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();
+this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]=
+c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this==
+a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=
+this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();
+c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset());
+this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:a.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+
+this.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:a.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed):(a.pageY-b(document).scrollTop()<c.scrollSensitivity?d=b(document).scrollTop(b(document).scrollTop()-c.scrollSpeed):b(window).height()-(a.pageY-b(document).scrollTop())<c.scrollSensitivity&&(d=b(document).scrollTop(b(document).scrollTop()+
+c.scrollSpeed)),a.pageX-b(document).scrollLeft()<c.scrollSensitivity?d=b(document).scrollLeft(b(document).scrollLeft()-c.scrollSpeed):b(window).width()-(a.pageX-b(document).scrollLeft())<c.scrollSensitivity&&(d=b(document).scrollLeft(b(document).scrollLeft()+c.scrollSpeed)));!1!==d&&(b.ui.ddmanager&&!c.dropBehaviour)&&b.ui.ddmanager.prepareOffsets(this,a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+
+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";for(c=this.items.length-1;0<=c;c--){var d=this.items[c],g=d.item[0],h=this._intersectsWithPointer(d);if(h&&g!=this.currentItem[0]&&this.placeholder[1==h?"next":"prev"]()[0]!=g&&!b.ui.contains(this.placeholder[0],g)&&("semi-dynamic"==this.options.type?!b.ui.contains(this.element[0],g):1)){this.direction=1==h?"down":"up";if("pointer"==this.options.tolerance||this._intersectsWithSides(d))this._rearrange(a,
+d);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(a,c){if(a){b.ui.ddmanager&&!this.options.dropBehaviour&&b.ui.ddmanager.drop(this,a);if(this.options.revert){var d=this,g=d.placeholder.offset();d.reverting=!0;b(this.helper).animate({left:g.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?
+0:this.offsetParent[0].scrollLeft),top:g.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(a)})}else this._clear(a,c);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null});"original"==this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var a=this.containers.length-1;0<=a;a--)this.containers[a]._trigger("deactivate",
+null,this._uiHash(this)),this.containers[a].containerCache.over&&(this.containers[a]._trigger("out",null,this._uiHash(this)),this.containers[a].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!=this.options.helper&&(this.helper&&this.helper[0].parentNode)&&this.helper.remove(),b.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?b(this.domPosition.prev).after(this.currentItem):
+b(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(a){var c=this._getItemsAsjQuery(a&&a.connected),d=[],a=a||{};b(c).each(function(){var c=(b(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);c&&d.push((a.key||c[1]+"[]")+"="+(a.key&&a.expression?c[1]:c[2]))});!d.length&&a.key&&d.push(a.key+"=");return d.join("&")},toArray:function(a){var c=this._getItemsAsjQuery(a&&a.connected),d=[],a=a||{};c.each(function(){d.push(b(a.item||this).attr(a.attribute||
+"id")||"")});return d},_intersectsWith:function(b){var c=this.positionAbs.left,d=c+this.helperProportions.width,g=this.positionAbs.top,h=g+this.helperProportions.height,e=b.left,f=e+b.width,i=b.top,j=i+b.height,k=this.offset.click.top,l=this.offset.click.left;return"pointer"==this.options.tolerance||this.options.forcePointerForContainers||"pointer"!=this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>b[this.floating?"width":"height"]?g+k>i&&g+k<j&&c+l>e&&c+l<f:e<c+this.helperProportions.width/
+2&&d-this.helperProportions.width/2<f&&i<g+this.helperProportions.height/2&&h-this.helperProportions.height/2<j},_intersectsWithPointer:function(a){var c=b.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height),a=b.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width),c=c&&a,a=this._getDragVerticalDirection(),d=this._getDragHorizontalDirection();return!c?!1:this.floating?d&&"right"==d||"down"==a?2:1:a&&("down"==a?2:1)},_intersectsWithSides:function(a){var c=
+b.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height),a=b.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width),d=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return this.floating&&g?"right"==g&&a||"left"==g&&!a:d&&("down"==d&&c||"up"==d&&!c)},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return 0!=b&&(0<b?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-
+this.lastPositionAbs.left;return 0!=b&&(0<b?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions();return this},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(a){var c=[],d=[],g=this._connectWith();if(g&&a)for(a=g.length-1;0<=a;a--)for(var h=b(g[a]),e=h.length-1;0<=e;e--){var f=b.data(h[e],"sortable");f&&(f!=this&&!f.options.disabled)&&d.push([b.isFunction(f.options.items)?f.options.items.call(f.element):
+b(f.options.items,f.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),f])}d.push([b.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):b(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=d.length-1;0<=a;a--)d[a][0].each(function(){c.push(this)});return b(c)},_removeCurrentsFromItems:function(){for(var b=this.currentItem.find(":data(sortable-item)"),c=0;c<this.items.length;c++)for(var d=
+0;d<b.length;d++)b[d]==this.items[c].item[0]&&this.items.splice(c,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var c=this.items,d=[[b.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):b(this.options.items,this.element),this]],g=this._connectWith();if(g)for(var h=g.length-1;0<=h;h--)for(var e=b(g[h]),f=e.length-1;0<=f;f--){var i=b.data(e[f],"sortable");i&&(i!=this&&!i.options.disabled)&&(d.push([b.isFunction(i.options.items)?i.options.items.call(i.element[0],
+a,{item:this.currentItem}):b(i.options.items,i.element),i]),this.containers.push(i))}for(h=d.length-1;0<=h;h--){a=d[h][1];g=d[h][0];f=0;for(e=g.length;f<e;f++)i=b(g[f]),i.data("sortable-item",a),c.push({item:i,instance:a,width:0,height:0,left:0,top:0})}},refreshPositions:function(a){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;0<=c;c--){var d=this.items[c];if(!(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])){var g=
+this.options.toleranceElement?b(this.options.toleranceElement,d.item):d.item;a||(d.width=g.outerWidth(),d.height=g.outerHeight());g=g.offset();d.left=g.left;d.top=g.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c=this.containers.length-1;0<=c;c--)g=this.containers[c].element.offset(),this.containers[c].containerCache.left=g.left,this.containers[c].containerCache.top=g.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),
+this.containers[c].containerCache.height=this.containers[c].element.outerHeight();return this},_createPlaceholder:function(a){var c=a||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var g=d.placeholder;d.placeholder={element:function(){var a=b(document.createElement(c.currentItem[0].nodeName)).addClass(g||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];g||(a.style.visibility="hidden");return a},update:function(b,a){if(!g||d.forcePlaceholderSize)a.height()||
+a.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=b(d.placeholder.element.call(c.element,c.currentItem));c.currentItem.after(c.placeholder);d.placeholder.update(c,c.placeholder)},_contactContainers:function(a){for(var c=null,d=null,g=this.containers.length-
+1;0<=g;g--)if(!b.ui.contains(this.currentItem[0],this.containers[g].element[0]))if(this._intersectsWith(this.containers[g].containerCache)){if(!c||!b.ui.contains(this.containers[g].element[0],c.element[0]))c=this.containers[g],d=g}else this.containers[g].containerCache.over&&(this.containers[g]._trigger("out",a,this._uiHash(this)),this.containers[g].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[d]._trigger("over",a,this._uiHash(this)),this.containers[d].containerCache.over=
+1;else if(this.currentContainer!=this.containers[d]){for(var c=1E4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"],e=this.items.length-1;0<=e;e--)if(b.ui.contains(this.containers[d].element[0],this.items[e].item[0])){var f=this.items[e][this.containers[d].floating?"left":"top"];Math.abs(f-h)<c&&(c=Math.abs(f-h),g=this.items[e])}if(g||this.options.dropOnEmpty)this.currentContainer=this.containers[d],g?this._rearrange(a,g,null,!0):this._rearrange(a,null,this.containers[d].element,
+!0),this._trigger("change",a,this._uiHash()),this.containers[d]._trigger("change",a,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",a,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a,this.currentItem])):"clone"==c.helper?this.currentItem.clone():this.currentItem;a.parents("body").length||b("parent"!=c.appendTo?
+c.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);a[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")});(""==a[0].style.width||c.forceHelperSize)&&a.width(this.currentItem.width());(""==a[0].style.height||c.forceHelperSize)&&a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){"string"==
+typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]||0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&
+(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==
+this.cssPosition){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},
+_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,b("document"==a.containment?document:window).width()-this.helperProportions.width-this.margins.left,(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-
+this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var c=b(a.containment)[0],a=b(a.containment).offset(),d="hidden"!=b(c).css("overflow");this.containment=[a.left+(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0)-this.margins.top,a.left+(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||
+0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:
+this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==
+this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(d[0].tagName);"relative"==this.cssPosition&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var h=a.pageX,e=a.pageY;if(this.originalPosition&&(this.containment&&(a.pageX-this.offset.click.left<this.containment[0]&&(h=this.containment[0]+this.offset.click.left),
+a.pageY-this.offset.click.top<this.containment[1]&&(e=this.containment[1]+this.offset.click.top),a.pageX-this.offset.click.left>this.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.top<this.containment[1]||e-this.offset.click.top>this.containment[3])?e:!(e-this.offset.click.top<
+this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.left<this.containment[0]||h-this.offset.click.left>this.containment[2])?h:!(h-this.offset.click.left<this.containment[0])?h-c.grid[0]:h+c.grid[0]:h;return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?
+0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_rearrange:function(b,c,d,g){d?d[0].appendChild(this.placeholder[0]):c.item[0].parentNode.insertBefore(this.placeholder[0],"down"==this.direction?c.item[0]:c.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var h=this,e=this.counter;window.setTimeout(function(){e==
+h.counter&&h.refreshPositions(!g)},0)},_clear:function(a,c){this.reverting=!1;var d=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var g in this._storedCSS)if("auto"==this._storedCSS[g]||"static"==this._storedCSS[g])this._storedCSS[g]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(b){this._trigger("receive",
+b,this._uiHash(this.fromOutside))});(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(b){this._trigger("update",b,this._uiHash())});if(!b.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(b){this._trigger("remove",b,this._uiHash())});for(g=this.containers.length-1;0<=g;g--)b.ui.contains(this.containers[g].element[0],this.currentItem[0])&&!c&&(d.push(function(b){return function(a){b._trigger("receive",
+a,this._uiHash(this))}}.call(this,this.containers[g])),d.push(function(b){return function(a){b._trigger("update",a,this._uiHash(this))}}.call(this,this.containers[g])))}for(g=this.containers.length-1;0<=g;g--)c||d.push(function(b){return function(a){b._trigger("deactivate",a,this._uiHash(this))}}.call(this,this.containers[g])),this.containers[g].containerCache.over&&(d.push(function(b){return function(a){b._trigger("out",a,this._uiHash(this))}}.call(this,this.containers[g])),this.containers[g].containerCache.over=
+0);this._storedCursor&&b("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);this._storedZIndex&&this.helper.css("zIndex","auto"==this._storedZIndex?"":this._storedZIndex);this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",a,this._uiHash());for(g=0;g<d.length;g++)d[g].call(this,a);this._trigger("stop",a,this._uiHash())}return!1}c||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!c){for(g=0;g<d.length;g++)d[g].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){!1===b.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(a){var c=a||this;return{helper:c.helper,placeholder:c.placeholder||b([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:a?a.element:null}}});b.extend(b.ui.sortable,
+{version:"1.8.14"})})(jQuery);
+(function(b){b.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers=
+a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
+function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a=
+this.options;a.icons&&(b("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(),
+c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h?
+(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow",
+"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget||
+c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
+h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(),
+j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight||
+f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false",
+"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14",
+animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/);
+h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",
+paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery);
+(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d=
+b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&&
+(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("<ul></ul>").addClass("ui-autocomplete").appendTo(b(this.options.appendTo||
+"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"),
+i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
+this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source?
+(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length<this.options.minLength)return this.close(a);clearTimeout(this.closing);if(!1!==this._trigger("search",a))return this._search(b)},
+_search:function(b){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:b},this.response)},_response:function(b){!this.options.disabled&&b&&b.length?(b=this._normalize(b),this._suggest(b),this._trigger("open")):this.close();this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(b){clearTimeout(this.closing);this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",b))},_change:function(b){this.previous!==
+this.element.val()&&this._trigger("change",b,{item:this.selectedItem})},_normalize:function(a){return a.length&&a[0].label&&a[0].value?a:b.map(a,function(a){return"string"===typeof a?{label:a,value:a}:b.extend({label:a.label||a.value,value:a.value||a.label},a)})},_suggest:function(a){var d=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(d,a);this.menu.deactivate();this.menu.refresh();d.show();this._resizeMenu();d.position(b.extend({of:this.element},this.options.position));
+this.options.autoFocus&&this.menu.next(new b.Event("mouseover"))},_resizeMenu:function(){var b=this.menu.element;b.outerWidth(Math.max(b.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,d){var g=this;b.each(d,function(b,d){g._renderItem(a,d)})},_renderItem:function(a,d){return b("<li></li>").data("item.autocomplete",d).append(b("<a></a>").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&&
+/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery);
+(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&&
+(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d,
+b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10<a});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(a,g)}else this.activate(a,
+this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c+d-b(this).height();return 10>a&&-10<a});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(a,
+result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[b.fn.prop?"prop":"attr"]("scrollHeight")},select:function(b){this._trigger("selected",b,{item:this.active})}})})(jQuery);
+(function(b){var a,c,d,g,h=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},e=function(a){var c=a.name,d=a.form,h=b([]);c&&(h=d?b(d).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form}));return h};b.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",h);"boolean"!==typeof this.options.disabled&&
+(this.options.disabled=this.element.attr("disabled"));this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var f=this,i=this.options,j="checkbox"===this.type||"radio"===this.type,k="ui-state-hover"+(!j?" ui-state-active":"");null===i.label&&(i.label=this.buttonElement.html());this.element.is(":disabled")&&(i.disabled=!0);this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!i.disabled){b(this).addClass("ui-state-hover");
+this===a&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){i.disabled||b(this).removeClass(k)}).bind("click.button",function(b){if(i.disabled){b.preventDefault();b.stopImmediatePropagation()}});this.element.bind("focus.button",function(){f.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){f.buttonElement.removeClass("ui-state-focus")});j&&(this.element.bind("change.button",function(){g||f.refresh()}),this.buttonElement.bind("mousedown.button",function(b){if(!i.disabled){g=
+false;c=b.pageX;d=b.pageY}}).bind("mouseup.button",function(b){if(!i.disabled&&(c!==b.pageX||d!==b.pageY))g=true}));"checkbox"===this.type?this.buttonElement.bind("click.button",function(){if(i.disabled||g)return false;b(this).toggleClass("ui-state-active");f.buttonElement.attr("aria-pressed",f.element[0].checked)}):"radio"===this.type?this.buttonElement.bind("click.button",function(){if(i.disabled||g)return false;b(this).addClass("ui-state-active");f.buttonElement.attr("aria-pressed",true);var a=
+f.element[0];e(a).not(a).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)}):(this.buttonElement.bind("mousedown.button",function(){if(i.disabled)return false;b(this).addClass("ui-state-active");a=this;b(document).one("mouseup",function(){a=null})}).bind("mouseup.button",function(){if(i.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(a){if(i.disabled)return false;(a.keyCode==b.ui.keyCode.SPACE||
+a.keyCode==b.ui.keyCode.ENTER)&&b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(a){a.keyCode===b.ui.keyCode.SPACE&&b(this).click()}));this._setOption("disabled",i.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if("checkbox"===this.type||
+"radio"===this.type){var b=this.element.parents().filter(":last"),a="label[for="+this.element.attr("id")+"]";this.buttonElement=b.find(a);this.buttonElement.length||(b=b.length?b.siblings():this.element.siblings(),this.buttonElement=b.filter(a),this.buttonElement.length||(this.buttonElement=b.find(a)));this.element.addClass("ui-helper-hidden-accessible");(b=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=
+this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||
+this.buttonElement.removeAttr("title");b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"disabled"===a?c?this.element.attr("disabled",!0):this.element.removeAttr("disabled"):this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);"radio"===this.type?e(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+!0):b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",!1)}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",!0):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",!1))},_resetButton:function(){if("input"===this.type)this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(e.push(h?"ui-button-icons-only":
+"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction");
+this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
+b.Widget.prototype.destroy.call(this)}})})(jQuery);
+(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c=
+b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||"&#160;",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
+c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d),
+l=b('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("<span></span>")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("<span></span>").addClass("ui-dialog-title").attr("id",
+i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
+this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!==
+c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+=
+1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1),
+!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("<div></div>").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&&
+null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('<button type="button"></button>').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
+handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition,
+originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize",
+b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "):
+[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in
+c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"):
+f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||"&#160;"))}b.Widget.prototype._setOption.apply(this,arguments)},
+_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height-
+c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "),
+create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()<b.ui.dialog.overlay.maxZ)return!1})},1),b(document).bind("keydown.dialog-overlay",function(c){a.options.closeOnEscape&&(c.keyCode&&c.keyCode===b.ui.keyCode.ESCAPE)&&(a.close(c),c.preventDefault())}),b(window).bind("resize.dialog-overlay",b.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||b("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
+height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),
+c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a<c?b(window).height()+"px":a+"px"):b(document).height()+"px"},width:function(){var a,c;return b.browser.msie?(a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),a<c?b(window).width()+"px":a+"px"):b(document).width()+"px"},resize:function(){var a=b([]);b.each(b.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,
+height:0}).css({width:b.ui.dialog.overlay.width(),height:b.ui.dialog.overlay.height()})}});b.extend(b.ui.dialog.overlay.prototype,{destroy:function(){b.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+(function(b){b.widget("ui.slider",b.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var a=this,c=this.options,d=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),g=c.values&&c.values.length||1,h=[];this._mouseSliding=this._keySliding=!1;this._animateOff=!0;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(c.disabled?" ui-slider-disabled ui-disabled":""));this.range=b([]);if(c.range){if(!0===c.range&&(c.values||(c.values=[this._valueMin(),this._valueMin()]),c.values.length&&2!==c.values.length))c.values=[c.values[0],c.values[0]];this.range=b("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e<g;e+=1)h.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle",
+a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g):
+h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c,
+g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c=
+this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus();
+c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,
+this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset?
+this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1<c&&(c=1);0>c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b,
+c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d<g))d=g;d!==this.values(c)&&(g=this.values(),g[c]=d,b=this._trigger("slide",b,{handle:this.handles[c],value:d,values:g}),this.values(c?0:1),!1!==b&&this.values(c,d,!0))}else d!==this.value()&&(b=this._trigger("slide",b,{handle:this.handles[c],value:d}),!1!==b&&this.value(d))},_stop:function(b,c){var d={handle:this.handles[c],value:this.value()};
+this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());this._trigger("stop",b,d)},_change:function(b,c){if(!this._keySliding&&!this._mouseSliding){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());this._trigger("change",b,d)}},value:function(b){if(arguments.length)this.options.value=this._trimAlignValue(b),this._refreshValue(),this._change(null,0);else return this._value()},
+values:function(a,c){var d,g,h;if(1<arguments.length)this.options.values[a]=this._trimAlignValue(c),this._refreshValue(),this._change(null,a);else if(arguments.length)if(b.isArray(arguments[0])){d=this.options.values;g=arguments[0];for(h=0;h<d.length;h+=1)d[h]=this._trimAlignValue(g[h]),this._change(null,h);this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):this.value();else return this._values()},_setOption:function(a,c){var d,g=0;b.isArray(this.options.values)&&
+(g=this.options.values.length);b.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.attr("disabled","disabled"),this.element.addClass("ui-disabled")):(this.handles.removeAttr("disabled"),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);
+this._refreshValue();break;case "value":this._animateOff=!0;this._refreshValue();this._change(null,0);this._animateOff=!1;break;case "values":this._animateOff=!0;this._refreshValue();for(d=0;d<g;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var c,d;if(arguments.length)return c=this.options.values[b],c=this._trimAlignValue(c);c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);
+return c},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var c=0<this.options.step?this.options.step:1,d=(b-this._valueMin())%c;alignValue=b-d;2*Math.abs(d)>=c&&(alignValue+=0<d?c:-c);return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=this.options.range,c=this.options,d=this,g=!this._animateOff?c.animate:!1,h,e=
+{},f,i,j,k;if(this.options.values&&this.options.values.length)this.handles.each(function(a){h=100*((d.values(a)-d._valueMin())/(d._valueMax()-d._valueMin()));e["horizontal"===d.orientation?"left":"bottom"]=h+"%";b(this).stop(1,1)[g?"animate":"css"](e,c.animate);if(!0===d.options.range)if("horizontal"===d.orientation){if(0===a)d.range.stop(1,1)[g?"animate":"css"]({left:h+"%"},c.animate);if(1===a)d.range[g?"animate":"css"]({width:h-f+"%"},{queue:!1,duration:c.animate})}else{if(0===a)d.range.stop(1,
+1)[g?"animate":"css"]({bottom:h+"%"},c.animate);if(1===a)d.range[g?"animate":"css"]({height:h-f+"%"},{queue:!1,duration:c.animate})}f=h});else{i=this.value();j=this._valueMin();k=this._valueMax();h=k!==j?100*((i-j)/(k-j)):0;e["horizontal"===d.orientation?"left":"bottom"]=h+"%";this.handle.stop(1,1)[g?"animate":"css"](e,c.animate);if("min"===a&&"horizontal"===this.orientation)this.range.stop(1,1)[g?"animate":"css"]({width:h+"%"},c.animate);if("max"===a&&"horizontal"===this.orientation)this.range[g?
+"animate":"css"]({width:100-h+"%"},{queue:!1,duration:c.animate});if("min"===a&&"vertical"===this.orientation)this.range.stop(1,1)[g?"animate":"css"]({height:h+"%"},c.animate);if("max"===a&&"vertical"===this.orientation)this.range[g?"animate":"css"]({height:100-h+"%"},{queue:!1,duration:c.animate})}}});b.extend(b.ui.slider,{version:"1.8.14"})})(jQuery);
+(function(b,a){var c=0,d=0;b.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a):
+(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a=
+b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]||
+(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),
+0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
+this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs",
+function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal",
+function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")};
+this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected=
+-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
+b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a=
+b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c,
+d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)):
+(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(),
+f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1<this.anchors.length&&this.select(a+(a+1<this.anchors.length?1:-1));c.disabled=b.map(b.grep(c.disabled,function(b){return b!=a}),function(b){return b>=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!=
+a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+
+".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup();
+d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup();
+return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b<c.anchors.length?b:0)},b);a&&a.stopPropagation()}),j=c._unrotate||(c._unrotate=!a?function(b){b.clientX&&
+c.rotate(null)}:function(){t=f.selected;d()});b?(this.element.bind("tabsshow",d),this.anchors.bind(f.event+".tabs",j),d()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",d),this.anchors.unbind(f.event+".tabs",j),delete this._rotate,delete this._unrotate);return this}})})(jQuery);
+(function(b,a){function c(){this.debug=!1;this._curInst=null;this._keyEvent=!1;this._disabledInputs=[];this._inDialog=this._datepickerShowing=!1;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:"January February March April May June July August September October November December".split(" "),monthNamesShort:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dayNames:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),dayNamesShort:"Sun Mon Tue Wed Thu Fri Sat".split(" "),dayNamesMin:"Su Mo Tu We Th Fr Sa".split(" "),
+weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,
+beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1};b.extend(this._defaults,this.regional[""]);this.dpDiv=d(b('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");
+a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&&
+c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g=
+a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('<div class="'+
+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker",
+c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b('<span class="'+this._appendClass+'">'+d+"</span>"),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("<img/>").addClass(this._triggerClass).attr({src:g,
+alt:d,title:d}):b('<button type="button"></button>').addClass(this._triggerClass).html(""==g?d:b("<img/>").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a=
+0,c=0,f=0;f<b.length;f++)b[f].length>a&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,
+a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b('<input type="text" id="dp'+this.uuid+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1),
+a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+
+"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",
+this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"),
+c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),
+c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;a<this._disabledInputs.length;a++)if(this._disabledInputs[a]==b)return!0;return!1},_getInst:function(a){try{return b.data(a,"datepicker")}catch(c){throw"Missing instance data for this datepicker";
+}},_optionDatepicker:function(c,d,e){var h=this._getInst(c);if(2==arguments.length&&"string"==typeof d)return"defaults"==d?b.extend({},b.datepicker._defaults):h?"all"==d?b.extend({},h.settings):this._get(h,d):null;var l=d||{};"string"==typeof d&&(l={},l[d]=e);if(h){this._curInst==h&&this._hideDatepicker();var m=this._getDateDatepicker(c,!0),p=this._getMinMaxDate(h,"min"),n=this._getMinMaxDate(h,"max");g(h.settings,l);null!==p&&(l.dateFormat!==a&&l.minDate===a)&&(h.settings.minDate=this._formatDate(h,
+p));null!==n&&(l.dateFormat!==a&&l.maxDate===a)&&(h.settings.maxDate=this._formatDate(h,n));this._attachments(b(c),h);this._autoSize(h);this._setDate(h,m);this._updateAlternate(h);this._updateDatepicker(h)}},_changeDatepicker:function(b,a,c){this._optionDatepicker(b,a,c)},_refreshDatepicker:function(b){(b=this._getInst(b))&&this._updateDatepicker(b)},_setDateDatepicker:function(b,a){var c=this._getInst(b);c&&(this._setDate(c,a),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(b,
+a){var c=this._getInst(b);c&&!c.inline&&this._setDateFromField(c,a);return c?this._getDate(c):null},_doKeyDown:function(a){var c=b.datepicker._getInst(a.target),d=!0,e=c.dpDiv.is(".ui-datepicker-rtl");c._keyEvent=!0;if(b.datepicker._datepickerShowing)switch(a.keyCode){case 9:b.datepicker._hideDatepicker();d=!1;break;case 13:return d=b("td."+b.datepicker._dayOverClass+":not(."+b.datepicker._currentClass+")",c.dpDiv),d[0]?b.datepicker._selectDay(a.target,c.selectedMonth,c.selectedYear,d[0]):b.datepicker._hideDatepicker(),
+!1;case 27:b.datepicker._hideDatepicker();break;case 33:b.datepicker._adjustDate(a.target,a.ctrlKey?-b.datepicker._get(c,"stepBigMonths"):-b.datepicker._get(c,"stepMonths"),"M");break;case 34:b.datepicker._adjustDate(a.target,a.ctrlKey?+b.datepicker._get(c,"stepBigMonths"):+b.datepicker._get(c,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&b.datepicker._clearDate(a.target);d=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&b.datepicker._gotoToday(a.target);d=a.ctrlKey||a.metaKey;
+break;case 37:if(a.ctrlKey||a.metaKey)b.datepicker._adjustDate(a.target,e?1:-1,"D");d=a.ctrlKey||a.metaKey;a.originalEvent.altKey&&b.datepicker._adjustDate(a.target,a.ctrlKey?-b.datepicker._get(c,"stepBigMonths"):-b.datepicker._get(c,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&b.datepicker._adjustDate(a.target,-7,"D");d=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)b.datepicker._adjustDate(a.target,e?-1:1,"D");d=a.ctrlKey||a.metaKey;a.originalEvent.altKey&&b.datepicker._adjustDate(a.target,
+a.ctrlKey?+b.datepicker._get(c,"stepBigMonths"):+b.datepicker._get(c,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&b.datepicker._adjustDate(a.target,7,"D");d=a.ctrlKey||a.metaKey;break;default:d=!1}else 36==a.keyCode&&a.ctrlKey?b.datepicker._showDatepicker(this):d=!1;d&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(c){var d=b.datepicker._getInst(c.target);if(b.datepicker._get(d,"constrainInput")){var d=b.datepicker._possibleChars(b.datepicker._get(d,"dateFormat")),e=String.fromCharCode(c.charCode==
+a?c.keyCode:c.charCode);return c.ctrlKey||c.metaKey||" ">e||!d||-1<d.indexOf(e)}},_doKeyUp:function(a){a=b.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(b.datepicker.parseDate(b.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,b.datepicker._getFormatConfig(a)))b.datepicker._setDateFromField(a),b.datepicker._updateAlternate(a),b.datepicker._updateDatepicker(a)}catch(c){b.datepicker.log(c)}return!0},_showDatepicker:function(a){a=a.target||a;"input"!=a.nodeName.toLowerCase()&&
+(a=b("input",a.parentNode)[0]);if(!(b.datepicker._isDisabledDatepicker(a)||b.datepicker._lastInput==a)){var c=b.datepicker._getInst(a);b.datepicker._curInst&&b.datepicker._curInst!=c&&(b.datepicker._datepickerShowing&&b.datepicker._triggerOnClose(b.datepicker._curInst),b.datepicker._curInst.dpDiv.stop(!0,!0));var d=b.datepicker._get(c,"beforeShow");g(c.settings,d?d.apply(a,[a,c]):{});c.lastVal=null;b.datepicker._lastInput=a;b.datepicker._setDateFromField(c);b.datepicker._inDialog&&(a.value="");b.datepicker._pos||
+(b.datepicker._pos=b.datepicker._findPos(a),b.datepicker._pos[1]+=a.offsetHeight);var e=!1;b(a).parents().each(function(){e=e|b(this).css("position")=="fixed";return!e});e&&b.browser.opera&&(b.datepicker._pos[0]-=document.documentElement.scrollLeft,b.datepicker._pos[1]-=document.documentElement.scrollTop);d={left:b.datepicker._pos[0],top:b.datepicker._pos[1]};b.datepicker._pos=null;c.dpDiv.empty();c.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});b.datepicker._updateDatepicker(c);d=
+b.datepicker._checkOffset(c,d,e);c.dpDiv.css({position:b.datepicker._inDialog&&b.blockUI?"static":e?"fixed":"absolute",display:"none",left:d.left+"px",top:d.top+"px"});if(!c.inline){var d=b.datepicker._get(c,"showAnim"),h=b.datepicker._get(c,"duration"),m=function(){var a=c.dpDiv.find("iframe.ui-datepicker-cover");if(a.length){var f=b.datepicker._getBorders(c.dpDiv);a.css({left:-f[0],top:-f[1],width:c.dpDiv.outerWidth(),height:c.dpDiv.outerHeight()})}};c.dpDiv.zIndex(b(a).zIndex()+1);b.datepicker._datepickerShowing=
+!0;if(b.effects&&b.effects[d])c.dpDiv.show(d,b.datepicker._get(c,"showOptions"),h,m);else c.dpDiv[d||"show"](d?h:null,m);(!d||!h)&&m();c.input.is(":visible")&&!c.input.is(":disabled")&&c.input.focus();b.datepicker._curInst=c}}},_updateDatepicker:function(a){this.maxRows=4;var c=b.datepicker._getBorders(a.dpDiv);e=a;a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");d.length&&d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});
+a.dpDiv.find("."+this._dayOverClass+" a").mouseover();c=this._getNumberOfMonths(a);d=c[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");1<d&&a.dpDiv.addClass("ui-datepicker-multi-"+d).css("width",17*d+"em");a.dpDiv[(1!=c[0]||1!=c[1]?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==b.datepicker._curInst&&(b.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&
+!a.input.is(":disabled")&&a.input[0]!=document.activeElement)&&a.input.focus();if(a.yearshtml){var g=a.yearshtml;setTimeout(function(){g===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);g=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,c,d){var e=a.dpDiv.outerWidth(),g=a.dpDiv.outerHeight(),
+h=a.input?a.input.outerWidth():0,p=a.input?a.input.outerHeight():0,n=document.documentElement.clientWidth+b(document).scrollLeft(),q=document.documentElement.clientHeight+b(document).scrollTop();c.left-=this._get(a,"isRTL")?e-h:0;c.left-=d&&c.left==a.input.offset().left?b(document).scrollLeft():0;c.top-=d&&c.top==a.input.offset().top+p?b(document).scrollTop():0;c.left-=Math.min(c.left,c.left+e>n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c=
+this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c);
+this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
+_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"):
+0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear=
+!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay=
+b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d):
+(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0<a&&6>a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
+a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort,
+n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1<a.length&&a.charAt(E+1)==b)&&E++;return b},s=function(a){var b=u(a),a=RegExp("^\\d{1,"+("@"==a?14:"!"==a?20:"y"==a&&b?4:"o"==a?3:2)+"}"),a=c.substring(B).match(a);if(!a)throw"Missing number at position "+B;B+=a[0].length;return parseInt(a[0],10)},v=function(a,d,f){var a=b.map(u(a)?f:d,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),e=-1;b.each(a,function(a,b){var d=b[1];
+if(c.substr(B,d.length).toLowerCase()==d.toLowerCase())return e=b[0],B+=d.length,!1});if(-1!=e)return e+1;throw"Unknown name at position "+B;},z=function(){if(c.charAt(B)!=a.charAt(E))throw"Unexpected literal at position "+B;B++},B=0,E=0;E<a.length;E++)if(r)"'"==a.charAt(E)&&!u("'")?r=!1:z();else switch(a.charAt(E)){case "d":o=s("d");break;case "D":v("D",g,h);break;case "o":w=s("o");break;case "m":q=s("m");break;case "M":q=v("M",p,n);break;case "y":d=s("y");break;case "@":var C=new Date(s("@")),d=
+C.getFullYear(),q=C.getMonth()+1,o=C.getDate();break;case "!":C=new Date((s("!")-this._ticksTo1970)/1E4);d=C.getFullYear();q=C.getMonth()+1;o=C.getDate();break;case "'":u("'")?z():r=!0;break;default:z()}if(B<c.length)throw"Extra/unparsed characters found in date: "+c.substring(B);-1==d?d=(new Date).getFullYear():100>d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1<w){q=1;o=w;do{e=this._getDaysInMonth(d,q-1);if(o<=e)break;q++;o-=e}while(1)}C=this._daylightSavingAdjust(new Date(d,
+q-1,o));if(C.getFullYear()!=d||C.getMonth()+1!=q||C.getDate()!=o)throw"Invalid date";return C},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:864E9*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:
+null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,c=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){(b=r+1<a.length&&a.charAt(r+1)==b)&&r++;return b},n=function(a,b,c){b=""+b;if(h(a))for(;b.length<c;)b="0"+b;return b},q=function(a,b,c,d){return h(a)?d[b]:c[b]},o="",w=!1;if(b)for(var r=0;r<a.length;r++)if(w)"'"==a.charAt(r)&&!h("'")?w=!1:o+=a.charAt(r);else switch(a.charAt(r)){case "d":o+=n("d",b.getDate(),2);break;case "D":o+=q("D",b.getDay(),
+d,e);break;case "o":o+=n("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":o+=n("m",b.getMonth()+1,2);break;case "M":o+=q("M",b.getMonth(),g,c);break;case "y":o+=h("y")?b.getFullYear():(10>b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b=
+"",c=!1,d=function(b){(b=e+1<a.length&&a.charAt(e+1)==b)&&e++;return b},e=0;e<a.length;e++)if(c)"'"==a.charAt(e)&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(b,c){return b.settings[c]!==a?b.settings[c]:this._defaults[c]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=
+a.input?a.input.val():null,e,g;e=g=this._getDefaultDate(a);var h=this._getFormatConfig(a);try{e=this.parseDate(c,d,h)||g}catch(n){this.log(n),d=b?"":d}a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();a.currentDay=d?e.getDate():0;a.currentMonth=d?e.getMonth():0;a.currentYear=d?e.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,
+c,d){var e=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},g=function(c){try{return b.datepicker.parseDate(b.datepicker._get(a,"dateFormat"),c,b.datepicker._getFormatConfig(a))}catch(d){}for(var e=(c.toLowerCase().match(/^c/)?b.datepicker._getDate(a):null)||new Date,g=e.getFullYear(),h=e.getMonth(),e=e.getDate(),i=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=i.exec(c);l;){switch(l[2]||"d"){case "d":case "D":e+=parseInt(l[1],10);break;case "w":case "W":e+=7*parseInt(l[1],10);break;case "m":case "M":h+=
+parseInt(l[1],10);e=Math.min(e,b.datepicker._getDaysInMonth(g,h));break;case "y":case "Y":g+=parseInt(l[1],10),e=Math.min(e,b.datepicker._getDaysInMonth(g,h))}l=i.exec(c)}return new Date(g,h,e)};if(c=(c=null==c||""===c?d:"string"==typeof c?g(c):"number"==typeof c?isNaN(c)?d:e(c):new Date(c.getTime()))&&"Invalid Date"==c.toString()?d:c)c.setHours(0),c.setMinutes(0),c.setSeconds(0),c.setMilliseconds(0);return this._daylightSavingAdjust(c)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(12<
+a.getHours()?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,g=a.selectedYear,b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();(e!=a.selectedMonth||g!=a.selectedYear)&&!c&&this._notifyChange(a);this._adjustInstDate(a);a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
+a.input&&""==a.input.val()?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var c=new Date,c=this._daylightSavingAdjust(new Date(c.getFullYear(),c.getMonth(),c.getDate())),d=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),g=this._get(a,"hideIfNoPrevNext"),m=this._get(a,"navigationAsDateFormat"),p=this._getNumberOfMonths(a),n=this._get(a,"showCurrentAtPos"),q=this._get(a,"stepMonths"),o=1!=p[0]||1!=p[1],w=this._daylightSavingAdjust(!a.currentDay?
+new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),r=this._getMinMaxDate(a,"min"),u=this._getMinMaxDate(a,"max"),n=a.drawMonth-n,s=a.drawYear;0>n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&v<r?r:v;this._daylightSavingAdjust(new Date(s,n,1))>v;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)),
+v=this._canAdjustMonth(a,-1,s,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+h+".datepicker._adjustDate('#"+a.id+"', -"+q+", 'M');\" title=\""+v+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"e":"w")+'">'+v+"</span></a>":g?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+v+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"e":"w")+'">'+v+"</span></a>",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s,
+n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+h+".datepicker._adjustDate('#"+a.id+"', +"+q+", 'M');\" title=\""+z+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"w":"e")+'">'+z+"</span></a>":g?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+z+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"w":"e")+'">'+z+"</span></a>",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&&
+a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+h+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"",e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(d?m:"")+(this._isInRange(a,z)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+h+".datepicker._gotoToday('#"+a.id+"');\">"+q+"</button>":"")+(d?"":m)+"</div>":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H<p[0];H++){var L=
+"";this.maxRows=4;for(var I=0;I<p[1];I++){var Q=this._daylightSavingAdjust(new Date(s,n,a.selectedDay)),A=" ui-corner-all",y="";if(o){y+='<div class="ui-datepicker-group';if(1<p[1])switch(I){case 0:y+=" ui-datepicker-group-first";A=" ui-corner-"+(d?"right":"left");break;case p[1]-1:y+=" ui-datepicker-group-last";A=" ui-corner-"+(d?"left":"right");break;default:y+=" ui-datepicker-group-middle",A=""}y+='">'}for(var y=y+('<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+A+'">'+(/all|left/.test(A)&&
+0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0<H||0<I,E,C)+'</div><table class="ui-datepicker-calendar"><thead><tr>'),D=q?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("<th"+(5<=(A+m+6)%7?' class="ui-datepicker-week-end"':"")+'><span title="'+z[x]+'">'+B[x]+"</span></th>");y+=D+"</tr></thead><tbody>";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,
+D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R<D;R++){for(var y=y+"<tr>",M=!q?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(x)+"</td>",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&x<r||u&&x>u,M=M+('<td class="'+(5<=(A+m+6)%7?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+
+(x.getTime()==Q.getTime()&&n==a.selectedMonth&&a._keyEvent||P.getTime()==x.getTime()&&P.getTime()==Q.getTime()?" "+this._dayOverClass:"")+(N?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!K?"":" "+J[1]+(x.getTime()==w.getTime()?" "+this._currentClass:"")+(x.getTime()==c.getTime()?" ui-datepicker-today":""))+'"'+((!F||K)&&J[2]?' title="'+J[2]+'"':"")+(N?"":' onclick="DP_jQuery_'+h+".datepicker._selectDay('#"+a.id+"',"+x.getMonth()+","+x.getFullYear()+', this);return false;"')+">"+(F&&!K?
+"&#xa0;":N?'<span class="ui-state-default">'+x.getDate()+"</span>":'<a class="ui-state-default'+(x.getTime()==c.getTime()?" ui-state-highlight":"")+(x.getTime()==w.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+x.getDate()+"</a>")+"</td>");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+"</tr>"}n++;11<n&&(n=0,s++);y+="</tbody></table>"+(o?"</div>"+(0<p[0]&&I==p[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");L+=y}G+=L}G+=e+(b.browser.msie&&
+7>parseInt(b.browser.version,10)&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='<div class="ui-datepicker-title">',u="";if(g||!q)u+='<span class="ui-datepicker-month">'+p[b]+"</span>";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('<select class="ui-datepicker-month" onchange="DP_jQuery_'+
+h+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+h+".datepicker._clickMonthYear('#"+a.id+"');\">"),v=0;12>v;v++)if((!p||v>=d.getMonth())&&(!s||v<=e.getMonth()))u+='<option value="'+v+'"'+(v==b?' selected="selected"':"")+">"+n[v]+"</option>";u+="</select>"}w||(r+=u+(g||!q||!o?"&#xa0;":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+='<span class="ui-datepicker-year">'+c+"</span>";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a=
+a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+h+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+h+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=n;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':
+"")+">"+b+"</option>";a.yearshtml+="</select>";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?"&#xa0;":"")+u);return r+"</div>"},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c||
+"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&b<c?c:b;return d&&c>d?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,
+b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=
+d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d,
+c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"==
+a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery);
+(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
+this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
+this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery);
+jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2],
+16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"===
+typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d?
+d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e=
+e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],
+darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],
+maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")||
+" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,
+[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c,
+remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c<b.length;c++)null!==b[c]&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)null!==b[c]&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){"toggle"==b&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case "top":c=0;break;case "middle":c=0.5;break;case "bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case "left":d=
+0;break;case "center":d=0.5;break;case "right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(a){if(a.parent().is(".ui-effects-wrapper"))return a.parent();var c={width:a.outerWidth(!0),height:a.outerHeight(!0),"float":a.css("float")},d=b("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})):
+(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0<unit[0]&&(e[c]=unit[0]*d+unit[1])});return e}});b.fn.extend({effect:function(a,
+c,d,f){var g=e.apply(this,arguments),h={options:g[1],duration:g[2],callback:g[3]},g=h.options.mode,i=b.effects[a];return b.fx.off||!i?g?this[g](h.duration,h.callback):this.each(function(){h.callback&&h.callback.call(this)}):i.call(this,h)},_show:b.fn.show,show:function(a){if(f(a))return this._show.apply(this,arguments);var b=e.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:b.fn.hide,hide:function(a){if(f(a))return this._hide.apply(this,arguments);var b=e.apply(this,
+arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:b.fn.toggle,toggle:function(a){if(f(a)||"boolean"===typeof a||b.isFunction(a))return this.__toggle.apply(this,arguments);var c=e.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(a){var c=this.css(a),d=[];b.each(["em","px","%","pt"],function(a,b){0<c.indexOf(b)&&(d=[parseFloat(c),b])});return d}});b.easing.jswing=b.easing.swing;b.extend(b.easing,{def:"easeOutQuad",swing:function(a,c,d,
+e,f){return b.easing[b.easing.def](a,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},
+easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/
+e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*
+b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);g<Math.abs(d)?(g=d,a=f/4):a=f/(2*Math.PI)*Math.asin(d/g);return-(g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f))+c},easeOutElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);g<Math.abs(d)?(g=d,a=f/4):a=f/(2*Math.PI)*
+Math.asin(d/g);return g*Math.pow(2,-10*b)*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInOutElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(2==(b/=e/2))return c+d;f||(f=e*0.3*1.5);g<Math.abs(d)?(g=d,a=f/4):a=f/(2*Math.PI)*Math.asin(d/g);return 1>b?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e,
+f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a,
+c,d,e,f){return c<f/2?0.5*b.easing.easeInBounce(a,2*c,0,e,f)+d:0.5*b.easing.easeOutBounce(a,2*c-f,0,e,f)+0.5*e+d}})}(jQuery);
+(function(b){b.effects.blind=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.direction||"vertical";b.effects.save(c,d);c.show();var e=b.effects.createWrapper(c).css({overflow:"hidden"}),f="vertical"==h?"height":"width",h="vertical"==h?e.height():e.width();"show"==g&&e.css(f,0);var i={};i[f]="show"==g?h:0;e.animate(i,a.duration,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,
+d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+(function(b){b.effects.bounce=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"effect"),h=a.options.direction||"up",e=a.options.distance||20,f=a.options.times||5,i=a.duration||250;/show|hide/.test(g)&&d.push("opacity");b.effects.save(c,d);c.show();b.effects.createWrapper(c);var j="up"==h||"down"==h?"top":"left",h="up"==h||"left"==h?"pos":"neg",e=a.options.distance||("top"==j?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/
+3);"show"==g&&c.css("opacity",0).css(j,"pos"==h?-e:e);"hide"==g&&(e/=2*f);"hide"!=g&&f--;if("show"==g){var k={opacity:1};k[j]=("pos"==h?"+=":"-=")+e;c.animate(k,i/2,a.options.easing);e/=2;f--}for(k=0;k<f;k++){var l={},m={};l[j]=("pos"==h?"-=":"+=")+e;m[j]=("pos"==h?"+=":"-=")+e;c.animate(l,i/2,a.options.easing).animate(m,i/2,a.options.easing);e="hide"==g?2*e:e/2}"hide"==g?(k={opacity:0},k[j]=("pos"==h?"-=":"+=")+e,c.animate(k,i/2,a.options.easing,function(){c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);
+a.callback&&a.callback.apply(this,arguments)})):(l={},m={},l[j]=("pos"==h?"-=":"+=")+e,m[j]=("pos"==h?"+=":"-=")+e,c.animate(l,i/2,a.options.easing).animate(m,i/2,a.options.easing,function(){b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments)}));c.queue("fx",function(){c.dequeue()});c.dequeue()})}})(jQuery);
+(function(b){b.effects.clip=function(a){return this.queue(function(){var c=b(this),d="position top bottom left right height width".split(" "),g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.direction||"vertical";b.effects.save(c,d);c.show();var e=b.effects.createWrapper(c).css({overflow:"hidden"}),e="IMG"==c[0].tagName?e:c,f="vertical"==h?"height":"width",i="vertical"==h?"top":"left",h="vertical"==h?e.height():e.width();"show"==g&&(e.css(f,0),e.css(i,h/2));var j={};j[f]="show"==g?h:0;j[i]=
+"show"==g?0:h/2;e.animate(j,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.drop=function(a){return this.queue(function(){var c=b(this),d="position top bottom left right opacity".split(" "),g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.direction||"left";b.effects.save(c,d);c.show();b.effects.createWrapper(c);var e="up"==h||"down"==h?"top":"left",h="up"==h||"left"==h?"pos":"neg",f=a.options.distance||("top"==e?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);"show"==g&&c.css("opacity",0).css(e,"pos"==h?-f:f);var i={opacity:"show"==
+g?1:0};i[e]=("show"==g?"pos"==h?"+=":"-=":"pos"==h?"-=":"+=")+f;c.animate(i,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode="toggle"==a.options.mode?b(this).is(":visible")?"hide":"show":a.options.mode;var g=b(this).show().css("visibility","hidden"),h=g.offset();h.top-=parseInt(g.css("marginTop"),10)||0;h.left-=parseInt(g.css("marginLeft"),10)||0;for(var e=g.outerWidth(!0),f=g.outerHeight(!0),i=0;i<c;i++)for(var j=
+0;j<d;j++)g.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+
+i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
+(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1],
+10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&&
+this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&&times--;for(d=0;d<times;d++)c.animate({opacity:animateTo},duration,a.options.easing),animateTo=(animateTo+1)%2;c.animate({opacity:animateTo},duration,
+a.options.easing,function(){animateTo==0&&c.hide();a.callback&&a.callback.apply(this,arguments)});c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);
+(function(b){b.effects.puff=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide"),g=parseInt(a.options.percent,10)||150,h=g/100,e={height:c.height(),width:c.width()};b.extend(a.options,{fade:!0,mode:d,percent:"hide"==d?g:100,from:"hide"==d?e:{height:e.height*h,width:e.width*h}});c.effect("scale",a.options,a.duration,a.callback);c.dequeue()})};b.effects.scale=function(a){return this.queue(function(){var c=b(this),d=b.extend(!0,{},a.options),g=b.effects.setMode(c,
+a.options.mode||"effect"),h=parseInt(a.options.percent,10)||(0==parseInt(a.options.percent,10)?0:"hide"==g?0:100),e=a.options.direction||"both",f=a.options.origin;"effect"!=g&&(d.origin=f||["middle","center"],d.restore=!0);f={height:c.height(),width:c.width()};c.from=a.options.from||("show"==g?{height:0,width:0}:f);c.to={height:f.height*("horizontal"!=e?h/100:1),width:f.width*("vertical"!=e?h/100:1)};if(a.options.fade&&("show"==g&&(c.from.opacity=0,c.to.opacity=1),"hide"==g))c.from.opacity=1,c.to.opacity=
+0;d.from=c.from;d.to=c.to;d.mode=g;c.effect("size",d,a.duration,a.callback);c.dequeue()})};b.effects.size=function(a){return this.queue(function(){var c=b(this),d="position top bottom left right width height overflow opacity".split(" "),g="position top bottom left right overflow opacity".split(" "),h=["width","height","overflow"],e=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=b.effects.setMode(c,
+a.options.mode||"effect"),k=a.options.restore||!1,l=a.options.scale||"both",m=a.options.origin,p={height:c.height(),width:c.width()};c.from=a.options.from||p;c.to=a.options.to||p;m&&(m=b.effects.getBaseline(m,p),c.from.top=(p.height-c.from.height)*m.y,c.from.left=(p.width-c.from.width)*m.x,c.to.top=(p.height-c.to.height)*m.y,c.to.left=(p.width-c.to.width)*m.x);var n=c.from.height/p.height,q=c.from.width/p.width,o=c.to.height/p.height,w=c.to.width/p.width;if("box"==l||"both"==l)if(n!=o&&(d=d.concat(f),
+c.from=b.effects.setTransition(c,f,n,c.from),c.to=b.effects.setTransition(c,f,o,c.to)),q!=w)d=d.concat(i),c.from=b.effects.setTransition(c,i,q,c.from),c.to=b.effects.setTransition(c,i,w,c.to);if(("content"==l||"both"==l)&&n!=o)d=d.concat(e),c.from=b.effects.setTransition(c,e,n,c.from),c.to=b.effects.setTransition(c,e,o,c.to);b.effects.save(c,k?d:g);c.show();b.effects.createWrapper(c);c.css("overflow","hidden").css(c.from);if("content"==l||"both"==l)f=f.concat(["marginTop","marginBottom"]).concat(e),
+i=i.concat(["marginLeft","marginRight"]),h=d.concat(f).concat(i),c.find("*[width]").each(function(){child=b(this);k&&b.effects.save(child,h);var c=child.height(),d=child.width();child.from={height:c*n,width:d*q};child.to={height:c*o,width:d*w};if(n!=o){child.from=b.effects.setTransition(child,f,n,child.from);child.to=b.effects.setTransition(child,f,o,child.to)}if(q!=w){child.from=b.effects.setTransition(child,i,q,child.from);child.to=b.effects.setTransition(child,i,w,child.to)}child.css(child.from);
+child.animate(child.to,a.duration,a.options.easing,function(){k&&b.effects.restore(child,h)})});c.animate(c.to,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity);j=="hide"&&c.hide();b.effects.restore(c,k?d:g);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.shake=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"];b.effects.setMode(c,a.options.mode||"effect");var g=a.options.direction||"left",h=a.options.distance||20,e=a.options.times||3,f=a.duration||a.options.duration||140;b.effects.save(c,d);c.show();b.effects.createWrapper(c);var i="up"==g||"down"==g?"top":"left",j="up"==g||"left"==g?"pos":"neg",g={},k={},l={};g[i]=("pos"==j?"-=":"+=")+h;k[i]=("pos"==j?"+=":"-=")+2*h;l[i]=("pos"==
+j?"-=":"+=")+2*h;c.animate(g,f,a.options.easing);for(h=1;h<e;h++)c.animate(k,f,a.options.easing).animate(l,f,a.options.easing);c.animate(k,f,a.options.easing).animate(g,f/2,a.options.easing,function(){b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments)});c.queue("fx",function(){c.dequeue()});c.dequeue()})}})(jQuery);
+(function(b){b.effects.slide=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"show"),h=a.options.direction||"left";b.effects.save(c,d);c.show();b.effects.createWrapper(c).css({overflow:"hidden"});var e="up"==h||"down"==h?"top":"left",h="up"==h||"left"==h?"pos":"neg",f=a.options.distance||("top"==e?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));"show"==g&&c.css(e,"pos"==h?isNaN(f)?"-"+f:-f:f);var i={};
+i[e]=("show"==g?"pos"==h?"+=":"-=":"pos"==h?"-=":"+=")+f;c.animate(i,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.transfer=function(a){return this.queue(function(){var c=b(this),d=b(a.options.to),g=d.offset(),d={top:g.top,left:g.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=b('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+/*
+ * jQuery Highlight plugin
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d<a.childNodes.length;d++)d+=jQuery.highlight(a.childNodes[d],c,b,e);return 0}});
+jQuery.fn.unhighlight=function(a){var c={className:"highlight",element:"span"};jQuery.extend(c,a);return this.find(c.element+"."+c.className).each(function(){var b=this.parentNode;b.replaceChild(this.firstChild,this);b.normalize()}).end()};
+jQuery.fn.highlight=function(a,c){var b={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(b,c);if(a.constructor===String)a=[a];a=jQuery.grep(a,function(f){return f!=""});if(a.length==0)return this;var e=b.caseSensitive?"":"i",d="("+a.join("|")+")";if(b.wordsOnly)d="\\b"+d+"\\b";var g=RegExp(d,e);return this.each(function(){jQuery.highlight(this,g,b.element,b.className)})};
diff --git a/webhelp/docs/common/jquery/layout/jquery.layout.js b/webhelp/docs/common/jquery/layout/jquery.layout.js
new file mode 100644
index 0000000..14e30a7
--- /dev/null
+++ b/webhelp/docs/common/jquery/layout/jquery.layout.js
@@ -0,0 +1,5449 @@
+/**
+ * @preserve jquery.layout 1.3.0 - Release Candidate 30.51
+ * $Date: 2012-05-12 08:00:00 (Sat, 12 May 2012) $
+ * $Rev: 303005 $
+ *
+ * Copyright (c) 2012
+ * Fabrizio Balliano (http://www.fabrizioballiano.net)
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * Changelog: http://layout.jquery-dev.net/changelog.cfm#1.3.0.rc30.5
+ *
+ * Docs: http://layout.jquery-dev.net/documentation.html
+ * Tips: http://layout.jquery-dev.net/tips.html
+ * Help: http://groups.google.com/group/jquery-ui-layout
+ */
+
+/* JavaDoc Info: http://code.google.com/closure/compiler/docs/js-for-compiler.html
+ * {!Object} non-nullable type (never NULL)
+ * {?string} nullable type (sometimes NULL) - default for {Object}
+ * {number=} optional parameter
+ * {*} ALL types
+ */
+
+// NOTE: For best readability, view with a fixed-width font and tabs equal to 4-chars
+
+;(function ($) {
+
+// alias Math methods - used a lot!
+var min = Math.min
+, max = Math.max
+, round = Math.floor
+;
+function isStr (v) { return $.type(v) === "string"; }
+
+function runPluginCallbacks (Instance, a_fn) {
+ if ($.isArray(a_fn))
+ for (var i=0, c=a_fn.length; i<c; i++) {
+ var fn = a_fn[i];
+ try {
+ if (isStr(fn)) // 'name' of a function
+ fn = eval(fn);
+ if ($.isFunction(fn))
+ fn( Instance );
+ } catch (ex) {}
+ }
+};
+
+
+
+/*
+ * GENERIC $.layout METHODS - used by all layouts
+ */
+$.layout = {
+
+ version: "1.3.rc30.51"
+, revision: 0.033005 // 1.3.0 final = 1.0300 - major(n+).minor(nn)+patch(nn+)
+
+ // LANGUAGE CUSTOMIZATION
+, language: {
+ // Tips and messages for resizers, togglers, custom buttons, etc.
+ Open: "Open" // eg: "Open Pane"
+ , Close: "Close"
+ , Resize: "Resize"
+ , Slide: "Slide Open"
+ , Pin: "Pin"
+ , Unpin: "Un-Pin"
+ , noRoomToOpenTip: "Not enough room to show this pane."
+ , minSizeWarning: "Panel has reached its minimum size"
+ , maxSizeWarning: "Panel has reached its maximum size"
+ // Developer error messages
+ , pane: "pane" // description of "layout pane element"
+ , selector: "selector" // description of "jQuery-selector"
+ , errButton: "Error Adding Button \n\nInvalid "
+ , errContainerMissing: "UI Layout Initialization Error\n\nThe specified layout-container does not exist."
+ , errCenterPaneMissing: "UI Layout Initialization Error\n\nThe center-pane element does not exist.\n\nThe center-pane is a required element."
+ , errContainerHeight: "UI Layout Initialization Warning\n\nThe layout-container \"CONTAINER\" has no height.\n\nTherefore the layout is 0-height and hence 'invisible'!"
+ }
+
+ // can update code here if $.browser is phased out
+, browser: {
+ mozilla: !!$.browser.mozilla
+ , webkit: !!$.browser.webkit || !!$.browser.safari // webkit = jQ 1.4
+ , msie: !!$.browser.msie
+ , isIE6: !!$.browser.msie && $.browser.version == 6
+ , version: $.browser.version // not used in Layout core, but may be used by plugins
+ }
+
+ // *PREDEFINED* EFFECTS & DEFAULTS
+ // MUST list effect here - OR MUST set an fxSettings option (can be an empty hash: {})
+, effects: {
+
+ // Pane Open/Close Animations
+ slide: {
+ all: { duration: "fast" } // eg: duration: 1000, easing: "easeOutBounce"
+ , north: { direction: "up" }
+ , south: { direction: "down" }
+ , east: { direction: "right"}
+ , west: { direction: "left" }
+ }
+ , drop: {
+ all: { duration: "slow" }
+ , north: { direction: "up" }
+ , south: { direction: "down" }
+ , east: { direction: "right"}
+ , west: { direction: "left" }
+ }
+ , scale: {
+ all: { duration: "fast" }
+ }
+ // these are not recommended, but can be used
+ , blind: {}
+ , clip: {}
+ , explode: {}
+ , fade: {}
+ , fold: {}
+ , puff: {}
+
+ // Pane Resize Animations
+ , size: {
+ all: { easing: "swing" }
+ }
+ }
+
+ // INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
+, config: {
+ optionRootKeys: "effects,panes,north,south,west,east,center".split(",")
+ , allPanes: "north,south,west,east,center".split(",")
+ , borderPanes: "north,south,west,east".split(",")
+ , oppositeEdge: {
+ north: "south"
+ , south: "north"
+ , east: "west"
+ , west: "east"
+ }
+ // offscreen data
+ , offscreenCSS: { left: "-99999px", right: "auto" } // used by hide/close if useOffscreenClose=true
+ , offscreenReset: "offscreenReset" // key used for data
+ // CSS used in multiple places
+ , hidden: { visibility: "hidden" }
+ , visible: { visibility: "visible" }
+ // layout element settings
+ , resizers: {
+ cssReq: {
+ position: "absolute"
+ , padding: 0
+ , margin: 0
+ , fontSize: "1px"
+ , textAlign: "left" // to counter-act "center" alignment!
+ , overflow: "hidden" // prevent toggler-button from overflowing
+ // SEE $.layout.defaults.zIndexes.resizer_normal
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ background: "#DDD"
+ , border: "none"
+ }
+ }
+ , togglers: {
+ cssReq: {
+ position: "absolute"
+ , display: "block"
+ , padding: 0
+ , margin: 0
+ , overflow: "hidden"
+ , textAlign: "center"
+ , fontSize: "1px"
+ , cursor: "pointer"
+ , zIndex: 1
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ background: "#AAA"
+ }
+ }
+ , content: {
+ cssReq: {
+ position: "relative" /* contain floated or positioned elements */
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ overflow: "auto"
+ , padding: "10px"
+ }
+ , cssDemoPane: { // DEMO CSS - REMOVE scrolling from 'pane' when it has a content-div
+ overflow: "hidden"
+ , padding: 0
+ }
+ }
+ , panes: { // defaults for ALL panes - overridden by 'per-pane settings' below
+ cssReq: {
+ position: "absolute"
+ , margin: 0
+ // $.layout.defaults.zIndexes.pane_normal
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ padding: "10px"
+ , background: "#FFF"
+ , border: "1px solid #BBB"
+ , overflow: "auto"
+ }
+ }
+ , north: {
+ side: "Top"
+ , sizeType: "Height"
+ , dir: "horz"
+ , cssReq: {
+ top: 0
+ , bottom: "auto"
+ , left: 0
+ , right: 0
+ , width: "auto"
+ // height: DYNAMIC
+ }
+ }
+ , south: {
+ side: "Bottom"
+ , sizeType: "Height"
+ , dir: "horz"
+ , cssReq: {
+ top: "auto"
+ , bottom: 0
+ , left: 0
+ , right: 0
+ , width: "auto"
+ // height: DYNAMIC
+ }
+ }
+ , east: {
+ side: "Right"
+ , sizeType: "Width"
+ , dir: "vert"
+ , cssReq: {
+ left: "auto"
+ , right: 0
+ , top: "auto" // DYNAMIC
+ , bottom: "auto" // DYNAMIC
+ , height: "auto"
+ // width: DYNAMIC
+ }
+ }
+ , west: {
+ side: "Left"
+ , sizeType: "Width"
+ , dir: "vert"
+ , cssReq: {
+ left: 0
+ , right: "auto"
+ , top: "auto" // DYNAMIC
+ , bottom: "auto" // DYNAMIC
+ , height: "auto"
+ // width: DYNAMIC
+ }
+ }
+ , center: {
+ dir: "center"
+ , cssReq: {
+ left: "auto" // DYNAMIC
+ , right: "auto" // DYNAMIC
+ , top: "auto" // DYNAMIC
+ , bottom: "auto" // DYNAMIC
+ , height: "auto"
+ , width: "auto"
+ }
+ }
+ }
+
+ // CALLBACK FUNCTION NAMESPACE - used to store reusable callback functions
+, callbacks: {}
+
+, getParentPaneElem: function (el) {
+ // must pass either a container or pane element
+ var $el = $(el)
+ , layout = $el.data("layout") || $el.data("parentLayout");
+ if (layout) {
+ var $cont = layout.container;
+ // see if this container is directly-nested inside an outer-pane
+ if ($cont.data("layoutPane")) return $cont;
+ var $pane = $cont.closest("."+ $.layout.defaults.panes.paneClass);
+ // if a pane was found, return it
+ if ($pane.data("layoutPane")) return $pane;
+ }
+ return null;
+ }
+
+, getParentPaneInstance: function (el) {
+ // must pass either a container or pane element
+ var $pane = $.layout.getParentPaneElem(el);
+ return $pane ? $pane.data("layoutPane") : null;
+ }
+
+, getParentLayoutInstance: function (el) {
+ // must pass either a container or pane element
+ var $pane = $.layout.getParentPaneElem(el);
+ return $pane ? $pane.data("parentLayout") : null;
+ }
+
+, getEventObject: function (evt) {
+ return typeof evt === "object" && evt.stopPropagation ? evt : null;
+ }
+, parsePaneName: function (evt_or_pane) {
+ // getEventObject() automatically calls .stopPropagation(), WHICH MUST BE DONE!
+ var evt = $.layout.getEventObject( evt_or_pane );
+ if (evt) {
+ // ALWAYS stop propagation of events triggered in Layout!
+ evt.stopPropagation();
+ return $(this).data("layoutEdge");
+ }
+ else
+ return evt_or_pane;
+ }
+
+
+ // LAYOUT-PLUGIN REGISTRATION
+ // more plugins can added beyond this default list
+, plugins: {
+ draggable: !!$.fn.draggable // resizing
+ , effects: {
+ core: !!$.effects // animimations (specific effects tested by initOptions)
+ , slide: $.effects && $.effects.slide // default effect
+ }
+ }
+
+// arrays of plugin or other methods to be triggered for events in *each layout* - will be passed 'Instance'
+, onCreate: [] // runs when layout is just starting to be created - right after options are set
+, onLoad: [] // runs after layout container and global events init, but before initPanes is called
+, onReady: [] // runs after initialization *completes* - ie, after initPanes completes successfully
+, onDestroy: [] // runs after layout is destroyed
+, onUnload: [] // runs after layout is destroyed OR when page unloads
+, afterOpen: [] // runs after setAsOpen() completes
+, afterClose: [] // runs after setAsClosed() completes
+
+ /*
+ * GENERIC UTILITY METHODS
+ */
+
+ // calculate and return the scrollbar width, as an integer
+, scrollbarWidth: function () { return window.scrollbarWidth || $.layout.getScrollbarSize('width'); }
+, scrollbarHeight: function () { return window.scrollbarHeight || $.layout.getScrollbarSize('height'); }
+, getScrollbarSize: function (dim) {
+ var $c = $('<div style="position: absolute; top: -10000px; left: -10000px; width: 100px; height: 100px; overflow: scroll;"></div>').appendTo("body");
+ var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight };
+ $c.remove();
+ window.scrollbarWidth = d.width;
+ window.scrollbarHeight = d.height;
+ return dim.match(/^(width|height)$/) ? d[dim] : d;
+ }
+
+
+ /**
+ * Returns hash container 'display' and 'visibility'
+ *
+ * @see $.swap() - swaps CSS, runs callback, resets CSS
+ */
+, showInvisibly: function ($E, force) {
+ if (!$E) return {};
+ if (!$E.jquery) $E = $($E);
+ var CSS = {
+ display: $E.css('display')
+ , visibility: $E.css('visibility')
+ };
+ if (force || CSS.display === "none") { // only if not *already hidden*
+ $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured
+ return CSS;
+ }
+ else return {};
+ }
+
+ /**
+ * Returns data for setting size of an element (container or a pane).
+ *
+ * @see _create(), onWindowResize() for container, plus others for pane
+ * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc
+ */
+, getElementDimensions: function ($E) {
+ var
+ d = {} // dimensions hash
+ , x = d.css = {} // CSS hash
+ , i = {} // TEMP insets
+ , b, p // TEMP border, padding
+ , N = $.layout.cssNum
+ , off = $E.offset()
+ ;
+ d.offsetLeft = off.left;
+ d.offsetTop = off.top;
+
+ $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge
+ b = x["border" + e] = $.layout.borderWidth($E, e);
+ p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e);
+ i[e] = b + p; // total offset of content from outer side
+ d["inset"+ e] = p;
+ });
+
+ d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize
+ d.offsetHeight = $E.innerHeight(); // ditto
+ d.outerWidth = $E.outerWidth();
+ d.outerHeight = $E.outerHeight();
+ d.innerWidth = max(0, d.outerWidth - i.Left - i.Right);
+ d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom);
+
+ x.width = $E.width();
+ x.height = $E.height();
+ x.top = N($E,"top",true);
+ x.bottom = N($E,"bottom",true);
+ x.left = N($E,"left",true);
+ x.right = N($E,"right",true);
+
+ //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0;
+
+ return d;
+ }
+
+, getElementCSS: function ($E, list) {
+ var
+ CSS = {}
+ , style = $E[0].style
+ , props = list.split(",")
+ , sides = "Top,Bottom,Left,Right".split(",")
+ , attrs = "Color,Style,Width".split(",")
+ , p, s, a, i, j, k
+ ;
+ for (i=0; i < props.length; i++) {
+ p = props[i];
+ if (p.match(/(border|padding|margin)$/))
+ for (j=0; j < 4; j++) {
+ s = sides[j];
+ if (p === "border")
+ for (k=0; k < 3; k++) {
+ a = attrs[k];
+ CSS[p+s+a] = style[p+s+a];
+ }
+ else
+ CSS[p+s] = style[p+s];
+ }
+ else
+ CSS[p] = style[p];
+ };
+ return CSS
+ }
+
+ /**
+ * Return the innerWidth for the current browser/doctype
+ *
+ * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+ * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
+ * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized
+ * @return {number} Returns the innerWidth of the elem by subtracting padding and borders
+ */
+, cssWidth: function ($E, outerWidth) {
+ var
+ b = $.layout.borderWidth
+ , n = $.layout.cssNum
+ ;
+ // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed
+ if (outerWidth <= 0) return 0;
+
+ if (!$.support.boxModel) return outerWidth;
+
+ // strip border and padding from outerWidth to get CSS Width
+ var W = outerWidth
+ - b($E, "Left")
+ - b($E, "Right")
+ - n($E, "paddingLeft")
+ - n($E, "paddingRight")
+ ;
+
+ return max(0,W);
+ }
+
+ /**
+ * Return the innerHeight for the current browser/doctype
+ *
+ * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+ * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
+ * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized
+ * @return {number} Returns the innerHeight of the elem by subtracting padding and borders
+ */
+, cssHeight: function ($E, outerHeight) {
+ var
+ b = $.layout.borderWidth
+ , n = $.layout.cssNum
+ ;
+ // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed
+ if (outerHeight <= 0) return 0;
+
+ if (!$.support.boxModel) return outerHeight;
+
+ // strip border and padding from outerHeight to get CSS Height
+ var H = outerHeight
+ - b($E, "Top")
+ - b($E, "Bottom")
+ - n($E, "paddingTop")
+ - n($E, "paddingBottom")
+ ;
+
+ return max(0,H);
+ }
+
+ /**
+ * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist
+ *
+ * @see Called by many methods
+ * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
+ * @param {string} prop The name of the CSS property, eg: top, width, etc.
+ * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0
+ * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width)
+ */
+, cssNum: function ($E, prop, allowAuto) {
+ if (!$E.jquery) $E = $($E);
+ var CSS = $.layout.showInvisibly($E)
+ , p = $.curCSS($E[0], prop, true)
+ , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0);
+ $E.css( CSS ); // RESET
+ return v;
+ }
+
+, borderWidth: function (el, side) {
+ if (el.jquery) el = el[0];
+ var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left
+ return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0);
+ }
+
+ /**
+ * Mouse-tracking utility - FUTURE REFERENCE
+ *
+ * init: if (!window.mouse) {
+ * window.mouse = { x: 0, y: 0 };
+ * $(document).mousemove( $.layout.trackMouse );
+ * }
+ *
+ * @param {Object} evt
+ *
+, trackMouse: function (evt) {
+ window.mouse = { x: evt.clientX, y: evt.clientY };
+ }
+ */
+
+ /**
+ * SUBROUTINE for preventPrematureSlideClose option
+ *
+ * @param {Object} evt
+ * @param {Object=} el
+ */
+, isMouseOverElem: function (evt, el) {
+ var
+ $E = $(el || this)
+ , d = $E.offset()
+ , T = d.top
+ , L = d.left
+ , R = L + $E.outerWidth()
+ , B = T + $E.outerHeight()
+ , x = evt.pageX // evt.clientX ?
+ , y = evt.pageY // evt.clientY ?
+ ;
+ // if X & Y are < 0, probably means is over an open SELECT
+ return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B));
+ }
+
+ /**
+ * Message/Logging Utility
+ *
+ * @example $.layout.msg("My message"); // log text
+ * @example $.layout.msg("My message", true); // alert text
+ * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title
+ * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR-
+ * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data
+ *
+ * @param {(Object|string)} info String message OR Hash/Array
+ * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped
+ * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped
+ * @param {Object=} [debutOpts={}] Extra options for debug output
+ */
+, msg: function (info, popup, debugTitle, debugOpts) {
+ if ($.isPlainObject(info) && window.debugData) {
+ if (typeof popup === "string") {
+ debugOpts = debugTitle;
+ debugTitle = popup;
+ }
+ else if (typeof debugTitle === "object") {
+ debugOpts = debugTitle;
+ debugTitle = null;
+ }
+ var t = debugTitle || "log( <object> )"
+ , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts);
+ if (popup === true || o.display)
+ debugData( info, t, o );
+ else if (window.console)
+ console.log(debugData( info, t, o ));
+ }
+ else if (popup)
+ alert(info);
+ else if (window.console)
+ console.log(info);
+ else {
+ var id = "#layoutLogger"
+ , $l = $(id);
+ if (!$l.length)
+ $l = createLog();
+ $l.children("ul").append('<li style="padding: 4px 10px; margin: 0; border-top: 1px solid #CCC;">'+ info.replace(/\</g,"&lt;").replace(/\>/g,"&gt;") +'</li>');
+ }
+
+ function createLog () {
+ var pos = $.support.fixedPosition ? 'fixed' : 'absolute'
+ , $e = $('<div id="layoutLogger" style="position: '+ pos +'; top: 5px; z-index: 999999; max-width: 25%; overflow: hidden; border: 1px solid #000; border-radius: 5px; background: #FBFBFB; box-shadow: 0 2px 10px rgba(0,0,0,0.3);">'
+ + '<div style="font-size: 13px; font-weight: bold; padding: 5px 10px; background: #F6F6F6; border-radius: 5px 5px 0 0; cursor: move;">'
+ + '<span style="float: right; padding-left: 7px; cursor: pointer;" title="Remove Console" onclick="$(this).closest(\'#layoutLogger\').remove()">X</span>Layout console.log</div>'
+ + '<ul style="font-size: 13px; font-weight: none; list-style: none; margin: 0; padding: 0 0 2px;"></ul>'
+ + '</div>'
+ ).appendTo("body");
+ $e.css('left', $(window).width() - $e.outerWidth() - 5)
+ if ($.ui.draggable) $e.draggable({ handle: ':first-child' });
+ return $e;
+ };
+ }
+
+};
+
+var lang = $.layout.language; // alias used in defaults...
+
+// DEFAULT OPTIONS - CHANGE IF DESIRED
+$.layout.defaults = {
+/*
+ * LAYOUT & LAYOUT-CONTAINER OPTIONS
+ * - none of these options are applicable to individual panes
+ */
+ name: "" // Not required, but useful for buttons and used for the state-cookie
+, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested
+, containerClass: "ui-layout-container" // layout-container element
+, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark)
+, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event
+, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky
+, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized
+, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific
+, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific
+, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements
+, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized
+, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload
+, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload
+, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them
+, initPanes: true // false = DO NOT initialize the panes onLoad - will init later
+, showErrorMessages: true // enables fatal error messages to warn developers of common errors
+, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code!
+// Changing this zIndex value will cause other zIndex values to automatically change
+, zIndex: null // the PANE zIndex - resizers and masks will be +1
+// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships
+, zIndexes: { // set _default_ z-index values here...
+ pane_normal: 0 // normal z-index for panes
+ , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing
+ , resizer_normal: 2 // normal z-index for resizer-bars
+ , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open'
+ , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer
+ , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged'
+ }
+/*
+ * PANE DEFAULT SETTINGS
+ * - settings under the 'panes' key become the default settings for *all panes*
+ * - ALL pane-options can also be set specifically for each panes, which will override these 'default values'
+ */
+, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings'
+ applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity
+ , closable: true // pane can open & close
+ , resizable: true // when open, pane can be resized
+ , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out
+ , initClosed: false // true = init pane as 'closed'
+ , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing
+ // SELECTORS
+ //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane
+ , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane!
+ , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content'
+ , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector)
+ // GENERIC ROOT-CLASSES - for auto-generated classNames
+ , paneClass: "ui-layout-pane" // Layout Pane
+ , resizerClass: "ui-layout-resizer" // Resizer Bar
+ , togglerClass: "ui-layout-toggler" // Toggler Button
+ , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin'
+ // ELEMENT SIZE & SPACING
+ //, size: 100 // MUST be pane-specific -initial size of pane
+ , minSize: 0 // when manually resizing a pane
+ , maxSize: 0 // ditto, 0 = no limit
+ , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open'
+ , spacing_closed: 6 // ditto - when pane is 'closed'
+ , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides
+ , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden'
+ , togglerAlign_open: "center" // top/left, bottom/right, center, OR...
+ , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right
+ , togglerTip_open: lang.Close // Toggler tool-tip (title)
+ , togglerTip_closed: lang.Open // ditto
+ , togglerContent_open: "" // text or HTML to put INSIDE the toggler
+ , togglerContent_closed: "" // ditto
+ // RESIZING OPTIONS
+ , resizerDblClickToggle: true //
+ , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes
+ , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed
+ , resizerDragOpacity: 1 // option for ui.draggable
+ //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar
+ , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES
+ , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask
+ , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes
+ , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20]
+ , livePaneResizing: false // true = LIVE Resizing as resizer is dragged
+ , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged
+ , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance
+ // TIPS & MESSAGES - also see lang object
+ , noRoomToOpenTip: lang.noRoomToOpenTip
+ , resizerTip: lang.Resize // Resizer tool-tip (title)
+ , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed
+ , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding'
+ , slideTrigger_open: "click" // click, dblclick, mouseenter
+ , slideTrigger_close: "mouseleave"// click, mouseleave
+ , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open
+ , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!)
+ , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show?
+ , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening
+ , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
+ // HOT-KEYS & MISC
+ , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver
+ , enableCursorHotkey: true // enabled 'cursor' hotkeys
+ //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character
+ , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT'
+ // PANE ANIMATION
+ // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed
+ , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size'
+ , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration
+ , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 }
+ , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation
+ , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called
+ /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set:
+ fxName_open: "slide" // 'Open' pane animation
+ fnName_close: "slide" // 'Close' pane animation
+ fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true
+ fxSpeed_open: null
+ fxSpeed_close: null
+ fxSpeed_size: null
+ fxSettings_open: {}
+ fxSettings_close: {}
+ fxSettings_size: {}
+ */
+ // CHILD/NESTED LAYOUTS
+ , childOptions: null // Layout-options for nested/child layout - even {} is valid as options
+ , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization
+ , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed
+ , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized
+ // PANE CALLBACKS
+ , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes
+ , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true
+ , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start
+ , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end
+ , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start
+ , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end
+ , onopen_start: null // CALLBACK when pane STARTS to Open
+ , onopen_end: null // CALLBACK when pane ENDS being Opened
+ , onclose_start: null // CALLBACK when pane STARTS to Close
+ , onclose_end: null // CALLBACK when pane ENDS being Closed
+ , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON***
+ , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON***
+ , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS
+ , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS
+ , onswap_start: null // CALLBACK when pane STARTS to Swap
+ , onswap_end: null // CALLBACK when pane ENDS being Swapped
+ , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized
+ , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized
+ }
+/*
+ * PANE-SPECIFIC SETTINGS
+ * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes'
+ * - all options under the 'panes' key can also be set specifically for any pane
+ * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane
+ */
+, north: {
+ paneSelector: ".ui-layout-north"
+ , size: "auto" // eg: "auto", "30%", .30, 200
+ , resizerCursor: "n-resize" // custom = url(myCursor.cur)
+ , customHotkey: "" // EITHER a charCode (43) OR a character ("o")
+ }
+, south: {
+ paneSelector: ".ui-layout-south"
+ , size: "auto"
+ , resizerCursor: "s-resize"
+ , customHotkey: ""
+ }
+, east: {
+ paneSelector: ".ui-layout-east"
+ , size: 200
+ , resizerCursor: "e-resize"
+ , customHotkey: ""
+ }
+, west: {
+ paneSelector: ".ui-layout-west"
+ , size: 200
+ , resizerCursor: "w-resize"
+ , customHotkey: ""
+ }
+, center: {
+ paneSelector: ".ui-layout-center"
+ , minWidth: 0
+ , minHeight: 0
+ }
+};
+
+$.layout.optionsMap = {
+ // layout/global options - NOT pane-options
+ layout: ("stateManagement,effects,zIndexes,"
+ + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages,"
+ + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay,"
+ + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",")
+// borderPanes: [ ALL options that are NOT specified as 'layout' ]
+ // default.panes options that apply to the center-pane (most options apply _only_ to border-panes)
+, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad,"
+ + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing,"
+ + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout,"
+ + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",")
+ // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key
+, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",")
+};
+
+/**
+ * Processes options passed in converts flat-format data into subkey (JSON) format
+ * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName
+ * Plugins may also call this method so they can transform their own data
+ *
+ * @param {!Object} hash Data/options passed by user - may be a single level or nested levels
+ * @return {Object} Returns hash of minWidth & minHeight
+ */
+$.layout.transformData = function (hash) {
+ var json = { panes: {}, center: {} } // init return object
+ , data, branch, optKey, keys, key, val, i, c;
+
+ if (typeof hash !== "object") return json; // no options passed
+
+ // convert all 'flat-keys' to 'sub-key' format
+ for (optKey in hash) {
+ branch = json;
+ data = $.layout.optionsMap.layout;
+ val = hash[ optKey ];
+ keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration
+ c = keys.length - 1;
+ // convert underscore-delimited to subkeys
+ for (i=0; i <= c; i++) {
+ key = keys[i];
+ if (i === c)
+ branch[key] = val;
+ else if (!branch[key])
+ branch[key] = {}; // create the subkey
+ // recurse to sub-key for next loop - if not done
+ branch = branch[key];
+ }
+ }
+
+ return json;
+}
+
+// INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
+$.layout.backwardCompatibility = {
+ // data used by renameOldOptions()
+ map: {
+ // OLD Option Name: NEW Option Name
+ applyDefaultStyles: "applyDemoStyles"
+ , resizeNestedLayout: "resizeChildLayout"
+ , resizeWhileDragging: "livePaneResizing"
+ , resizeContentWhileDragging: "liveContentResizing"
+ , triggerEventsWhileDragging: "triggerEventsDuringLiveResize"
+ , maskIframesOnResize: "maskContents"
+ , useStateCookie: "stateManagement.enabled"
+ , "cookie.autoLoad": "stateManagement.autoLoad"
+ , "cookie.autoSave": "stateManagement.autoSave"
+ , "cookie.keys": "stateManagement.stateKeys"
+ , "cookie.name": "stateManagement.cookie.name"
+ , "cookie.domain": "stateManagement.cookie.domain"
+ , "cookie.path": "stateManagement.cookie.path"
+ , "cookie.expires": "stateManagement.cookie.expires"
+ , "cookie.secure": "stateManagement.cookie.secure"
+ }
+ /**
+ * @param {Object} opts
+ */
+, renameOptions: function (opts) {
+ var map = $.layout.backwardCompatibility.map
+ , oldData, newData, value
+ ;
+ for (var itemPath in map) {
+ oldData = getBranch( itemPath );
+ value = oldData.branch[ oldData.key ]
+ if (value !== undefined) {
+ newData = getBranch( map[itemPath], true )
+ newData.branch[ newData.key ] = value;
+ delete oldData.branch[ oldData.key ];
+ }
+ }
+
+ /**
+ * @param {string} path
+ * @param {boolean=} [create=false] Create path if does not exist
+ */
+ function getBranch (path, create) {
+ var a = path.split(".") // split keys into array
+ , c = a.length - 1
+ , D = { branch: opts, key: a[c] } // init branch at top & set key (last item)
+ , i = 0, k, undef;
+ for (; i<c; i++) { // skip the last key (data)
+ k = a[i];
+ if (D.branch[ k ] == undefined) { // child-key does not exist
+ if (create) {
+ D.branch = D.branch[ k ] = {}; // create child-branch
+ }
+ else // can't go any farther
+ D.branch = {}; // branch is undefined
+ }
+ else
+ D.branch = D.branch[ k ]; // get child-branch
+ }
+ return D;
+ };
+ }
+ /**
+ * @param {Object} opts
+ */
+, renameAllOptions: function (opts) {
+ var ren = $.layout.backwardCompatibility.renameOptions;
+ // rename root (layout) options
+ ren( opts );
+ // rename 'defaults' to 'panes'
+ if (opts.defaults) {
+ if (typeof opts.panes !== "object")
+ opts.panes = {};
+ $.extend(true, opts.panes, opts.defaults);
+ delete opts.defaults;
+ }
+ // rename options in the the options.panes key
+ if (opts.panes) ren( opts.panes );
+ // rename options inside *each pane key*, eg: options.west
+ $.each($.layout.config.allPanes, function (i, pane) {
+ if (opts[pane]) ren( opts[pane] );
+ });
+ return opts;
+ }
+};
+
+
+
+/* ============================================================
+ * BEGIN WIDGET: $( selector ).layout( {options} );
+ * ============================================================
+ */
+$.fn.layout = function (opts) {
+ var
+
+ // local aliases to global data
+ browser = $.layout.browser
+, lang = $.layout.language // internal alias
+, _c = $.layout.config
+
+ // local aliases to utlity methods
+, cssW = $.layout.cssWidth
+, cssH = $.layout.cssHeight
+, elDims = $.layout.getElementDimensions
+, elCSS = $.layout.getElementCSS
+, evtObj = $.layout.getEventObject
+, evtPane = $.layout.parsePaneName
+
+/**
+ * options - populated by initOptions()
+ */
+, options = $.extend(true, {}, $.layout.defaults)
+, effects = options.effects = $.extend(true, {}, $.layout.effects)
+
+/**
+ * layout-state object
+ */
+, state = {
+ // generate unique ID to use for event.namespace so can unbind only events added by 'this layout'
+ id: "layout"+ $.now() // code uses alias: sID
+ , initialized: false
+ , container: {} // init all keys
+ , north: {}
+ , south: {}
+ , east: {}
+ , west: {}
+ , center: {}
+ }
+
+/**
+ * parent/child-layout pointers
+ */
+//, hasParentLayout = false - exists ONLY inside Instance so can be set externally
+, children = {
+ north: null
+ , south: null
+ , east: null
+ , west: null
+ , center: null
+ }
+
+/*
+ * ###########################
+ * INTERNAL HELPER FUNCTIONS
+ * ###########################
+ */
+
+ /**
+ * Manages all internal timers
+ */
+, timer = {
+ data: {}
+ , set: function (s, fn, ms) { timer.clear(s); timer.data[s] = setTimeout(fn, ms); }
+ , clear: function (s) { var t=timer.data; if (t[s]) {clearTimeout(t[s]); delete t[s];} }
+ }
+
+, _log = function (msg, popup) {
+ $.layout.msg( options.name +' / '+ msg, (popup && options.showErrorMessages) );
+ }
+
+ /**
+ * Executes a Callback function after a trigger event, like resize, open or close
+ *
+ * @param {string} evtName Name of the layout callback, eg "onresize_start"
+ * @param {?string} pane This is passed only so we can pass the 'pane object' to the callback
+ * @param {?boolean} skipBoundEvents Accepts a function name, OR a comma-delimited array: [0]=function name, [1]=argument
+ */
+, _runCallbacks = function (evtName, pane, skipBoundEvents) {
+ var o = pane ? options[pane] : options
+ // names like onopen and onopen_end separate are interchangeable in options...
+ , lng = evtName + (evtName.match(/_/) ? "" : "_end")
+ , shrt = lng.match(/_end$/) ? lng.substr(0, lng.length - 4) : ""
+ , fn = o[lng]
+ , retVal = "NC" // NC = No Callback
+ , args = []
+ ;
+ if (!fn && shrt)
+ fn = o[shrt];
+
+ // first trigger the callback set in the options
+ if (fn) {
+ //try {
+ // convert function name (string) to function object
+ if (isStr( fn )) {
+ if (fn.match(/,/)) {
+ // function name cannot contain a comma,
+ // so must be a function name AND a parameter to pass
+ args = fn.split(",")
+ , fn = eval(args[0]);
+ }
+ else // just the name of an external function?
+ fn = eval(fn);
+ }
+ // execute the callback, if exists
+ if ($.isFunction( fn )) {
+ if (args.length)
+ retVal = fn(args[1]); // pass the argument parsed from 'list'
+ else if (pane && $Ps[pane])
+ // pass data: pane-name, pane-element, pane-state, pane-options, and layout-name
+ retVal = fn( pane, $Ps[pane], state[pane], options[pane], options.name );
+ else // must be a layout/container callback - pass suitable info
+ retVal = fn( Instance, state, options, options.name );
+ }
+ //}
+ //catch (ex) {}
+ }
+
+ // trigger additional events bound directly to the pane
+ if (!skipBoundEvents && retVal !== false) {
+ if (pane) { // PANE events can be bound to each pane-elements
+ $Ps[pane].triggerHandler('layoutpane'+ lng, [ pane, $Ps[pane], state[pane], options[pane], options.name ]);
+ if (shrt)
+ $Ps[pane].triggerHandler('layoutpane'+ shrt, [ pane, $Ps[pane], state[pane], options[pane], options.name ]);
+ }
+ else // LAYOUT events can be bound to the container-element
+ $N.triggerHandler('layout'+ lng, [ pane, $Ps[pane], state[pane], options[pane], options.name ]);
+ }
+
+ // ALWAYS resizeChildLayout after a resize event - even during initialization
+ if (evtName === "onresize_end" || evtName === "onsizecontent_end")
+ resizeChildLayout(pane);
+
+ return retVal;
+ }
+
+
+ /**
+ * cure iframe display issues in IE & other browsers
+ */
+, _fixIframe = function (pane) {
+ if (browser.mozilla) return; // skip FireFox - it auto-refreshes iframes onShow
+ var $P = $Ps[pane];
+ // if the 'pane' is an iframe, do it
+ if (state[pane].tagName === "IFRAME")
+ $P.css(_c.hidden).css(_c.visible);
+ else // ditto for any iframes INSIDE the pane
+ $P.find('IFRAME').css(_c.hidden).css(_c.visible);
+ }
+
+ /**
+ * @param {string} pane Can accept ONLY a 'pane' (east, west, etc)
+ * @param {number=} outerSize (optional) Can pass a width, allowing calculations BEFORE element is resized
+ * @return {number} Returns the innerHeight/Width of el by subtracting padding and borders
+ */
+, cssSize = function (pane, outerSize) {
+ var fn = _c[pane].dir=="horz" ? cssH : cssW;
+ return fn($Ps[pane], outerSize);
+ }
+
+ /**
+ * @param {string} pane Can accept ONLY a 'pane' (east, west, etc)
+ * @return {Object} Returns hash of minWidth & minHeight
+ */
+, cssMinDims = function (pane) {
+ // minWidth/Height means CSS width/height = 1px
+ var $P = $Ps[pane]
+ , dir = _c[pane].dir
+ , d = {
+ minWidth: 1001 - cssW($P, 1000)
+ , minHeight: 1001 - cssH($P, 1000)
+ }
+ ;
+ if (dir === "horz") d.minSize = d.minHeight;
+ if (dir === "vert") d.minSize = d.minWidth;
+ return d;
+ }
+
+ // TODO: see if these methods can be made more useful...
+ // TODO: *maybe* return cssW/H from these so caller can use this info
+
+ /**
+ * @param {(string|!Object)} el
+ * @param {number=} outerWidth
+ * @param {boolean=} [autoHide=false]
+ */
+, setOuterWidth = function (el, outerWidth, autoHide) {
+ var $E = el, w;
+ if (isStr(el)) $E = $Ps[el]; // west
+ else if (!el.jquery) $E = $(el);
+ w = cssW($E, outerWidth);
+ $E.css({ width: w });
+ if (w > 0) {
+ if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) {
+ $E.show().data('autoHidden', false);
+ if (!browser.mozilla) // FireFox refreshes iframes - IE does not
+ // make hidden, then visible to 'refresh' display after animation
+ $E.css(_c.hidden).css(_c.visible);
+ }
+ }
+ else if (autoHide && !$E.data('autoHidden'))
+ $E.hide().data('autoHidden', true);
+ }
+
+ /**
+ * @param {(string|!Object)} el
+ * @param {number=} outerHeight
+ * @param {boolean=} [autoHide=false]
+ */
+, setOuterHeight = function (el, outerHeight, autoHide) {
+ var $E = el, h;
+ if (isStr(el)) $E = $Ps[el]; // west
+ else if (!el.jquery) $E = $(el);
+ h = cssH($E, outerHeight);
+ $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent
+ if (h > 0 && $E.innerWidth() > 0) {
+ if (autoHide && $E.data('autoHidden')) {
+ $E.show().data('autoHidden', false);
+ if (!browser.mozilla) // FireFox refreshes iframes - IE does not
+ $E.css(_c.hidden).css(_c.visible);
+ }
+ }
+ else if (autoHide && !$E.data('autoHidden'))
+ $E.hide().data('autoHidden', true);
+ }
+
+ /**
+ * @param {(string|!Object)} el
+ * @param {number=} outerSize
+ * @param {boolean=} [autoHide=false]
+ */
+, setOuterSize = function (el, outerSize, autoHide) {
+ if (_c[pane].dir=="horz") // pane = north or south
+ setOuterHeight(el, outerSize, autoHide);
+ else // pane = east or west
+ setOuterWidth(el, outerSize, autoHide);
+ }
+
+
+ /**
+ * Converts any 'size' params to a pixel/integer size, if not already
+ * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated
+ *
+ /**
+ * @param {string} pane
+ * @param {(string|number)=} size
+ * @param {string=} [dir]
+ * @return {number}
+ */
+, _parseSize = function (pane, size, dir) {
+ if (!dir) dir = _c[pane].dir;
+
+ if (isStr(size) && size.match(/%/))
+ size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal
+
+ if (size === 0)
+ return 0;
+ else if (size >= 1)
+ return parseInt(size, 10);
+
+ var o = options, avail = 0;
+ if (dir=="horz") // north or south or center.minHeight
+ avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0);
+ else if (dir=="vert") // east or west or center.minWidth
+ avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0);
+
+ if (size === -1) // -1 == 100%
+ return avail;
+ else if (size > 0) // percentage, eg: .25
+ return round(avail * size);
+ else if (pane=="center")
+ return 0;
+ else { // size < 0 || size=='auto' || size==Missing || size==Invalid
+ // auto-size the pane
+ var dim = (dir === "horz" ? "height" : "width")
+ , $P = $Ps[pane]
+ , $C = dim === 'height' ? $Cs[pane] : false
+ , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden
+ , szP = $P.css(dim) // SAVE current pane size
+ , szC = $C ? $C.css(dim) : 0 // SAVE current content size
+ ;
+ $P.css(dim, "auto");
+ if ($C) $C.css(dim, "auto");
+ size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE
+ $P.css(dim, szP).css(vis); // RESET size & visibility
+ if ($C) $C.css(dim, szC);
+ return size;
+ }
+ }
+
+ /**
+ * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added
+ *
+ * @param {(string|!Object)} pane
+ * @param {boolean=} [inclSpace=false]
+ * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser
+ */
+, getPaneSize = function (pane, inclSpace) {
+ var
+ $P = $Ps[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , oSp = (inclSpace ? o.spacing_open : 0)
+ , cSp = (inclSpace ? o.spacing_closed : 0)
+ ;
+ if (!$P || s.isHidden)
+ return 0;
+ else if (s.isClosed || (s.isSliding && inclSpace))
+ return cSp;
+ else if (_c[pane].dir === "horz")
+ return $P.outerHeight() + oSp;
+ else // dir === "vert"
+ return $P.outerWidth() + oSp;
+ }
+
+ /**
+ * Calculate min/max pane dimensions and limits for resizing
+ *
+ * @param {string} pane
+ * @param {boolean=} [slide=false]
+ */
+, setSizeLimits = function (pane, slide) {
+ if (!isInitialized()) return;
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , dir = c.dir
+ , side = c.side.toLowerCase()
+ , type = c.sizeType.toLowerCase()
+ , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param
+ , $P = $Ps[pane]
+ , paneSpacing = o.spacing_open
+ // measure the pane on the *opposite side* from this pane
+ , altPane = _c.oppositeEdge[pane]
+ , altS = state[altPane]
+ , $altP = $Ps[altPane]
+ , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth()))
+ , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0)
+ // limitSize prevents this pane from 'overlapping' opposite pane
+ , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth)
+ , minCenterDims = cssMinDims("center")
+ , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth)
+ // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them
+ , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing)))
+ , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize )
+ , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize )
+ , r = s.resizerPosition = {} // used to set resizing limits
+ , top = sC.insetTop
+ , left = sC.insetLeft
+ , W = sC.innerWidth
+ , H = sC.innerHeight
+ , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east
+ ;
+ switch (pane) {
+ case "north": r.min = top + minSize;
+ r.max = top + maxSize;
+ break;
+ case "west": r.min = left + minSize;
+ r.max = left + maxSize;
+ break;
+ case "south": r.min = top + H - maxSize - rW;
+ r.max = top + H - minSize - rW;
+ break;
+ case "east": r.min = left + W - maxSize - rW;
+ r.max = left + W - minSize - rW;
+ break;
+ };
+ }
+
+ /**
+ * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes
+ *
+ * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height
+ */
+, calcNewCenterPaneDims = function () {
+ var d = {
+ top: getPaneSize("north", true) // true = include 'spacing' value for pane
+ , bottom: getPaneSize("south", true)
+ , left: getPaneSize("west", true)
+ , right: getPaneSize("east", true)
+ , width: 0
+ , height: 0
+ };
+
+ // NOTE: sC = state.container
+ // calc center-pane outer dimensions
+ d.width = sC.innerWidth - d.left - d.right; // outerWidth
+ d.height = sC.innerHeight - d.bottom - d.top; // outerHeight
+ // add the 'container border/padding' to get final positions relative to the container
+ d.top += sC.insetTop;
+ d.bottom += sC.insetBottom;
+ d.left += sC.insetLeft;
+ d.right += sC.insetRight;
+
+ return d;
+ }
+
+
+ /**
+ * @param {!Object} el
+ * @param {boolean=} [allStates=false]
+ */
+, getHoverClasses = function (el, allStates) {
+ var
+ $El = $(el)
+ , type = $El.data("layoutRole")
+ , pane = $El.data("layoutEdge")
+ , o = options[pane]
+ , root = o[type +"Class"]
+ , _pane = "-"+ pane // eg: "-west"
+ , _open = "-open"
+ , _closed = "-closed"
+ , _slide = "-sliding"
+ , _hover = "-hover " // NOTE the trailing space
+ , _state = $El.hasClass(root+_closed) ? _closed : _open
+ , _alt = _state === _closed ? _open : _closed
+ , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover)
+ ;
+ if (allStates) // when 'removing' classes, also remove alternate-state classes
+ classes += (root+_alt+_hover) + (root+_pane+_alt+_hover);
+
+ if (type=="resizer" && $El.hasClass(root+_slide))
+ classes += (root+_slide+_hover) + (root+_pane+_slide+_hover);
+
+ return $.trim(classes);
+ }
+, addHover = function (evt, el) {
+ var $E = $(el || this);
+ if (evt && $E.data("layoutRole") === "toggler")
+ evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar
+ $E.addClass( getHoverClasses($E) );
+ }
+, removeHover = function (evt, el) {
+ var $E = $(el || this);
+ $E.removeClass( getHoverClasses($E, true) );
+ }
+
+, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter
+ if ($.fn.disableSelection)
+ $("body").disableSelection();
+ }
+, onResizerLeave = function (evt, el) {
+ var
+ e = el || this // el is only passed when called by the timer
+ , pane = $(e).data("layoutEdge")
+ , name = pane +"ResizerLeave"
+ ;
+ timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set
+ timer.clear(name); // cancel enableSelection timer - may re/set below
+ // this method calls itself on a timer because it needs to allow
+ // enough time for dragging to kick-in and set the isResizing flag
+ // dragging has a 100ms delay set, so this delay must be >100
+ if (!el) // 1st call - mouseleave event
+ timer.set(name, function(){ onResizerLeave(evt, e); }, 200);
+ // if user is resizing, then dragStop will enableSelection(), so can skip it here
+ else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer
+ $("body").enableSelection();
+ }
+
+/*
+ * ###########################
+ * INITIALIZATION METHODS
+ * ###########################
+ */
+
+ /**
+ * Initialize the layout - called automatically whenever an instance of layout is created
+ *
+ * @see none - triggered onInit
+ * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort
+ */
+, _create = function () {
+ // initialize config/options
+ initOptions();
+ var o = options;
+
+ // TEMP state so isInitialized returns true during init process
+ state.creatingLayout = true;
+
+ // init plugins for this layout, if there are any (eg: stateManagement)
+ runPluginCallbacks( Instance, $.layout.onCreate );
+
+ // options & state have been initialized, so now run beforeLoad callback
+ // onload will CANCEL layout creation if it returns false
+ if (false === _runCallbacks("onload_start"))
+ return 'cancel';
+
+ // initialize the container element
+ _initContainer();
+
+ // bind hotkey function - keyDown - if required
+ initHotkeys();
+
+ // bind window.onunload
+ $(window).bind("unload."+ sID, unload);
+
+ // init plugins for this layout, if there are any (eg: customButtons)
+ runPluginCallbacks( Instance, $.layout.onLoad );
+
+ // if layout elements are hidden, then layout WILL NOT complete initialization!
+ // initLayoutElements will set initialized=true and run the onload callback IF successful
+ if (o.initPanes) _initLayoutElements();
+
+ delete state.creatingLayout;
+
+ return state.initialized;
+ }
+
+ /**
+ * Initialize the layout IF not already
+ *
+ * @see All methods in Instance run this test
+ * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet)
+ */
+, isInitialized = function () {
+ if (state.initialized || state.creatingLayout) return true; // already initialized
+ else return _initLayoutElements(); // try to init panes NOW
+ }
+
+ /**
+ * Initialize the layout - called automatically whenever an instance of layout is created
+ *
+ * @see _create() & isInitialized
+ * @return An object pointer to the instance created
+ */
+, _initLayoutElements = function (retry) {
+ // initialize config/options
+ var o = options;
+
+ // CANNOT init panes inside a hidden container!
+ if (!$N.is(":visible")) {
+ // handle Chrome bug where popup window 'has no height'
+ // if layout is BODY element, try again in 50ms
+ // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html
+ if ( !retry && browser.webkit && $N[0].tagName === "BODY" )
+ setTimeout(function(){ _initLayoutElements(true); }, 50);
+ return false;
+ }
+
+ // a center pane is required, so make sure it exists
+ if (!getPane("center").length) {
+ if (options.showErrorMessages)
+ _log( lang.errCenterPaneMissing, true );
+ return false;
+ }
+
+ // TEMP state so isInitialized returns true during init process
+ state.creatingLayout = true;
+
+ // update Container dims
+ $.extend(sC, elDims( $N ));
+
+ // initialize all layout elements
+ initPanes(); // size & position panes - calls initHandles() - which calls initResizable()
+
+ if (o.scrollToBookmarkOnLoad) {
+ var l = self.location;
+ if (l.hash) l.replace( l.hash ); // scrollTo Bookmark
+ }
+
+ // check to see if this layout 'nested' inside a pane
+ if (Instance.hasParentLayout)
+ o.resizeWithWindow = false;
+ // bind resizeAll() for 'this layout instance' to window.resize event
+ else if (o.resizeWithWindow)
+ $(window).bind("resize."+ sID, windowResize);
+
+ delete state.creatingLayout;
+ state.initialized = true;
+
+ // init plugins for this layout, if there are any
+ runPluginCallbacks( Instance, $.layout.onReady );
+
+ // now run the onload callback, if exists
+ _runCallbacks("onload_end");
+
+ return true; // elements initialized successfully
+ }
+
+ /**
+ * Initialize nested layouts - called when _initLayoutElements completes
+ *
+ * NOT CURRENTLY USED
+ *
+ * @see _initLayoutElements
+ * @return An object pointer to the instance created
+ */
+, _initChildLayouts = function () {
+ $.each(_c.allPanes, function (idx, pane) {
+ if (options[pane].initChildLayout)
+ createChildLayout( pane );
+ });
+ }
+
+ /**
+ * Initialize nested layouts for a specific pane - can optionally pass layout-options
+ *
+ * @see _initChildLayouts
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions
+ * @return An object pointer to the layout instance created - or null
+ */
+, createChildLayout = function (evt_or_pane, opts) {
+ var pane = evtPane.call(this, evt_or_pane)
+ , $P = $Ps[pane]
+ , C = children
+ ;
+ if ($P) {
+ var $C = $Cs[pane]
+ , o = opts || options[pane].childOptions
+ , d = "layout"
+ // determine which element is supposed to be the 'child container'
+ // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane
+ , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P)
+ , containerFound = $Cont.length
+ // see if a child-layout ALREADY exists on this element
+ , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null
+ ;
+ // if no layout exists, but childOptions are set, try to create the layout now
+ if (!child && containerFound && o)
+ child = C[pane] = $Cont.eq(0).layout(o) || null;
+ if (child)
+ child.hasParentLayout = true; // set parent-flag in child
+ }
+ Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null
+ }
+
+, windowResize = function () {
+ var delay = Number(options.resizeWithWindowDelay);
+ if (delay < 10) delay = 100; // MUST have a delay!
+ // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway
+ timer.clear("winResize"); // if already running
+ timer.set("winResize", function(){
+ timer.clear("winResize");
+ timer.clear("winResizeRepeater");
+ var dims = elDims( $N );
+ // only trigger resizeAll() if container has changed size
+ if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight)
+ resizeAll();
+ }, delay);
+ // ALSO set fixed-delay timer, if not already running
+ if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater();
+ }
+
+, setWindowResizeRepeater = function () {
+ var delay = Number(options.resizeWithWindowMaxDelay);
+ if (delay > 0)
+ timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay);
+ }
+
+, unload = function () {
+ var o = options;
+
+ _runCallbacks("onunload_start");
+
+ // trigger plugin callabacks for this layout (eg: stateManagement)
+ runPluginCallbacks( Instance, $.layout.onUnload );
+
+ _runCallbacks("onunload_end");
+ }
+
+ /**
+ * Validate and initialize container CSS and events
+ *
+ * @see _create()
+ */
+, _initContainer = function () {
+ var
+ N = $N[0]
+ , tag = sC.tagName = N.tagName
+ , id = sC.id = N.id
+ , cls = sC.className = N.className
+ , o = options
+ , name = o.name
+ , fullPage= (tag === "BODY")
+ , props = "overflow,position,margin,padding,border"
+ , css = "layoutCSS"
+ , CSS = {}
+ , hid = "hidden" // used A LOT!
+ // see if this container is a 'pane' inside an outer-layout
+ , parent = $N.data("parentLayout") // parent-layout Instance
+ , pane = $N.data("layoutEdge") // pane-name in parent-layout
+ , isChild = parent && pane
+ ;
+ // sC -> state.container
+ sC.selector = $N.selector.split(".slice")[0];
+ sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages
+
+ $N .data({
+ layout: Instance
+ , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID
+ })
+ .addClass(o.containerClass)
+ ;
+ var layoutMethods = {
+ destroy: ''
+ , initPanes: ''
+ , resizeAll: 'resizeAll'
+ , resize: 'resizeAll'
+ }
+ , name;
+ // loop hash and bind all methods - include layoutID namespacing
+ for (name in layoutMethods) {
+ $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]);
+ }
+
+ // if this container is another layout's 'pane', then set child/parent pointers
+ if (isChild) {
+ // update parent flag
+ Instance.hasParentLayout = true;
+ // set pointers to THIS child-layout (Instance) in parent-layout
+ // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE
+ parent[pane].child = parent.children[pane] = $N.data("layout");
+ }
+
+ // SAVE original container CSS for use in destroy()
+ if (!$N.data(css)) {
+ // handle props like overflow different for BODY & HTML - has 'system default' values
+ if (fullPage) {
+ CSS = $.extend( elCSS($N, props), {
+ height: $N.css("height")
+ , overflow: $N.css("overflow")
+ , overflowX: $N.css("overflowX")
+ , overflowY: $N.css("overflowY")
+ });
+ // ALSO SAVE <HTML> CSS
+ var $H = $("html");
+ $H.data(css, {
+ height: "auto" // FF would return a fixed px-size!
+ , overflow: $H.css("overflow")
+ , overflowX: $H.css("overflowX")
+ , overflowY: $H.css("overflowY")
+ });
+ }
+ else // handle props normally for non-body elements
+ CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY");
+
+ $N.data(css, CSS);
+ }
+
+ try { // format html/body if this is a full page layout
+ if (fullPage) {
+ $("html").css({
+ height: "100%"
+ , overflow: hid
+ , overflowX: hid
+ , overflowY: hid
+ });
+ $("body").css({
+ position: "relative"
+ , height: "100%"
+ , overflow: hid
+ , overflowX: hid
+ , overflowY: hid
+ , margin: 0
+ , padding: 0 // TODO: test whether body-padding could be handled?
+ , border: "none" // a body-border creates problems because it cannot be measured!
+ });
+
+ // set current layout-container dimensions
+ $.extend(sC, elDims( $N ));
+ }
+ else { // set required CSS for overflow and position
+ // ENSURE container will not 'scroll'
+ CSS = { overflow: hid, overflowX: hid, overflowY: hid }
+ var
+ p = $N.css("position")
+ , h = $N.css("height")
+ ;
+ // if this is a NESTED layout, then container/outer-pane ALREADY has position and height
+ if (!isChild) {
+ if (!p || !p.match(/fixed|absolute|relative/))
+ CSS.position = "relative"; // container MUST have a 'position'
+ /*
+ if (!h || h=="auto")
+ CSS.height = "100%"; // container MUST have a 'height'
+ */
+ }
+ $N.css( CSS );
+
+ // set current layout-container dimensions
+ if ( $N.is(":visible") ) {
+ $.extend(sC, elDims( $N ));
+ if (o.showErrorMessages && sC.innerHeight < 1)
+ _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true );
+ }
+ }
+ } catch (ex) {}
+ }
+
+ /**
+ * Bind layout hotkeys - if options enabled
+ *
+ * @see _create() and addPane()
+ * @param {string=} [panes=""] The edge(s) to process
+ */
+, initHotkeys = function (panes) {
+ panes = panes ? panes.split(",") : _c.borderPanes;
+ // bind keyDown to capture hotkeys, if option enabled for ANY pane
+ $.each(panes, function (i, pane) {
+ var o = options[pane];
+ if (o.enableCursorHotkey || o.customHotkey) {
+ $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE
+ return false; // BREAK - binding was done
+ }
+ });
+ }
+
+ /**
+ * Build final OPTIONS data
+ *
+ * @see _create()
+ */
+, initOptions = function () {
+ var data, d, pane, key, val, i, c, o;
+
+ // reprocess user's layout-options to have correct options sub-key structure
+ opts = $.layout.transformData( opts ); // panes = default subkey
+
+ // auto-rename old options for backward compatibility
+ opts = $.layout.backwardCompatibility.renameAllOptions( opts );
+
+ // if user-options has 'panes' key (pane-defaults), process it...
+ if (!$.isEmptyObject(opts.panes)) {
+ // REMOVE any pane-defaults that MUST be set per-pane
+ data = $.layout.optionsMap.noDefault;
+ for (i=0, c=data.length; i<c; i++) {
+ key = data[i];
+ delete opts.panes[key]; // OK if does not exist
+ }
+ // REMOVE any layout-options specified under opts.panes
+ data = $.layout.optionsMap.layout;
+ for (i=0, c=data.length; i<c; i++) {
+ key = data[i];
+ delete opts.panes[key]; // OK if does not exist
+ }
+ }
+
+ // MOVE any NON-layout-options to opts.panes
+ data = $.layout.optionsMap.layout;
+ var rootKeys = $.layout.config.optionRootKeys;
+ for (key in opts) {
+ val = opts[key];
+ if ($.inArray(key, rootKeys) < 0 && $.inArray(key, data) < 0) {
+ if (!opts.panes[key])
+ opts.panes[key] = $.isPlainObject(val) ? $.extend(true, {}, val) : val;
+ delete opts[key]
+ }
+ }
+
+ // START by updating ALL options from opts
+ $.extend(true, options, opts);
+
+ // CREATE final options (and config) for EACH pane
+ $.each(_c.allPanes, function (i, pane) {
+
+ // apply 'pane-defaults' to CONFIG.[PANE]
+ _c[pane] = $.extend( true, {}, _c.panes, _c[pane] );
+
+ d = options.panes;
+ o = options[pane];
+
+ // center-pane uses SOME keys in defaults.panes branch
+ if (pane === 'center') {
+ // ONLY copy keys from opts.panes listed in: $.layout.optionsMap.center
+ data = $.layout.optionsMap.center; // list of 'center-pane keys'
+ for (i=0, c=data.length; i<c; i++) { // loop the list...
+ key = data[i];
+ // only need to use pane-default if pane-specific value not set
+ if (!opts.center[key] && (opts.panes[key] || !o[key]))
+ o[key] = d[key]; // pane-default
+ }
+ }
+ else {
+ // border-panes use ALL keys in defaults.panes branch
+ o = options[pane] = $.extend({}, d, o); // re-apply pane-specific opts AFTER pane-defaults
+ createFxOptions( pane );
+ // ensure all border-pane-specific base-classes exist
+ if (!o.resizerClass) o.resizerClass = "ui-layout-resizer";
+ if (!o.togglerClass) o.togglerClass = "ui-layout-toggler";
+ }
+ // ensure we have base pane-class (ALL panes)
+ if (!o.paneClass) o.paneClass = "ui-layout-pane";
+ });
+
+ // update options.zIndexes if a zIndex-option specified
+ var zo = opts.zIndex
+ , z = options.zIndexes;
+ if (zo > 0) {
+ z.pane_normal = zo;
+ z.content_mask = max(zo+1, z.content_mask); // MIN = +1
+ z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2
+ }
+
+ function createFxOptions ( pane ) {
+ var o = options[pane]
+ , d = options.panes;
+ // ensure fxSettings key to avoid errors
+ if (!o.fxSettings) o.fxSettings = {};
+ if (!d.fxSettings) d.fxSettings = {};
+
+ $.each(["_open","_close","_size"], function (i,n) {
+ var
+ sName = "fxName"+ n
+ , sSpeed = "fxSpeed"+ n
+ , sSettings = "fxSettings"+ n
+ // recalculate fxName according to specificity rules
+ , fxName = o[sName] =
+ o[sName] // options.west.fxName_open
+ || d[sName] // options.panes.fxName_open
+ || o.fxName // options.west.fxName
+ || d.fxName // options.panes.fxName
+ || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0
+ ;
+ // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects
+ if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName])
+ fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName
+
+ // set vars for effects subkeys to simplify logic
+ var fx = options.effects[fxName] || {} // effects.slide
+ , fx_all = fx.all || null // effects.slide.all
+ , fx_pane = fx[pane] || null // effects.slide.west
+ ;
+ // create fxSpeed[_open|_close|_size]
+ o[sSpeed] =
+ o[sSpeed] // options.west.fxSpeed_open
+ || d[sSpeed] // options.west.fxSpeed_open
+ || o.fxSpeed // options.west.fxSpeed
+ || d.fxSpeed // options.panes.fxSpeed
+ || null // DEFAULT - let fxSetting.duration control speed
+ ;
+ // create fxSettings[_open|_close|_size]
+ o[sSettings] = $.extend(
+ {}
+ , fx_all // effects.slide.all
+ , fx_pane // effects.slide.west
+ , d.fxSettings // options.panes.fxSettings
+ , o.fxSettings // options.west.fxSettings
+ , d[sSettings] // options.panes.fxSettings_open
+ , o[sSettings] // options.west.fxSettings_open
+ );
+ });
+
+ // DONE creating action-specific-settings for this pane,
+ // so DELETE generic options - are no longer meaningful
+ delete o.fxName;
+ delete o.fxSpeed;
+ delete o.fxSettings;
+ }
+
+ // DELETE 'panes' key now that we are done - values were copied to EACH pane
+ delete options.panes;
+ }
+
+ /**
+ * Initialize module objects, styling, size and position for all panes
+ *
+ * @see _initElements()
+ * @param {string} pane The pane to process
+ */
+, getPane = function (pane) {
+ var sel = options[pane].paneSelector
+ if (sel.substr(0,1)==="#") // ID selector
+ // NOTE: elements selected 'by ID' DO NOT have to be 'children'
+ return $N.find(sel).eq(0);
+ else { // class or other selector
+ var $P = $N.children(sel).eq(0);
+ // look for the pane nested inside a 'form' element
+ return $P.length ? $P : $N.children("form:first").children(sel).eq(0);
+ }
+ }
+
+, initPanes = function () {
+ // NOTE: do north & south FIRST so we can measure their height - do center LAST
+ $.each(_c.allPanes, function (idx, pane) {
+ addPane( pane, true );
+ });
+
+ // init the pane-handles NOW in case we have to hide or close the pane below
+ initHandles();
+
+ // now that all panes have been initialized and initially-sized,
+ // make sure there is really enough space available for each pane
+ $.each(_c.borderPanes, function (i, pane) {
+ if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN
+ setSizeLimits(pane);
+ makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit()
+ }
+ });
+ // size center-pane AGAIN in case we 'closed' a border-pane in loop above
+ sizeMidPanes("center");
+
+ // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing!
+ // Before RC30.3, there was a 10ms delay here, but that caused layout
+ // to load asynchrously, which is BAD, so try skipping delay for now
+
+ // process pane contents and callbacks, and init/resize child-layout if exists
+ $.each(_c.allPanes, function (i, pane) {
+ var o = options[pane];
+ if ($Ps[pane]) {
+ if (state[pane].isVisible) { // pane is OPEN
+ sizeContent(pane);
+ // trigger pane.onResize if triggerEventsOnLoad = true
+ if (o.triggerEventsOnLoad)
+ _runCallbacks("onresize_end", pane);
+ else // automatic if onresize called, otherwise call it specifically
+ // resize child - IF inner-layout already exists (created before this layout)
+ resizeChildLayout(pane);
+ }
+ // init childLayout - even if pane is not visible
+ if (o.initChildLayout && o.childOptions)
+ createChildLayout(pane);
+ }
+ });
+ }
+
+ /**
+ * Add a pane to the layout - subroutine of initPanes()
+ *
+ * @see initPanes()
+ * @param {string} pane The pane to process
+ * @param {boolean=} [force=false] Size content after init
+ */
+, addPane = function (pane, force) {
+ if (!force && !isInitialized()) return;
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , fx = s.fx
+ , dir = c.dir
+ , spacing = o.spacing_open || 0
+ , isCenter = (pane === "center")
+ , CSS = {}
+ , $P = $Ps[pane]
+ , size, minSize, maxSize
+ ;
+ // if pane-pointer already exists, remove the old one first
+ if ($P)
+ removePane( pane, false, true, false );
+ else
+ $Cs[pane] = false; // init
+
+ $P = $Ps[pane] = getPane(pane);
+ if (!$P.length) {
+ $Ps[pane] = false; // logic
+ return;
+ }
+
+ // SAVE original Pane CSS
+ if (!$P.data("layoutCSS")) {
+ var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border";
+ $P.data("layoutCSS", elCSS($P, props));
+ }
+
+ // create alias for pane data in Instance - initHandles will add more
+ Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] };
+
+ // add classes, attributes & events
+ $P .data({
+ parentLayout: Instance // pointer to Layout Instance
+ , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ , layoutRole: "pane"
+ })
+ .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal)
+ .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles
+ .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector'
+ .bind("mouseenter."+ sID, addHover )
+ .bind("mouseleave."+ sID, removeHover )
+ ;
+ var paneMethods = {
+ hide: ''
+ , show: ''
+ , toggle: ''
+ , close: ''
+ , open: ''
+ , slideOpen: ''
+ , slideClose: ''
+ , slideToggle: ''
+ , size: 'manualSizePane'
+ , sizePane: 'manualSizePane'
+ , sizeContent: ''
+ , sizeHandles: ''
+ , enableClosable: ''
+ , disableClosable: ''
+ , enableSlideable: ''
+ , disableSlideable: ''
+ , enableResizable: ''
+ , disableResizable: ''
+ , swapPanes: 'swapPanes'
+ , swap: 'swapPanes'
+ , move: 'swapPanes'
+ , removePane: 'removePane'
+ , remove: 'removePane'
+ , createChildLayout: ''
+ , resizeChildLayout: ''
+ , resizeAll: 'resizeAll'
+ , resizeLayout: 'resizeAll'
+ }
+ , name;
+ // loop hash and bind all methods - include layoutID namespacing
+ for (name in paneMethods) {
+ $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]);
+ }
+
+ // see if this pane has a 'scrolling-content element'
+ initContent(pane, false); // false = do NOT sizeContent() - called later
+
+ if (!isCenter) {
+ // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden)
+ // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size'
+ size = s.size = _parseSize(pane, o.size);
+ minSize = _parseSize(pane,o.minSize) || 1;
+ maxSize = _parseSize(pane,o.maxSize) || 100000;
+ if (size > 0) size = max(min(size, maxSize), minSize);
+
+ // state for border-panes
+ s.isClosed = false; // true = pane is closed
+ s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes
+ s.isResizing= false; // true = pane is in process of being resized
+ s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible!
+
+ // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close
+ if (!s.pins) s.pins = [];
+ }
+ // states common to ALL panes
+ s.tagName = $P[0].tagName;
+ s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going)
+ s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically
+ s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic
+
+ // set css-position to account for container borders & padding
+ switch (pane) {
+ case "north": CSS.top = sC.insetTop;
+ CSS.left = sC.insetLeft;
+ CSS.right = sC.insetRight;
+ break;
+ case "south": CSS.bottom = sC.insetBottom;
+ CSS.left = sC.insetLeft;
+ CSS.right = sC.insetRight;
+ break;
+ case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes()
+ break;
+ case "east": CSS.right = sC.insetRight; // ditto
+ break;
+ case "center": // top, left, width & height set by sizeMidPanes()
+ }
+
+ if (dir === "horz") // north or south pane
+ CSS.height = cssH($P, size);
+ else if (dir === "vert") // east or west pane
+ CSS.width = cssW($P, size);
+ //else if (isCenter) {}
+
+ $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes
+ if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback
+
+ // close or hide the pane if specified in settings
+ if (o.initClosed && o.closable && !o.initHidden)
+ close(pane, true, true); // true, true = force, noAnimation
+ else if (o.initHidden || o.initClosed)
+ hide(pane); // will be completely invisible - no resizer or spacing
+ else if (!s.noRoom)
+ // make the pane visible - in case was initially hidden
+ $P.css("display","block");
+ // ELSE setAsOpen() - called later by initHandles()
+
+ // RESET visibility now - pane will appear IF display:block
+ $P.css("visibility","visible");
+
+ // check option for auto-handling of pop-ups & drop-downs
+ if (o.showOverflowOnHover)
+ $P.hover( allowOverflow, resetOverflow );
+
+ // if manually adding a pane AFTER layout initialization, then...
+ if (state.initialized) {
+ initHandles( pane );
+ initHotkeys( pane );
+ resizeAll(); // will sizeContent if pane is visible
+ if (s.isVisible) { // pane is OPEN
+ if (o.triggerEventsOnLoad)
+ _runCallbacks("onresize_end", pane);
+ else // automatic if onresize called, otherwise call it specifically
+ // resize child - IF inner-layout already exists (created before this layout)
+ resizeChildLayout(pane); // a previously existing childLayout
+ }
+ if (o.initChildLayout && o.childOptions)
+ createChildLayout(pane);
+ }
+ }
+
+ /**
+ * Initialize module objects, styling, size and position for all resize bars and toggler buttons
+ *
+ * @see _create()
+ * @param {string=} [panes=""] The edge(s) to process
+ */
+, initHandles = function (panes) {
+ panes = panes ? panes.split(",") : _c.borderPanes;
+
+ // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV
+ $.each(panes, function (i, pane) {
+ var $P = $Ps[pane];
+ $Rs[pane] = false; // INIT
+ $Ts[pane] = false;
+ if (!$P) return; // pane does not exist - skip
+
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , rClass = o.resizerClass
+ , tClass = o.togglerClass
+ , side = c.side.toLowerCase()
+ , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed)
+ , _pane = "-"+ pane // used for classNames
+ , _state = (s.isVisible ? "-open" : "-closed") // used for classNames
+ , I = Instance[pane]
+ // INIT RESIZER BAR
+ , $R = I.resizer = $Rs[pane] = $("<div></div>")
+ // INIT TOGGLER BUTTON
+ , $T = I.toggler = (o.closable ? $Ts[pane] = $("<div></div>") : false)
+ ;
+
+ //if (s.isVisible && o.resizable) ... handled by initResizable
+ if (!s.isVisible && o.slidable)
+ $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor);
+
+ $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer"
+ .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : ""))
+ .data({
+ parentLayout: Instance
+ , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ , layoutRole: "resizer"
+ })
+ .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal)
+ .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles
+ .addClass(rClass +" "+ rClass+_pane)
+ .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead
+ .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter
+ .appendTo($N) // append DIV to container
+ ;
+
+ if ($T) {
+ $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler"
+ .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : ""))
+ .data({
+ parentLayout: Instance
+ , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ , layoutRole: "toggler"
+ })
+ .css(_c.togglers.cssReq) // add base/required styles
+ .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles
+ .addClass(tClass +" "+ tClass+_pane)
+ .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead
+ .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer
+ .appendTo($R) // append SPAN to resizer DIV
+ ;
+ // ADD INNER-SPANS TO TOGGLER
+ if (o.togglerContent_open) // ui-layout-open
+ $("<span>"+ o.togglerContent_open +"</span>")
+ .data({
+ layoutEdge: pane
+ , layoutRole: "togglerContent"
+ })
+ .data("layoutRole", "togglerContent")
+ .data("layoutEdge", pane)
+ .addClass("content content-open")
+ .css("display","none")
+ .appendTo( $T )
+ //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead!
+ ;
+ if (o.togglerContent_closed) // ui-layout-closed
+ $("<span>"+ o.togglerContent_closed +"</span>")
+ .data({
+ layoutEdge: pane
+ , layoutRole: "togglerContent"
+ })
+ .addClass("content content-closed")
+ .css("display","none")
+ .appendTo( $T )
+ //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead!
+ ;
+ // ADD TOGGLER.click/.hover
+ enableClosable(pane);
+ }
+
+ // add Draggable events
+ initResizable(pane);
+
+ // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open"
+ if (s.isVisible)
+ setAsOpen(pane); // onOpen will be called, but NOT onResize
+ else {
+ setAsClosed(pane); // onClose will be called
+ bindStartSlidingEvent(pane, true); // will enable events IF option is set
+ }
+
+ });
+
+ // SET ALL HANDLE DIMENSIONS
+ sizeHandles();
+ }
+
+
+ /**
+ * Initialize scrolling ui-layout-content div - if exists
+ *
+ * @see initPane() - or externally after an Ajax injection
+ * @param {string} [pane] The pane to process
+ * @param {boolean=} [resize=true] Size content after init
+ */
+, initContent = function (pane, resize) {
+ if (!isInitialized()) return;
+ var
+ o = options[pane]
+ , sel = o.contentSelector
+ , I = Instance[pane]
+ , $P = $Ps[pane]
+ , $C
+ ;
+ if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent)
+ ? $P.find(sel).eq(0) // match 1-element only
+ : $P.children(sel).eq(0)
+ ;
+ if ($C && $C.length) {
+ $C.data("layoutRole", "content");
+ // SAVE original Pane CSS
+ if (!$C.data("layoutCSS"))
+ $C.data("layoutCSS", elCSS($C, "height"));
+ $C.css( _c.content.cssReq );
+ if (o.applyDemoStyles) {
+ $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div
+ $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane
+ }
+ state[pane].content = {}; // init content state
+ if (resize !== false) sizeContent(pane);
+ // sizeContent() is called AFTER init of all elements
+ }
+ else
+ I.content = $Cs[pane] = false;
+ }
+
+
+ /**
+ * Add resize-bars to all panes that specify it in options
+ * -dependancy: $.fn.resizable - will skip if not found
+ *
+ * @see _create()
+ * @param {string=} [panes=""] The edge(s) to process
+ */
+, initResizable = function (panes) {
+ var draggingAvailable = $.layout.plugins.draggable
+ , side // set in start()
+ ;
+ panes = panes ? panes.split(",") : _c.borderPanes;
+
+ $.each(panes, function (idx, pane) {
+ var o = options[pane];
+ if (!draggingAvailable || !$Ps[pane] || !o.resizable) {
+ o.resizable = false;
+ return true; // skip to next
+ }
+
+ var s = state[pane]
+ , z = options.zIndexes
+ , c = _c[pane]
+ , side = c.dir=="horz" ? "top" : "left"
+ , opEdge = _c.oppositeEdge[pane]
+ , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "")
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , base = o.resizerClass
+ , lastPos = 0 // used when live-resizing
+ , r, live // set in start because may change
+ // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process
+ , resizerClass = base+"-drag" // resizer-drag
+ , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag
+ // 'helper' class is applied to the CLONED resizer-bar while it is being dragged
+ , helperClass = base+"-dragging" // resizer-dragging
+ , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging
+ , helperLimitClass = base+"-dragging-limit" // resizer-drag
+ , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag
+ , helperClassesSet = false // logic var
+ ;
+
+ if (!s.isClosed)
+ $R.attr("title", o.resizerTip)
+ .css("cursor", o.resizerCursor); // n-resize, s-resize, etc
+
+ $R.draggable({
+ containment: $N[0] // limit resizing to layout container
+ , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis
+ , delay: 0
+ , distance: 1
+ , grid: o.resizingGrid
+ // basic format for helper - style it using class: .ui-draggable-dragging
+ , helper: "clone"
+ , opacity: o.resizerDragOpacity
+ , addClasses: false // avoid ui-state-disabled class when disabled
+ //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed
+ , zIndex: z.resizer_drag
+
+ , start: function (e, ui) {
+ // REFRESH options & state pointers in case we used swapPanes
+ o = options[pane];
+ s = state[pane];
+ // re-read options
+ live = o.livePaneResizing;
+
+ // ondrag_start callback - will CANCEL hide if returns false
+ // TODO: dragging CANNOT be cancelled like this, so see if there is a way?
+ if (false === _runCallbacks("ondrag_start", pane)) return false;
+
+ s.isResizing = true; // prevent pane from closing while resizing
+ timer.clear(pane+"_closeSlider"); // just in case already triggered
+
+ // SET RESIZER LIMITS - used in drag()
+ setSizeLimits(pane); // update pane/resizer state
+ r = s.resizerPosition;
+ lastPos = ui.position[ side ]
+
+ $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes
+ helperClassesSet = false; // reset logic var - see drag()
+
+ // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver)
+ $('body').disableSelection();
+
+ // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS
+ showMasks( masks );
+ }
+
+ , drag: function (e, ui) {
+ if (!helperClassesSet) { // can only add classes after clone has been added to the DOM
+ //$(".ui-draggable-dragging")
+ ui.helper
+ .addClass( helperClass +" "+ helperPaneClass ) // add helper classes
+ .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue
+ .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar
+ ;
+ helperClassesSet = true;
+ // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane!
+ if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding);
+ }
+ // CONTAIN RESIZER-BAR TO RESIZING LIMITS
+ var limit = 0;
+ if (ui.position[side] < r.min) {
+ ui.position[side] = r.min;
+ limit = -1;
+ }
+ else if (ui.position[side] > r.max) {
+ ui.position[side] = r.max;
+ limit = 1;
+ }
+ // ADD/REMOVE dragging-limit CLASS
+ if (limit) {
+ ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit
+ window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning;
+ }
+ else {
+ ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit
+ window.defaultStatus = "";
+ }
+ // DYNAMICALLY RESIZE PANES IF OPTION ENABLED
+ // won't trigger unless resizer has actually moved!
+ if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) {
+ lastPos = ui.position[side];
+ resizePanes(e, ui, pane)
+ }
+ }
+
+ , stop: function (e, ui) {
+ $('body').enableSelection(); // RE-ENABLE TEXT SELECTION
+ window.defaultStatus = ""; // clear 'resizing limit' message from statusbar
+ $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer
+ s.isResizing = false;
+ resizePanes(e, ui, pane, true, masks); // true = resizingDone
+ }
+
+ });
+ });
+
+ /**
+ * resizePanes
+ *
+ * Sub-routine called from stop() - and drag() if livePaneResizing
+ *
+ * @param {!Object} evt
+ * @param {!Object} ui
+ * @param {string} pane
+ * @param {boolean=} [resizingDone=false]
+ */
+ var resizePanes = function (evt, ui, pane, resizingDone, masks) {
+ var dragPos = ui.position
+ , c = _c[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , resizerPos
+ ;
+ switch (pane) {
+ case "north": resizerPos = dragPos.top; break;
+ case "west": resizerPos = dragPos.left; break;
+ case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break;
+ case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break;
+ };
+ // remove container margin from resizer position to get the pane size
+ var newSize = resizerPos - sC["inset"+ c.side];
+
+ // Disable OR Resize Mask(s) created in drag.start
+ if (!resizingDone) {
+ // ensure we meet liveResizingTolerance criteria
+ if (Math.abs(newSize - s.size) < o.liveResizingTolerance)
+ return; // SKIP resize this time
+ // resize the pane
+ manualSizePane(pane, newSize, false, true); // true = noAnimation
+ sizeMasks(); // resize all visible masks
+ }
+ else { // resizingDone
+ // ondrag_end callback
+ if (false !== _runCallbacks("ondrag_end", pane))
+ manualSizePane(pane, newSize, false, true); // true = noAnimation
+ hideMasks(); // hide all masks, which include panes with 'content/iframe-masks'
+ if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane
+ showMasks( masks, true ); // true = onlyForObjects
+ }
+ };
+ }
+
+ /**
+ * sizeMask
+ *
+ * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane
+ * Called when mask created, and during livePaneResizing
+ */
+, sizeMask = function () {
+ var $M = $(this)
+ , pane = $M.data("layoutMask") // eg: "west"
+ , s = state[pane]
+ ;
+ // only masks over an IFRAME-pane need manual resizing
+ if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes
+ $M.css({
+ top: s.offsetTop
+ , left: s.offsetLeft
+ , width: s.outerWidth
+ , height: s.outerHeight
+ });
+ /* ALT Method...
+ var $P = $Ps[pane];
+ $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight });
+ */
+ }
+, sizeMasks = function () {
+ $Ms.each( sizeMask ); // resize all 'visible' masks
+ }
+
+, showMasks = function (panes, onlyForObjects) {
+ var a = panes ? panes.split(",") : $.layout.config.allPanes
+ , z = options.zIndexes
+ , o, s;
+ $.each(a, function(i,p){
+ s = state[p];
+ o = options[p];
+ if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) {
+ getMasks(p).each(function(){
+ sizeMask.call(this);
+ this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1
+ this.style.display = "block";
+ });
+ }
+ });
+ }
+
+, hideMasks = function () {
+ // ensure no pane is resizing - could be a timing issue
+ var skip;
+ $.each( $.layout.config.borderPanes, function(i,p){
+ if (state[p].isResizing) {
+ skip = true;
+ return false; // BREAK
+ }
+ });
+ if (!skip)
+ $Ms.hide(); // hide ALL masks
+ }
+
+, getMasks = function (pane) {
+ var $Masks = $([])
+ , $M, i = 0, c = $Ms.length
+ ;
+ for (; i<c; i++) {
+ $M = $Ms.eq(i);
+ if ($M.data("layoutMask") === pane)
+ $Masks = $Masks.add( $M );
+ }
+ if ($Masks.length)
+ return $Masks;
+ else
+ return createMasks(pane);
+ }
+
+ /**
+ * createMasks
+ *
+ * Generates both DIV (ALWAYS used) and IFRAME (optional) elements as masks
+ * An IFRAME mask is created *under* the DIV when maskObjects=true, because a DIV cannot mask an applet
+ */
+, createMasks = function (pane) {
+ var
+ $P = $Ps[pane]
+ , s = state[pane]
+ , o = options[pane]
+ , z = options.zIndexes
+ //, objMask = o.maskObjects && s.tagName != "IFRAME" // check for option
+ , $Masks = $([])
+ , isIframe, el, $M, css, i
+ ;
+ if (!o.maskContents && !o.maskObjects) return $Masks;
+ // if o.maskObjects=true, then loop TWICE to create BOTH kinds of mask, else only create a DIV
+ for (i=0; i < (o.maskObjects ? 2 : 1); i++) {
+ isIframe = o.maskObjects && i==0;
+ el = document.createElement( isIframe ? "iframe" : "div" );
+ $M = $(el).data("layoutMask", pane); // add data to relate mask to pane
+ el.className = "ui-layout-mask ui-layout-mask-"+ pane; // for user styling
+ css = el.style;
+ // styles common to both DIVs and IFRAMES
+ css.display = "block";
+ css.position = "absolute";
+ if (isIframe) { // IFRAME-only props
+ el.frameborder = 0;
+ el.src = "about:blank";
+ css.opacity = 0;
+ css.filter = "Alpha(Opacity='0')";
+ css.border = 0;
+ }
+ // if pane is an IFRAME, then must mask the pane itself
+ if (s.tagName == "IFRAME") {
+ // NOTE sizing done by a subroutine so can be called during live-resizing
+ css.zIndex = z.pane_normal+1; // 1-higher than pane
+ $N.append( el ); // append to LAYOUT CONTAINER
+ }
+ // otherwise put masks *inside the pane* to mask its contents
+ else {
+ $M.addClass("ui-layout-mask-inside-pane");
+ css.zIndex = o.maskZindex || z.content_mask; // usually 1, but customizable
+ css.top = 0;
+ css.left = 0;
+ css.width = "100%";
+ css.height = "100%";
+ $P.append( el ); // append INSIDE pane element
+ }
+ // add to return object
+ $Masks = $Masks.add( el );
+ // add Mask to cached array so can be resized & reused
+ $Ms = $Ms.add( el );
+ }
+ return $Masks;
+ }
+
+
+ /**
+ * Destroy this layout and reset all elements
+ *
+ * @param {boolean=} [destroyChildren=false] Destory Child-Layouts first?
+ */
+, destroy = function (destroyChildren) {
+ // UNBIND layout events and remove global object
+ $(window).unbind("."+ sID); // resize & unload
+ $(document).unbind("."+ sID); // keyDown (hotkeys)
+
+ // need to look for parent layout BEFORE we remove the container data, else skips a level
+ //var parentPane = Instance.hasParentLayout ? $.layout.getParentPaneInstance( $N ) : null;
+
+ // reset layout-container
+ $N .clearQueue()
+ .removeData("layout")
+ .removeData("layoutContainer")
+ .removeClass(options.containerClass)
+ .unbind("."+ sID) // remove ALL Layout events
+ ;
+
+ // remove all mask elements that have been created
+ $Ms.remove();
+
+ // loop all panes to remove layout classes, attributes and bindings
+ $.each(_c.allPanes, function (i, pane) {
+ removePane( pane, false, true, destroyChildren ); // true = skipResize
+ });
+
+ // do NOT reset container CSS if is a 'pane' (or 'content') in an outer-layout - ie, THIS layout is 'nested'
+ var css = "layoutCSS";
+ if ($N.data(css) && !$N.data("layoutRole")) // RESET CSS
+ $N.css( $N.data(css) ).removeData(css);
+
+ // for full-page layouts, also reset the <HTML> CSS
+ if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET <HTML> CSS
+ $N.css( $N.data(css) ).removeData(css);
+
+ // trigger plugins for this layout, if there are any
+ runPluginCallbacks( Instance, $.layout.onDestroy );
+
+ // trigger state-management and onunload callback
+ unload();
+
+ // clear the Instance of everything except for container & options (so could recreate)
+ // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options );
+ for (n in Instance)
+ if (!n.match(/^(container|options)$/)) delete Instance[ n ];
+ // add a 'destroyed' flag to make it easy to check
+ Instance.destroyed = true;
+
+ // if this is a child layout, CLEAR the child-pointer in the parent
+ /* for now the pointer REMAINS, but with only container, options and destroyed keys
+ if (parentPane) {
+ var layout = parentPane.pane.data("parentLayout");
+ parentPane.child = layout.children[ parentPane.name ] = null;
+ }
+ */
+
+ return Instance; // for coding convenience
+ }
+
+ /**
+ * Remove a pane from the layout - subroutine of destroy()
+ *
+ * @see destroy()
+ * @param {string} pane The pane to process
+ * @param {boolean=} [remove=false] Remove the DOM element?
+ * @param {boolean=} [skipResize=false] Skip calling resizeAll()?
+ */
+, removePane = function (evt_or_pane, remove, skipResize, destroyChild) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $P = $Ps[pane]
+ , $C = $Cs[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ ;
+ //alert( '$P.length = '+ $P.length );
+ // NOTE: elements can still exist even after remove()
+ // so check for missing data(), which is cleared by removed()
+ if ($P && $.isEmptyObject( $P.data() )) $P = false;
+ if ($C && $.isEmptyObject( $C.data() )) $C = false;
+ if ($R && $.isEmptyObject( $R.data() )) $R = false;
+ if ($T && $.isEmptyObject( $T.data() )) $T = false;
+
+ if ($P) $P.stop(true, true);
+
+ // check for a child layout
+ var o = options[pane]
+ , s = state[pane]
+ , d = "layout"
+ , css = "layoutCSS"
+ , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null
+ , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout
+ ;
+
+ // FIRST destroy the child-layout(s)
+ if (destroy && child && !child.destroyed) {
+ child.destroy(true); // tell child-layout to destroy ALL its child-layouts too
+ if (child.destroyed) // destroy was successful
+ child = null; // clear pointer for logic below
+ }
+
+ if ($P && remove && !child)
+ $P.remove();
+ else if ($P && $P[0]) {
+ // create list of ALL pane-classes that need to be removed
+ var root = o.paneClass // default="ui-layout-pane"
+ , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west"
+ , _open = "-open"
+ , _sliding= "-sliding"
+ , _closed = "-closed"
+ , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes
+ pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes
+ ;
+ $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes
+ // remove all Layout classes from pane-element
+ $P .removeClass( classes.join(" ") ) // remove ALL pane-classes
+ .removeData("parentLayout")
+ .removeData("layoutPane")
+ .removeData("layoutRole")
+ .removeData("layoutEdge")
+ .removeData("autoHidden") // in case set
+ .unbind("."+ sID) // remove ALL Layout events
+ // TODO: remove these extra unbind commands when jQuery is fixed
+ //.unbind("mouseenter"+ sID)
+ //.unbind("mouseleave"+ sID)
+ ;
+ // do NOT reset CSS if this pane/content is STILL the container of a nested layout!
+ // the nested layout will reset its 'container' CSS when/if it is destroyed
+ if ($C && $C.data(d)) {
+ // a content-div may not have a specific width, so give it one to contain the Layout
+ $C.width( $C.width() );
+ child.resizeAll(); // now resize the Layout
+ }
+ else if ($C)
+ $C.css( $C.data(css) ).removeData(css).removeData("layoutRole");
+ // remove pane AFTER content in case there was a nested layout
+ if (!$P.data(d))
+ $P.css( $P.data(css) ).removeData(css);
+ }
+
+ // REMOVE pane resizer and toggler elements
+ if ($T) $T.remove();
+ if ($R) $R.remove();
+
+ // CLEAR all pointers and state data
+ Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false;
+ s = { removed: true };
+
+ if (!skipResize)
+ resizeAll();
+ }
+
+
+/*
+ * ###########################
+ * ACTION METHODS
+ * ###########################
+ */
+
+, _hidePane = function (pane) {
+ var $P = $Ps[pane]
+ , o = options[pane]
+ , s = $P[0].style
+ ;
+ if (o.useOffscreenClose) {
+ if (!$P.data(_c.offscreenReset))
+ $P.data(_c.offscreenReset, { left: s.left, right: s.right });
+ $P.css( _c.offscreenCSS );
+ }
+ else
+ $P.hide().removeData(_c.offscreenReset);
+ }
+
+, _showPane = function (pane) {
+ var $P = $Ps[pane]
+ , o = options[pane]
+ , off = _c.offscreenCSS
+ , old = $P.data(_c.offscreenReset)
+ , s = $P[0].style
+ ;
+ $P .show() // ALWAYS show, just in case
+ .removeData(_c.offscreenReset);
+ if (o.useOffscreenClose && old) {
+ if (s.left == off.left)
+ s.left = old.left;
+ if (s.right == off.right)
+ s.right = old.right;
+ }
+ }
+
+
+ /**
+ * Completely 'hides' a pane, including its spacing - as if it does not exist
+ * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it
+ *
+ * @param {string} pane The pane being hidden, ie: north, south, east, or west
+ * @param {boolean=} [noAnimation=false]
+ */
+, hide = function (evt_or_pane, noAnimation) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ ;
+ if (!$P || s.isHidden) return; // pane does not exist OR is already hidden
+
+ // onhide_start callback - will CANCEL hide if returns false
+ if (state.initialized && false === _runCallbacks("onhide_start", pane)) return;
+
+ s.isSliding = false; // just in case
+
+ // now hide the elements
+ if ($R) $R.hide(); // hide resizer-bar
+ if (!state.initialized || s.isClosed) {
+ s.isClosed = true; // to trigger open-animation on show()
+ s.isHidden = true;
+ s.isVisible = false;
+ if (!state.initialized)
+ _hidePane(pane); // no animation when loading page
+ sizeMidPanes(_c[pane].dir === "horz" ? "" : "center");
+ if (state.initialized || o.triggerEventsOnLoad)
+ _runCallbacks("onhide_end", pane);
+ }
+ else {
+ s.isHiding = true; // used by onclose
+ close(pane, false, noAnimation); // adjust all panes to fit
+ }
+ }
+
+ /**
+ * Show a hidden pane - show as 'closed' by default unless openPane = true
+ *
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ * @param {boolean=} [openPane=false]
+ * @param {boolean=} [noAnimation=false]
+ * @param {boolean=} [noAlert=false]
+ */
+, show = function (evt_or_pane, openPane, noAnimation, noAlert) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ ;
+ if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden
+
+ // onshow_start callback - will CANCEL show if returns false
+ if (false === _runCallbacks("onshow_start", pane)) return;
+
+ s.isSliding = false; // just in case
+ s.isShowing = true; // used by onopen/onclose
+ //s.isHidden = false; - will be set by open/close - if not cancelled
+
+ // now show the elements
+ //if ($R) $R.show(); - will be shown by open/close
+ if (openPane === false)
+ close(pane, true); // true = force
+ else
+ open(pane, false, noAnimation, noAlert); // adjust all panes to fit
+ }
+
+
+ /**
+ * Toggles a pane open/closed by calling either open or close
+ *
+ * @param {string} pane The pane being toggled, ie: north, south, east, or west
+ * @param {boolean=} [slide=false]
+ */
+, toggle = function (evt_or_pane, slide) {
+ if (!isInitialized()) return;
+ var evt = evtObj(evt_or_pane)
+ , pane = evtPane.call(this, evt_or_pane)
+ , s = state[pane]
+ ;
+ if (evt) // called from to $R.dblclick OR triggerPaneEvent
+ evt.stopImmediatePropagation();
+ if (s.isHidden)
+ show(pane); // will call 'open' after unhiding it
+ else if (s.isClosed)
+ open(pane, !!slide);
+ else
+ close(pane);
+ }
+
+
+ /**
+ * Utility method used during init or other auto-processes
+ *
+ * @param {string} pane The pane being closed
+ * @param {boolean=} [setHandles=false]
+ */
+, _closePane = function (pane, setHandles) {
+ var
+ $P = $Ps[pane]
+ , s = state[pane]
+ ;
+ _hidePane(pane);
+ s.isClosed = true;
+ s.isVisible = false;
+ // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force
+ }
+
+ /**
+ * Close the specified pane (animation optional), and resize all other panes as needed
+ *
+ * @param {string} pane The pane being closed, ie: north, south, east, or west
+ * @param {boolean=} [force=false]
+ * @param {boolean=} [noAnimation=false]
+ * @param {boolean=} [skipCallback=false]
+ */
+, close = function (evt_or_pane, force, noAnimation, skipCallback) {
+ var pane = evtPane.call(this, evt_or_pane);
+ // if pane has been initialized, but NOT the complete layout, close pane instantly
+ if (!state.initialized && $Ps[pane]) {
+ _closePane(pane); // INIT pane as closed
+ return;
+ }
+ if (!isInitialized()) return;
+
+ var
+ $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , doFX, isShowing, isHiding, wasSliding;
+
+ // QUEUE in case another action/animation is in progress
+ $N.queue(function( queueNext ){
+
+ if ( !$P
+ || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ???
+ || (!force && s.isClosed && !s.isShowing) // already closed
+ ) return queueNext();
+
+ // onclose_start callback - will CANCEL hide if returns false
+ // SKIP if just 'showing' a hidden pane as 'closed'
+ var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane);
+
+ // transfer logic vars to temp vars
+ isShowing = s.isShowing;
+ isHiding = s.isHiding;
+ wasSliding = s.isSliding;
+ // now clear the logic vars (REQUIRED before aborting)
+ delete s.isShowing;
+ delete s.isHiding;
+
+ if (abort) return queueNext();
+
+ doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none");
+ s.isMoving = true;
+ s.isClosed = true;
+ s.isVisible = false;
+ // update isHidden BEFORE sizing panes
+ if (isHiding) s.isHidden = true;
+ else if (isShowing) s.isHidden = false;
+
+ if (s.isSliding) // pane is being closed, so UNBIND trigger events
+ bindStopSlidingEvents(pane, false); // will set isSliding=false
+ else // resize panes adjacent to this one
+ sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback
+
+ // if this pane has a resizer bar, move it NOW - before animation
+ setAsClosed(pane);
+
+ // CLOSE THE PANE
+ if (doFX) { // animate the close
+ // mask panes with objects
+ var masks = "center"+ (c.dir=="horz" ? ",west,east" : "");
+ showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true
+ lockPaneForFX(pane, true); // need to set left/top so animation will work
+ $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () {
+ lockPaneForFX(pane, false); // undo
+ if (s.isClosed) close_2();
+ queueNext();
+ });
+ }
+ else { // hide the pane without animation
+ _hidePane(pane);
+ close_2();
+ queueNext();
+ };
+ });
+
+ // SUBROUTINE
+ function close_2 () {
+ s.isMoving = false;
+ bindStartSlidingEvent(pane, true); // will enable if o.slidable = true
+
+ // if opposite-pane was autoClosed, see if it can be autoOpened now
+ var altPane = _c.oppositeEdge[pane];
+ if (state[ altPane ].noRoom) {
+ setSizeLimits( altPane );
+ makePaneFit( altPane );
+ }
+
+ // hide any masks shown while closing
+ hideMasks();
+
+ if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) {
+ // onclose callback - UNLESS just 'showing' a hidden pane as 'closed'
+ if (!isShowing) _runCallbacks("onclose_end", pane);
+ // onhide OR onshow callback
+ if (isShowing) _runCallbacks("onshow_end", pane);
+ if (isHiding) _runCallbacks("onhide_end", pane);
+ }
+ }
+ }
+
+ /**
+ * @param {string} pane The pane just closed, ie: north, south, east, or west
+ */
+, setAsClosed = function (pane) {
+ var
+ $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , side = _c[pane].side.toLowerCase()
+ , inset = "inset"+ _c[pane].side
+ , rClass = o.resizerClass
+ , tClass = o.togglerClass
+ , _pane = "-"+ pane // used for classNames
+ , _open = "-open"
+ , _sliding= "-sliding"
+ , _closed = "-closed"
+ ;
+ $R
+ .css(side, sC[inset]) // move the resizer
+ .removeClass( rClass+_open +" "+ rClass+_pane+_open )
+ .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+ .addClass( rClass+_closed +" "+ rClass+_pane+_closed )
+ .unbind("dblclick."+ sID)
+ ;
+ // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent?
+ if (o.resizable && $.layout.plugins.draggable)
+ $R
+ .draggable("disable")
+ .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here
+ .css("cursor", "default")
+ .attr("title","")
+ ;
+
+ // if pane has a toggler button, adjust that too
+ if ($T) {
+ $T
+ .removeClass( tClass+_open +" "+ tClass+_pane+_open )
+ .addClass( tClass+_closed +" "+ tClass+_pane+_closed )
+ .attr("title", o.togglerTip_closed) // may be blank
+ ;
+ // toggler-content - if exists
+ $T.children(".content-open").hide();
+ $T.children(".content-closed").css("display","block");
+ }
+
+ // sync any 'pin buttons'
+ syncPinBtns(pane, false);
+
+ if (state.initialized) {
+ // resize 'length' and position togglers for adjacent panes
+ sizeHandles();
+ }
+ }
+
+ /**
+ * Open the specified pane (animation optional), and resize all other panes as needed
+ *
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ * @param {boolean=} [slide=false]
+ * @param {boolean=} [noAnimation=false]
+ * @param {boolean=} [noAlert=false]
+ */
+, open = function (evt_or_pane, slide, noAnimation, noAlert) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , doFX, isShowing
+ ;
+ // QUEUE in case another action/animation is in progress
+ $N.queue(function( queueNext ){
+
+ if ( !$P
+ || (!o.resizable && !o.closable && !s.isShowing) // invalid request
+ || (s.isVisible && !s.isSliding) // already open
+ ) return queueNext();
+
+ // pane can ALSO be unhidden by just calling show(), so handle this scenario
+ if (s.isHidden && !s.isShowing) {
+ queueNext(); // call before show() because it needs the queue free
+ show(pane, true);
+ return;
+ }
+
+ if (o.autoResize && s.size != o.size) // resize pane to original size set in options
+ sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation
+ else
+ // make sure there is enough space available to open the pane
+ setSizeLimits(pane, slide);
+
+ // onopen_start callback - will CANCEL open if returns false
+ var cbReturn = _runCallbacks("onopen_start", pane);
+
+ if (cbReturn === "abort")
+ return queueNext();
+
+ // update pane-state again in case options were changed in onopen_start
+ if (cbReturn !== "NC") // NC = "No Callback"
+ setSizeLimits(pane, slide);
+
+ if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN!
+ syncPinBtns(pane, false); // make sure pin-buttons are reset
+ if (!noAlert && o.noRoomToOpenTip)
+ alert(o.noRoomToOpenTip);
+ return queueNext(); // ABORT
+ }
+
+ if (slide) // START Sliding - will set isSliding=true
+ bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
+ else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead
+ bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false
+ else if (o.slidable)
+ bindStartSlidingEvent(pane, false); // UNBIND trigger events
+
+ s.noRoom = false; // will be reset by makePaneFit if 'noRoom'
+ makePaneFit(pane);
+
+ // transfer logic var to temp var
+ isShowing = s.isShowing;
+ // now clear the logic var
+ delete s.isShowing;
+
+ doFX = !noAnimation && s.isClosed && (o.fxName_open != "none");
+ s.isMoving = true;
+ s.isVisible = true;
+ s.isClosed = false;
+ // update isHidden BEFORE sizing panes - WHY??? Old?
+ if (isShowing) s.isHidden = false;
+
+ if (doFX) { // ANIMATE
+ // mask panes with objects
+ var masks = "center"+ (c.dir=="horz" ? ",west,east" : "");
+ if (s.isSliding) masks += ","+ _c.oppositeEdge[pane];
+ showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true
+ lockPaneForFX(pane, true); // need to set left/top so animation will work
+ $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() {
+ lockPaneForFX(pane, false); // undo
+ if (s.isVisible) open_2(); // continue
+ queueNext();
+ });
+ }
+ else { // no animation
+ _showPane(pane);// just show pane and...
+ open_2(); // continue
+ queueNext();
+ };
+ });
+
+ // SUBROUTINE
+ function open_2 () {
+ s.isMoving = false;
+
+ // cure iframe display issues
+ _fixIframe(pane);
+
+ // NOTE: if isSliding, then other panes are NOT 'resized'
+ if (!s.isSliding) { // resize all panes adjacent to this one
+ hideMasks(); // remove any masks shown while opening
+ sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback
+ }
+
+ // set classes, position handles and execute callbacks...
+ setAsOpen(pane);
+ };
+
+ }
+
+ /**
+ * @param {string} pane The pane just opened, ie: north, south, east, or west
+ * @param {boolean=} [skipCallback=false]
+ */
+, setAsOpen = function (pane, skipCallback) {
+ var
+ $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , side = _c[pane].side.toLowerCase()
+ , inset = "inset"+ _c[pane].side
+ , rClass = o.resizerClass
+ , tClass = o.togglerClass
+ , _pane = "-"+ pane // used for classNames
+ , _open = "-open"
+ , _closed = "-closed"
+ , _sliding= "-sliding"
+ ;
+ $R
+ .css(side, sC[inset] + getPaneSize(pane)) // move the resizer
+ .removeClass( rClass+_closed +" "+ rClass+_pane+_closed )
+ .addClass( rClass+_open +" "+ rClass+_pane+_open )
+ ;
+ if (s.isSliding)
+ $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+ else // in case 'was sliding'
+ $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+
+ if (o.resizerDblClickToggle)
+ $R.bind("dblclick", toggle );
+ removeHover( 0, $R ); // remove hover classes
+ if (o.resizable && $.layout.plugins.draggable)
+ $R .draggable("enable")
+ .css("cursor", o.resizerCursor)
+ .attr("title", o.resizerTip);
+ else if (!s.isSliding)
+ $R.css("cursor", "default"); // n-resize, s-resize, etc
+
+ // if pane also has a toggler button, adjust that too
+ if ($T) {
+ $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed )
+ .addClass( tClass+_open +" "+ tClass+_pane+_open )
+ .attr("title", o.togglerTip_open); // may be blank
+ removeHover( 0, $T ); // remove hover classes
+ // toggler-content - if exists
+ $T.children(".content-closed").hide();
+ $T.children(".content-open").css("display","block");
+ }
+
+ // sync any 'pin buttons'
+ syncPinBtns(pane, !s.isSliding);
+
+ // update pane-state dimensions - BEFORE resizing content
+ $.extend(s, elDims($P));
+
+ if (state.initialized) {
+ // resize resizer & toggler sizes for all panes
+ sizeHandles();
+ // resize content every time pane opens - to be sure
+ sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving'
+ }
+
+ if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) {
+ // onopen callback
+ _runCallbacks("onopen_end", pane);
+ // onshow callback - TODO: should this be here?
+ if (s.isShowing) _runCallbacks("onshow_end", pane);
+
+ // ALSO call onresize because layout-size *may* have changed while pane was closed
+ if (state.initialized)
+ _runCallbacks("onresize_end", pane);
+ }
+
+ // TODO: Somehow sizePane("north") is being called after this point???
+ }
+
+
+ /**
+ * slideOpen / slideClose / slideToggle
+ *
+ * Pass-though methods for sliding
+ */
+, slideOpen = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var evt = evtObj(evt_or_pane)
+ , pane = evtPane.call(this, evt_or_pane)
+ , s = state[pane]
+ , delay = options[pane].slideDelay_open
+ ;
+ // prevent event from triggering on NEW resizer binding created below
+ if (evt) evt.stopImmediatePropagation();
+
+ if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0)
+ // trigger = mouseenter - use a delay
+ timer.set(pane+"_openSlider", open_NOW, delay);
+ else
+ open_NOW(); // will unbind events if is already open
+
+ /**
+ * SUBROUTINE for timed open
+ */
+ function open_NOW () {
+ if (!s.isClosed) // skip if no longer closed!
+ bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
+ else if (!s.isMoving)
+ open(pane, true); // true = slide - open() will handle binding
+ };
+ }
+
+, slideClose = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var evt = evtObj(evt_or_pane)
+ , pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override
+ ;
+ if (s.isClosed || s.isResizing)
+ return; // skip if already closed OR in process of resizing
+ else if (o.slideTrigger_close === "click")
+ close_NOW(); // close immediately onClick
+ else if (o.preventQuickSlideClose && s.isMoving)
+ return; // handle Chrome quick-close on slide-open
+ else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane]))
+ return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
+ else if (evt) // trigger = mouseleave - use a delay
+ // 1 sec delay if 'opening', else .3 sec
+ timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay));
+ else // called programically
+ close_NOW();
+
+ /**
+ * SUBROUTINE for timed close
+ */
+ function close_NOW () {
+ if (s.isClosed) // skip 'close' if already closed!
+ bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here?
+ else if (!s.isMoving)
+ close(pane); // close will handle unbinding
+ };
+ }
+
+ /**
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ */
+, slideToggle = function (evt_or_pane) {
+ var pane = evtPane.call(this, evt_or_pane);
+ toggle(pane, true);
+ }
+
+
+ /**
+ * Must set left/top on East/South panes so animation will work properly
+ *
+ * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored!
+ * @param {boolean} doLock true = set left/top, false = remove
+ */
+, lockPaneForFX = function (pane, doLock) {
+ var $P = $Ps[pane]
+ , s = state[pane]
+ , o = options[pane]
+ , z = options.zIndexes
+ ;
+ if (doLock) {
+ $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation
+ if (pane=="south")
+ $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() });
+ else if (pane=="east")
+ $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() });
+ }
+ else { // animation DONE - RESET CSS
+ // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome
+ $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) });
+ if (pane=="south")
+ $P.css({ top: "auto" });
+ // if pane is positioned 'off-screen', then DO NOT screw with it!
+ else if (pane=="east" && !$P.css("left").match(/\-99999/))
+ $P.css({ left: "auto" });
+ // fix anti-aliasing in IE - only needed for animations that change opacity
+ if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1)
+ $P[0].style.removeAttribute('filter');
+ }
+ }
+
+
+ /**
+ * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger
+ *
+ * @see open(), close()
+ * @param {string} pane The pane to enable/disable, 'north', 'south', etc.
+ * @param {boolean} enable Enable or Disable sliding?
+ */
+, bindStartSlidingEvent = function (pane, enable) {
+ var o = options[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , evtName = o.slideTrigger_open.toLowerCase()
+ ;
+ if (!$R || (enable && !o.slidable)) return;
+
+ // make sure we have a valid event
+ if (evtName.match(/mouseover/))
+ evtName = o.slideTrigger_open = "mouseenter";
+ else if (!evtName.match(/click|dblclick|mouseenter/))
+ evtName = o.slideTrigger_open = "click";
+
+ $R
+ // add or remove event
+ [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen)
+ // set the appropriate cursor & title/tip
+ .css("cursor", enable ? o.sliderCursor : "default")
+ .attr("title", enable ? o.sliderTip : "")
+ ;
+ }
+
+ /**
+ * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed
+ * Also increases zIndex when pane is sliding open
+ * See bindStartSlidingEvent for code to control 'slide open'
+ *
+ * @see slideOpen(), slideClose()
+ * @param {string} pane The pane to process, 'north', 'south', etc.
+ * @param {boolean} enable Enable or Disable events?
+ */
+, bindStopSlidingEvents = function (pane, enable) {
+ var o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , z = options.zIndexes
+ , evtName = o.slideTrigger_close.toLowerCase()
+ , action = (enable ? "bind" : "unbind")
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ ;
+ s.isSliding = enable; // logic
+ timer.clear(pane+"_closeSlider"); // just in case
+
+ // remove 'slideOpen' event from resizer
+ // ALSO will raise the zIndex of the pane & resizer
+ if (enable) bindStartSlidingEvent(pane, false);
+
+ // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not
+ $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal);
+ $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1
+
+ // make sure we have a valid event
+ if (!evtName.match(/click|mouseleave/))
+ evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout'
+
+ // add/remove slide triggers
+ $R[action](evtName, slideClose); // base event on resize
+ // need extra events for mouseleave
+ if (evtName === "mouseleave") {
+ // also close on pane.mouseleave
+ $P[action]("mouseleave."+ sID, slideClose);
+ // cancel timer when mouse moves between 'pane' and 'resizer'
+ $R[action]("mouseenter."+ sID, cancelMouseOut);
+ $P[action]("mouseenter."+ sID, cancelMouseOut);
+ }
+
+ if (!enable)
+ timer.clear(pane+"_closeSlider");
+ else if (evtName === "click" && !o.resizable) {
+ // IF pane is not resizable (which already has a cursor and tip)
+ // then set the a cursor & title/tip on resizer when sliding
+ $R.css("cursor", enable ? o.sliderCursor : "default");
+ $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane"
+ }
+
+ // SUBROUTINE for mouseleave timer clearing
+ function cancelMouseOut (evt) {
+ timer.clear(pane+"_closeSlider");
+ evt.stopPropagation();
+ }
+ }
+
+
+ /**
+ * Hides/closes a pane if there is insufficient room - reverses this when there is room again
+ * MUST have already called setSizeLimits() before calling this method
+ *
+ * @param {string} pane The pane being resized
+ * @param {boolean=} [isOpening=false] Called from onOpen?
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [force=false]
+ */
+, makePaneFit = function (pane, isOpening, skipCallback, force) {
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , isSidePane = c.dir==="vert"
+ , hasRoom = false
+ ;
+ // special handling for center & east/west panes
+ if (pane === "center" || (isSidePane && s.noVerticalRoom)) {
+ // see if there is enough room to display the pane
+ // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth);
+ hasRoom = (s.maxHeight >= 0);
+ if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now
+ _showPane(pane);
+ if ($R) $R.show();
+ s.isVisible = true;
+ s.noRoom = false;
+ if (isSidePane) s.noVerticalRoom = false;
+ _fixIframe(pane);
+ }
+ else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now
+ _hidePane(pane);
+ if ($R) $R.hide();
+ s.isVisible = false;
+ s.noRoom = true;
+ }
+ }
+
+ // see if there is enough room to fit the border-pane
+ if (pane === "center") {
+ // ignore center in this block
+ }
+ else if (s.minSize <= s.maxSize) { // pane CAN fit
+ hasRoom = true;
+ if (s.size > s.maxSize) // pane is too big - shrink it
+ sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation
+ else if (s.size < s.minSize) // pane is too small - enlarge it
+ sizePane(pane, s.minSize, skipCallback, force, true);
+ // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen
+ else if ($R && s.isVisible && $P.is(":visible")) {
+ // make sure resizer-bar is positioned correctly
+ // handles situation where nested layout was 'hidden' when initialized
+ var side = c.side.toLowerCase()
+ , pos = s.size + sC["inset"+ c.side]
+ ;
+ if ($.layout.cssNum($R, side) != pos) $R.css( side, pos );
+ }
+
+ // if was previously hidden due to noRoom, then RESET because NOW there is room
+ if (s.noRoom) {
+ // s.noRoom state will be set by open or show
+ if (s.wasOpen && o.closable) {
+ if (o.autoReopen)
+ open(pane, false, true, true); // true = noAnimation, true = noAlert
+ else // leave the pane closed, so just update state
+ s.noRoom = false;
+ }
+ else
+ show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert
+ }
+ }
+ else { // !hasRoom - pane CANNOT fit
+ if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now...
+ s.noRoom = true; // update state
+ s.wasOpen = !s.isClosed && !s.isSliding;
+ if (s.isClosed){} // SKIP
+ else if (o.closable) // 'close' if possible
+ close(pane, true, true); // true = force, true = noAnimation
+ else // 'hide' pane if cannot just be closed
+ hide(pane, true); // true = noAnimation
+ }
+ }
+ }
+
+
+ /**
+ * sizePane / manualSizePane
+ * sizePane is called only by internal methods whenever a pane needs to be resized
+ * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized'
+ *
+ * @param {string} pane The pane being resized
+ * @param {number} size The *desired* new size for this pane - will be validated
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [noAnimation=false]
+ */
+, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete...
+ , forceResize = o.livePaneResizing && !s.isResizing
+ ;
+ // ANY call to manualSizePane disables autoResize - ie, percentage sizing
+ o.autoResize = false;
+ // flow-through...
+ sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled
+ }
+
+ /**
+ * @param {string} pane The pane being resized
+ * @param {number} size The *desired* new size for this pane - will be validated
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [force=false] Force resizing even if does not seem necessary
+ * @param {boolean=} [noAnimation=false]
+ */
+, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event?
+ , o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , side = _c[pane].side.toLowerCase()
+ , dimName = _c[pane].sizeType.toLowerCase()
+ , inset = "inset"+ _c[pane].side
+ , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize
+ , doFX = noAnimation !== true && o.animatePaneSizing
+ , oldSize, newSize
+ ;
+ // QUEUE in case another action/animation is in progress
+ $N.queue(function( queueNext ){
+ // calculate 'current' min/max sizes
+ setSizeLimits(pane); // update pane-state
+ oldSize = s.size;
+ size = _parseSize(pane, size); // handle percentages & auto
+ size = max(size, _parseSize(pane, o.minSize));
+ size = min(size, s.maxSize);
+ if (size < s.minSize) { // not enough room for pane!
+ queueNext(); // call before makePaneFit() because it needs the queue free
+ makePaneFit(pane, false, skipCallback); // will hide or close pane
+ return;
+ }
+
+ // IF newSize is same as oldSize, then nothing to do - abort
+ if (!force && size === oldSize)
+ return queueNext();
+
+ // onresize_start callback CANNOT cancel resizing because this would break the layout!
+ if (!skipCallback && state.initialized && s.isVisible)
+ _runCallbacks("onresize_start", pane);
+
+ // resize the pane, and make sure its visible
+ newSize = cssSize(pane, size);
+
+ if (doFX && $P.is(":visible")) { // ANIMATE
+ var fx = $.layout.effects.size[pane] || $.layout.effects.size.all
+ , easing = o.fxSettings_size.easing || fx.easing
+ , z = options.zIndexes
+ , props = {};
+ props[ dimName ] = newSize +'px';
+ s.isMoving = true;
+ // overlay all elements during animation
+ $P.css({ zIndex: z.pane_animate })
+ .show().animate( props, o.fxSpeed_size, easing, function(){
+ // reset zIndex after animation
+ $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) });
+ s.isMoving = false;
+ sizePane_2(); // continue
+ queueNext();
+ });
+ }
+ else { // no animation
+ $P.css( dimName, newSize ); // resize pane
+ // if pane is visible, then
+ if ($P.is(":visible"))
+ sizePane_2(); // continue
+ else {
+ // pane is NOT VISIBLE, so just update state data...
+ // when pane is *next opened*, it will have the new size
+ s.size = size; // update state.size
+ $.extend(s, elDims($P)); // update state dimensions
+ }
+ queueNext();
+ };
+
+ });
+
+ // SUBROUTINE
+ function sizePane_2 () {
+ /* Panes are sometimes not sized precisely in some browsers!?
+ * This code will resize the pane up to 3 times to nudge the pane to the correct size
+ */
+ var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight()
+ , tries = [{
+ pane: pane
+ , count: 1
+ , target: size
+ , actual: actual
+ , correct: (size === actual)
+ , attempt: size
+ , cssSize: newSize
+ }]
+ , lastTry = tries[0]
+ , msg = 'Inaccurate size after resizing the '+ pane +'-pane.'
+ ;
+ while ( !lastTry.correct ) {
+ thisTry = { pane: pane, count: lastTry.count+1, target: size };
+
+ if (lastTry.actual > size)
+ thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size));
+ else // lastTry.actual < size
+ thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual));
+
+ thisTry.cssSize = cssSize(pane, thisTry.attempt);
+ $P.css( dimName, thisTry.cssSize );
+
+ thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight();
+ thisTry.correct = (size === thisTry.actual);
+
+ // if showDebugMessages, log attempts and alert the user of this *non-fatal error*
+ if (options.showDebugMessages) {
+ if ( tries.length === 1) {
+ _log(msg, false);
+ _log(lastTry, false);
+ }
+ _log(thisTry, false);
+ }
+
+ // after 4 tries, is as close as its gonna get!
+ if (tries.length > 3) break;
+
+ tries.push( thisTry );
+ lastTry = tries[ tries.length - 1 ];
+ }
+ // END TESTING CODE
+
+ // update pane-state dimensions
+ s.size = size;
+ $.extend(s, elDims($P));
+
+ if (s.isVisible && $P.is(":visible")) {
+ // reposition the resizer-bar
+ if ($R) $R.css( side, size + sC[inset] );
+ // resize the content-div
+ sizeContent(pane);
+ }
+
+ if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible)
+ _runCallbacks("onresize_end", pane);
+
+ // resize all the adjacent panes, and adjust their toggler buttons
+ // when skipCallback passed, it means the controlling method will handle 'other panes'
+ if (!skipCallback) {
+ // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize
+ if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force);
+ sizeHandles();
+ }
+
+ // if opposite-pane was autoClosed, see if it can be autoOpened now
+ var altPane = _c.oppositeEdge[pane];
+ if (size < oldSize && state[ altPane ].noRoom) {
+ setSizeLimits( altPane );
+ makePaneFit( altPane, false, skipCallback );
+ }
+
+ // DEBUG - ALERT user/developer so they know there was a sizing problem
+ if (options.showDebugMessages && tries.length > 1)
+ _log(msg +'\nSee the Error Console for details.', true);
+ }
+ }
+
+ /**
+ * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide()
+ * @param {string} panes The pane(s) being resized, comma-delmited string
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [force=false]
+ */
+, sizeMidPanes = function (panes, skipCallback, force) {
+ panes = (panes ? panes : "east,west,center").split(",");
+
+ $.each(panes, function (i, pane) {
+ if (!$Ps[pane]) return; // NO PANE - skip
+ var
+ o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , isCenter= (pane=="center")
+ , hasRoom = true
+ , CSS = {}
+ , newCenter = calcNewCenterPaneDims()
+ ;
+ // update pane-state dimensions
+ $.extend(s, elDims($P));
+
+ if (pane === "center") {
+ if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight)
+ return true; // SKIP - pane already the correct size
+ // set state for makePaneFit() logic
+ $.extend(s, cssMinDims(pane), {
+ maxWidth: newCenter.width
+ , maxHeight: newCenter.height
+ });
+ CSS = newCenter;
+ // convert OUTER width/height to CSS width/height
+ CSS.width = cssW($P, CSS.width);
+ // NEW - allow pane to extend 'below' visible area rather than hide it
+ CSS.height = cssH($P, CSS.height);
+ hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW
+ // during layout init, try to shrink east/west panes to make room for center
+ if (!state.initialized && o.minWidth > s.outerWidth) {
+ var
+ reqPx = o.minWidth - s.outerWidth
+ , minE = options.east.minSize || 0
+ , minW = options.west.minSize || 0
+ , sizeE = state.east.size
+ , sizeW = state.west.size
+ , newE = sizeE
+ , newW = sizeW
+ ;
+ if (reqPx > 0 && state.east.isVisible && sizeE > minE) {
+ newE = max( sizeE-minE, sizeE-reqPx );
+ reqPx -= sizeE-newE;
+ }
+ if (reqPx > 0 && state.west.isVisible && sizeW > minW) {
+ newW = max( sizeW-minW, sizeW-reqPx );
+ reqPx -= sizeW-newW;
+ }
+ // IF we found enough extra space, then resize the border panes as calculated
+ if (reqPx === 0) {
+ if (sizeE != minE)
+ sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done
+ if (sizeW != minW)
+ sizePane('west', newW, true, force, true);
+ // now start over!
+ sizeMidPanes('center', skipCallback, force);
+ return; // abort this loop
+ }
+ }
+ }
+ else { // for east and west, set only the height, which is same as center height
+ // set state.min/maxWidth/Height for makePaneFit() logic
+ if (s.isVisible && !s.noVerticalRoom)
+ $.extend(s, elDims($P), cssMinDims(pane))
+ if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight)
+ return true; // SKIP - pane already the correct size
+ // east/west have same top, bottom & height as center
+ CSS.top = newCenter.top;
+ CSS.bottom = newCenter.bottom;
+ // NEW - allow pane to extend 'below' visible area rather than hide it
+ CSS.height = cssH($P, newCenter.height);
+ s.maxHeight = CSS.height;
+ hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW
+ if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic
+ }
+
+ if (hasRoom) {
+ // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized
+ if (!skipCallback && state.initialized)
+ _runCallbacks("onresize_start", pane);
+
+ $P.css(CSS); // apply the CSS to pane
+ sizeHandles(pane); // also update resizer length
+ if (s.noRoom && !s.isClosed && !s.isHidden)
+ makePaneFit(pane); // will re-open/show auto-closed/hidden pane
+ if (s.isVisible) {
+ $.extend(s, elDims($P)); // update pane dimensions
+ if (state.initialized) sizeContent(pane); // also resize the contents, if exists
+ }
+ }
+ else if (!s.noRoom && s.isVisible) // no room for pane
+ makePaneFit(pane); // will hide or close pane
+
+ if (!s.isVisible)
+ return true; // DONE - next pane
+
+ /*
+ * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes
+ * Normally these panes have only 'left' & 'right' positions so pane auto-sizes
+ * ALSO required when pane is an IFRAME because will NOT default to 'full width'
+ */
+ if (pane === "center") { // finished processing midPanes
+ var b = $.layout.browser;
+ var fix = b.isIE6 || (b.msie && !$.support.boxModel);
+ if ($Ps.north && (fix || state.north.tagName=="IFRAME"))
+ $Ps.north.css("width", cssW($Ps.north, sC.innerWidth));
+ if ($Ps.south && (fix || state.south.tagName=="IFRAME"))
+ $Ps.south.css("width", cssW($Ps.south, sC.innerWidth));
+ }
+
+ // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized
+ if (!skipCallback && state.initialized)
+ _runCallbacks("onresize_end", pane);
+ });
+ }
+
+
+ /**
+ * @see window.onresize(), callbacks or custom code
+ */
+, resizeAll = function () {
+ if (!state.initialized) {
+ _initLayoutElements();
+ return; // no need to resize since we just initialized!
+ }
+ var oldW = sC.innerWidth
+ , oldH = sC.innerHeight
+ ;
+ // cannot size layout when 'container' is hidden or collapsed
+ if (!$N.is(":visible:") ) return;
+ $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions
+ if (!sC.outerHeight) return;
+
+ // onresizeall_start will CANCEL resizing if returns false
+ // state.container has already been set, so user can access this info for calcuations
+ if (false === _runCallbacks("onresizeall_start")) return false;
+
+ var // see if container is now 'smaller' than before
+ shrunkH = (sC.innerHeight < oldH)
+ , shrunkW = (sC.innerWidth < oldW)
+ , $P, o, s, dir
+ ;
+ // NOTE special order for sizing: S-N-E-W
+ $.each(["south","north","east","west"], function (i, pane) {
+ if (!$Ps[pane]) return; // no pane - SKIP
+ s = state[pane];
+ o = options[pane];
+ dir = _c[pane].dir;
+
+ if (o.autoResize && s.size != o.size) // resize pane to original size set in options
+ sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation
+ else {
+ setSizeLimits(pane);
+ makePaneFit(pane, false, true, true); // true=skipCallback/forceResize
+ }
+ });
+
+ sizeMidPanes("", true, true); // true=skipCallback, true=forceResize
+ sizeHandles(); // reposition the toggler elements
+
+ // trigger all individual pane callbacks AFTER layout has finished resizing
+ o = options; // reuse alias
+ $.each(_c.allPanes, function (i, pane) {
+ $P = $Ps[pane];
+ if (!$P) return; // SKIP
+ if (state[pane].isVisible) // undefined for non-existent panes
+ _runCallbacks("onresize_end", pane); // callback - if exists
+ });
+
+ _runCallbacks("onresizeall_end");
+ //_triggerLayoutEvent(pane, 'resizeall');
+ }
+
+ /**
+ * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll
+ *
+ * @param {string} pane The pane just resized or opened
+ */
+, resizeChildLayout = function (evt_or_pane) {
+ var pane = evtPane.call(this, evt_or_pane);
+ if (!options[pane].resizeChildLayout) return;
+ var $P = $Ps[pane]
+ , $C = $Cs[pane]
+ , d = "layout"
+ , P = Instance[pane]
+ , L = children[pane]
+ ;
+ // user may have manually set EITHER instance pointer, so handle that
+ if (P.child && !L) {
+ // have to reverse the pointers!
+ var el = P.child.container;
+ L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance
+ }
+
+ // if a layout-pointer exists, see if child has been destroyed
+ if (L && L.destroyed)
+ L = children[pane] = null; // clear child pointers
+ // no child layout pointer is set - see if there is a child layout NOW
+ if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers
+
+ // ALWAYS refresh the pane.child alias
+ P.child = children[pane];
+
+ if (L) L.resizeAll();
+ }
+
+
+ /**
+ * IF pane has a content-div, then resize all elements inside pane to fit pane-height
+ *
+ * @param {string=} [panes=""] The pane(s) being resized
+ * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured?
+ */
+, sizeContent = function (evt_or_panes, remeasure) {
+ if (!isInitialized()) return;
+
+ var panes = evtPane.call(this, evt_or_panes);
+ panes = panes ? panes.split(",") : _c.allPanes;
+
+ $.each(panes, function (idx, pane) {
+ var
+ $P = $Ps[pane]
+ , $C = $Cs[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , m = s.content // m = measurements
+ ;
+ if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip
+
+ // if content-element was REMOVED, update OR remove the pointer
+ if (!$C.length) {
+ initContent(pane, false); // false = do NOT sizeContent() - already there!
+ if (!$C) return; // no replacement element found - pointer have been removed
+ }
+
+ // onsizecontent_start will CANCEL resizing if returns false
+ if (false === _runCallbacks("onsizecontent_start", pane)) return;
+
+ // skip re-measuring offsets if live-resizing
+ if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) {
+ _measure();
+ // if any footers are below pane-bottom, they may not measure correctly,
+ // so allow pane overflow and re-measure
+ if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") {
+ $P.css("overflow", "visible");
+ _measure(); // remeasure while overflowing
+ $P.css("overflow", "hidden");
+ }
+ }
+ // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders
+ var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom);
+
+ if (!$C.is(":visible") || m.height != newH) {
+ // size the Content element to fit new pane-size - will autoHide if not enough room
+ setOuterHeight($C, newH, true); // true=autoHide
+ m.height = newH; // save new height
+ };
+
+ if (state.initialized)
+ _runCallbacks("onsizecontent_end", pane);
+
+ function _below ($E) {
+ return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0));
+ };
+
+ function _measure () {
+ var
+ ignore = options[pane].contentIgnoreSelector
+ , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL
+ , $Fs_vis = $Fs.filter(':visible')
+ , $F = $Fs_vis.filter(':last')
+ ;
+ m = {
+ top: $C[0].offsetTop
+ , height: $C.outerHeight()
+ , numFooters: $Fs.length
+ , hiddenFooters: $Fs.length - $Fs_vis.length
+ , spaceBelow: 0 // correct if no content footer ($E)
+ }
+ m.spaceAbove = m.top; // just for state - not used in calc
+ m.bottom = m.top + m.height;
+ if ($F.length)
+ //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom)
+ m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F);
+ else // no footer - check marginBottom on Content element itself
+ m.spaceBelow = _below($C);
+ };
+ });
+ }
+
+
+ /**
+ * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary
+ *
+ * @see initHandles(), open(), close(), resizeAll()
+ * @param {string=} [panes=""] The pane(s) being resized
+ */
+, sizeHandles = function (evt_or_panes) {
+ var panes = evtPane.call(this, evt_or_panes)
+ panes = panes ? panes.split(",") : _c.borderPanes;
+
+ $.each(panes, function (i, pane) {
+ var
+ o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , $TC
+ ;
+ if (!$P || !$R) return;
+
+ var
+ dir = _c[pane].dir
+ , _state = (s.isClosed ? "_closed" : "_open")
+ , spacing = o["spacing"+ _state]
+ , togAlign = o["togglerAlign"+ _state]
+ , togLen = o["togglerLength"+ _state]
+ , paneLen
+ , left
+ , offset
+ , CSS = {}
+ ;
+
+ if (spacing === 0) {
+ $R.hide();
+ return;
+ }
+ else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason
+ $R.show(); // in case was previously hidden
+
+ // Resizer Bar is ALWAYS same width/height of pane it is attached to
+ if (dir === "horz") { // north/south
+ //paneLen = $P.outerWidth(); // s.outerWidth ||
+ paneLen = sC.innerWidth; // handle offscreen-panes
+ s.resizerLength = paneLen;
+ left = $.layout.cssNum($P, "left")
+ $R.css({
+ width: cssW($R, paneLen) // account for borders & padding
+ , height: cssH($R, spacing) // ditto
+ , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes
+ });
+ }
+ else { // east/west
+ paneLen = $P.outerHeight(); // s.outerHeight ||
+ s.resizerLength = paneLen;
+ $R.css({
+ height: cssH($R, paneLen) // account for borders & padding
+ , width: cssW($R, spacing) // ditto
+ , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane?
+ //, top: $.layout.cssNum($Ps["center"], "top")
+ });
+ }
+
+ // remove hover classes
+ removeHover( o, $R );
+
+ if ($T) {
+ if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) {
+ $T.hide(); // always HIDE the toggler when 'sliding'
+ return;
+ }
+ else
+ $T.show(); // in case was previously hidden
+
+ if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) {
+ togLen = paneLen;
+ offset = 0;
+ }
+ else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed
+ if (isStr(togAlign)) {
+ switch (togAlign) {
+ case "top":
+ case "left": offset = 0;
+ break;
+ case "bottom":
+ case "right": offset = paneLen - togLen;
+ break;
+ case "middle":
+ case "center":
+ default: offset = round((paneLen - togLen) / 2); // 'default' catches typos
+ }
+ }
+ else { // togAlign = number
+ var x = parseInt(togAlign, 10); //
+ if (togAlign >= 0) offset = x;
+ else offset = paneLen - togLen + x; // NOTE: x is negative!
+ }
+ }
+
+ if (dir === "horz") { // north/south
+ var width = cssW($T, togLen);
+ $T.css({
+ width: width // account for borders & padding
+ , height: cssH($T, spacing) // ditto
+ , left: offset // TODO: VERIFY that toggler positions correctly for ALL values
+ , top: 0
+ });
+ // CENTER the toggler content SPAN
+ $T.children(".content").each(function(){
+ $TC = $(this);
+ $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative
+ });
+ }
+ else { // east/west
+ var height = cssH($T, togLen);
+ $T.css({
+ height: height // account for borders & padding
+ , width: cssW($T, spacing) // ditto
+ , top: offset // POSITION the toggler
+ , left: 0
+ });
+ // CENTER the toggler content SPAN
+ $T.children(".content").each(function(){
+ $TC = $(this);
+ $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative
+ });
+ }
+
+ // remove ALL hover classes
+ removeHover( 0, $T );
+ }
+
+ // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now
+ if (!state.initialized && (o.initHidden || s.noRoom)) {
+ $R.hide();
+ if ($T) $T.hide();
+ }
+ });
+ }
+
+
+ /**
+ * @param {string} pane
+ */
+, enableClosable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $T = $Ts[pane]
+ , o = options[pane]
+ ;
+ if (!$T) return;
+ o.closable = true;
+ $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); })
+ .css("visibility", "visible")
+ .css("cursor", "pointer")
+ .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank
+ .show();
+ }
+ /**
+ * @param {string} pane
+ * @param {boolean=} [hide=false]
+ */
+, disableClosable = function (evt_or_pane, hide) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $T = $Ts[pane]
+ ;
+ if (!$T) return;
+ options[pane].closable = false;
+ // is closable is disable, then pane MUST be open!
+ if (state[pane].isClosed) open(pane, false, true);
+ $T .unbind("."+ sID)
+ .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues
+ .css("cursor", "default")
+ .attr("title", "");
+ }
+
+
+ /**
+ * @param {string} pane
+ */
+, enableSlidable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ ;
+ if (!$R || !$R.data('draggable')) return;
+ options[pane].slidable = true;
+ if (s.isClosed)
+ bindStartSlidingEvent(pane, true);
+ }
+ /**
+ * @param {string} pane
+ */
+, disableSlidable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ ;
+ if (!$R) return;
+ options[pane].slidable = false;
+ if (state[pane].isSliding)
+ close(pane, false, true);
+ else {
+ bindStartSlidingEvent(pane, false);
+ $R .css("cursor", "default")
+ .attr("title", "");
+ removeHover(null, $R[0]); // in case currently hovered
+ }
+ }
+
+
+ /**
+ * @param {string} pane
+ */
+, enableResizable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ , o = options[pane]
+ ;
+ if (!$R || !$R.data('draggable')) return;
+ o.resizable = true;
+ $R.draggable("enable");
+ if (!state[pane].isClosed)
+ $R .css("cursor", o.resizerCursor)
+ .attr("title", o.resizerTip);
+ }
+ /**
+ * @param {string} pane
+ */
+, disableResizable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ ;
+ if (!$R || !$R.data('draggable')) return;
+ options[pane].resizable = false;
+ $R .draggable("disable")
+ .css("cursor", "default")
+ .attr("title", "");
+ removeHover(null, $R[0]); // in case currently hovered
+ }
+
+
+ /**
+ * Move a pane from source-side (eg, west) to target-side (eg, east)
+ * If pane exists on target-side, move that to source-side, ie, 'swap' the panes
+ *
+ * @param {string} pane1 The pane/edge being swapped
+ * @param {string} pane2 ditto
+ */
+, swapPanes = function (evt_or_pane1, pane2) {
+ if (!isInitialized()) return;
+ var pane1 = evtPane.call(this, evt_or_pane1);
+ // change state.edge NOW so callbacks can know where pane is headed...
+ state[pane1].edge = pane2;
+ state[pane2].edge = pane1;
+ // run these even if NOT state.initialized
+ if (false === _runCallbacks("onswap_start", pane1)
+ || false === _runCallbacks("onswap_start", pane2)
+ ) {
+ state[pane1].edge = pane1; // reset
+ state[pane2].edge = pane2;
+ return;
+ }
+
+ var
+ oPane1 = copy( pane1 )
+ , oPane2 = copy( pane2 )
+ , sizes = {}
+ ;
+ sizes[pane1] = oPane1 ? oPane1.state.size : 0;
+ sizes[pane2] = oPane2 ? oPane2.state.size : 0;
+
+ // clear pointers & state
+ $Ps[pane1] = false;
+ $Ps[pane2] = false;
+ state[pane1] = {};
+ state[pane2] = {};
+
+ // ALWAYS remove the resizer & toggler elements
+ if ($Ts[pane1]) $Ts[pane1].remove();
+ if ($Ts[pane2]) $Ts[pane2].remove();
+ if ($Rs[pane1]) $Rs[pane1].remove();
+ if ($Rs[pane2]) $Rs[pane2].remove();
+ $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false;
+
+ // transfer element pointers and data to NEW Layout keys
+ move( oPane1, pane2 );
+ move( oPane2, pane1 );
+
+ // cleanup objects
+ oPane1 = oPane2 = sizes = null;
+
+ // make panes 'visible' again
+ if ($Ps[pane1]) $Ps[pane1].css(_c.visible);
+ if ($Ps[pane2]) $Ps[pane2].css(_c.visible);
+
+ // fix any size discrepancies caused by swap
+ resizeAll();
+
+ // run these even if NOT state.initialized
+ _runCallbacks("onswap_end", pane1);
+ _runCallbacks("onswap_end", pane2);
+
+ return;
+
+ function copy (n) { // n = pane
+ var
+ $P = $Ps[n]
+ , $C = $Cs[n]
+ ;
+ return !$P ? false : {
+ pane: n
+ , P: $P ? $P[0] : false
+ , C: $C ? $C[0] : false
+ , state: $.extend(true, {}, state[n])
+ , options: $.extend(true, {}, options[n])
+ }
+ };
+
+ function move (oPane, pane) {
+ if (!oPane) return;
+ var
+ P = oPane.P
+ , C = oPane.C
+ , oldPane = oPane.pane
+ , c = _c[pane]
+ , side = c.side.toLowerCase()
+ , inset = "inset"+ c.side
+ // save pane-options that should be retained
+ , s = $.extend({}, state[pane])
+ , o = options[pane]
+ // RETAIN side-specific FX Settings - more below
+ , fx = { resizerCursor: o.resizerCursor }
+ , re, size, pos
+ ;
+ $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) {
+ fx[k +"_open"] = o[k +"_open"];
+ fx[k +"_close"] = o[k +"_close"];
+ fx[k +"_size"] = o[k +"_size"];
+ });
+
+ // update object pointers and attributes
+ $Ps[pane] = $(P)
+ .data({
+ layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ })
+ .css(_c.hidden)
+ .css(c.cssReq)
+ ;
+ $Cs[pane] = C ? $(C) : false;
+
+ // set options and state
+ options[pane] = $.extend({}, oPane.options, fx);
+ state[pane] = $.extend({}, oPane.state);
+
+ // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west
+ re = new RegExp(o.paneClass +"-"+ oldPane, "g");
+ P.className = P.className.replace(re, o.paneClass +"-"+ pane);
+
+ // ALWAYS regenerate the resizer & toggler elements
+ initHandles(pane); // create the required resizer & toggler
+
+ // if moving to different orientation, then keep 'target' pane size
+ if (c.dir != _c[oldPane].dir) {
+ size = sizes[pane] || 0;
+ setSizeLimits(pane); // update pane-state
+ size = max(size, state[pane].minSize);
+ // use manualSizePane to disable autoResize - not useful after panes are swapped
+ manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation
+ }
+ else // move the resizer here
+ $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0));
+
+
+ // ADD CLASSNAMES & SLIDE-BINDINGS
+ if (oPane.state.isVisible && !s.isVisible)
+ setAsOpen(pane, true); // true = skipCallback
+ else {
+ setAsClosed(pane);
+ bindStartSlidingEvent(pane, true); // will enable events IF option is set
+ }
+
+ // DESTROY the object
+ oPane = null;
+ };
+ }
+
+
+ /**
+ * INTERNAL method to sync pin-buttons when pane is opened or closed
+ * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
+ *
+ * @see open(), setAsOpen(), setAsClosed()
+ * @param {string} pane These are the params returned to callbacks by layout()
+ * @param {boolean} doPin True means set the pin 'down', False means 'up'
+ */
+, syncPinBtns = function (pane, doPin) {
+ if ($.layout.plugins.buttons)
+ $.each(state[pane].pins, function (i, selector) {
+ $.layout.buttons.setPinState(Instance, $(selector), pane, doPin);
+ });
+ }
+
+; // END var DECLARATIONS
+
+ /**
+ * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed
+ *
+ * @see document.keydown()
+ */
+ function keyDown (evt) {
+ if (!evt) return true;
+ var code = evt.keyCode;
+ if (code < 33) return true; // ignore special keys: ENTER, TAB, etc
+
+ var
+ PANE = {
+ 38: "north" // Up Cursor - $.ui.keyCode.UP
+ , 40: "south" // Down Cursor - $.ui.keyCode.DOWN
+ , 37: "west" // Left Cursor - $.ui.keyCode.LEFT
+ , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT
+ }
+ , ALT = evt.altKey // no worky!
+ , SHIFT = evt.shiftKey
+ , CTRL = evt.ctrlKey
+ , CURSOR = (CTRL && code >= 37 && code <= 40)
+ , o, k, m, pane
+ ;
+
+ if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey
+ pane = PANE[code];
+ else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey
+ $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey
+ o = options[p];
+ k = o.customHotkey;
+ m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT"
+ if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches
+ if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches
+ pane = p;
+ return false; // BREAK
+ }
+ }
+ });
+
+ // validate pane
+ if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden)
+ return true;
+
+ toggle(pane);
+
+ evt.stopPropagation();
+ evt.returnValue = false; // CANCEL key
+ return false;
+ };
+
+
+/*
+ * ######################################
+ * UTILITY METHODS
+ * called externally or by initButtons
+ * ######################################
+ */
+
+ /**
+ * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work
+ *
+ * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event
+ */
+ function allowOverflow (el) {
+ if (!isInitialized()) return;
+ if (this && this.tagName) el = this; // BOUND to element
+ var $P;
+ if (isStr(el))
+ $P = $Ps[el];
+ else if ($(el).data("layoutRole"))
+ $P = $(el);
+ else
+ $(el).parents().each(function(){
+ if ($(this).data("layoutRole")) {
+ $P = $(this);
+ return false; // BREAK
+ }
+ });
+ if (!$P || !$P.length) return; // INVALID
+
+ var
+ pane = $P.data("layoutEdge")
+ , s = state[pane]
+ ;
+
+ // if pane is already raised, then reset it before doing it again!
+ // this would happen if allowOverflow is attached to BOTH the pane and an element
+ if (s.cssSaved)
+ resetOverflow(pane); // reset previous CSS before continuing
+
+ // if pane is raised by sliding or resizing, or its closed, then abort
+ if (s.isSliding || s.isResizing || s.isClosed) {
+ s.cssSaved = false;
+ return;
+ }
+
+ var
+ newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) }
+ , curCSS = {}
+ , of = $P.css("overflow")
+ , ofX = $P.css("overflowX")
+ , ofY = $P.css("overflowY")
+ ;
+ // determine which, if any, overflow settings need to be changed
+ if (of != "visible") {
+ curCSS.overflow = of;
+ newCSS.overflow = "visible";
+ }
+ if (ofX && !ofX.match(/visible|auto/)) {
+ curCSS.overflowX = ofX;
+ newCSS.overflowX = "visible";
+ }
+ if (ofY && !ofY.match(/visible|auto/)) {
+ curCSS.overflowY = ofX;
+ newCSS.overflowY = "visible";
+ }
+
+ // save the current overflow settings - even if blank!
+ s.cssSaved = curCSS;
+
+ // apply new CSS to raise zIndex and, if necessary, make overflow 'visible'
+ $P.css( newCSS );
+
+ // make sure the zIndex of all other panes is normal
+ $.each(_c.allPanes, function(i, p) {
+ if (p != pane) resetOverflow(p);
+ });
+
+ };
+ /**
+ * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event
+ */
+ function resetOverflow (el) {
+ if (!isInitialized()) return;
+ if (this && this.tagName) el = this; // BOUND to element
+ var $P;
+ if (isStr(el))
+ $P = $Ps[el];
+ else if ($(el).data("layoutRole"))
+ $P = $(el);
+ else
+ $(el).parents().each(function(){
+ if ($(this).data("layoutRole")) {
+ $P = $(this);
+ return false; // BREAK
+ }
+ });
+ if (!$P || !$P.length) return; // INVALID
+
+ var
+ pane = $P.data("layoutEdge")
+ , s = state[pane]
+ , CSS = s.cssSaved || {}
+ ;
+ // reset the zIndex
+ if (!s.isSliding && !s.isResizing)
+ $P.css("zIndex", options.zIndexes.pane_normal);
+
+ // reset Overflow - if necessary
+ $P.css( CSS );
+
+ // clear var
+ s.cssSaved = false;
+ };
+
+/*
+ * #####################
+ * CREATE/RETURN LAYOUT
+ * #####################
+ */
+
+ // validate that container exists
+ var $N = $(this).eq(0); // FIRST matching Container element
+ if (!$N.length) {
+ if (options.showErrorMessages)
+ _log( lang.errContainerMissing, true );
+ return null;
+ };
+
+ // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout")
+ // return the Instance-pointer if layout has already been initialized
+ if ($N.data("layoutContainer") && $N.data("layout"))
+ return $N.data("layout"); // cached pointer
+
+ // init global vars
+ var
+ $Ps = {} // Panes x5 - set in initPanes()
+ , $Cs = {} // Content x5 - set in initPanes()
+ , $Rs = {} // Resizers x4 - set in initHandles()
+ , $Ts = {} // Togglers x4 - set in initHandles()
+ , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV)
+ // aliases for code brevity
+ , sC = state.container // alias for easy access to 'container dimensions'
+ , sID = state.id // alias for unique layout ID/namespace - eg: "layout435"
+ ;
+
+ // create Instance object to expose data & option Properties, and primary action Methods
+ var Instance = {
+ // layout data
+ options: options // property - options hash
+ , state: state // property - dimensions hash
+ // object pointers
+ , container: $N // property - object pointers for layout container
+ , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center
+ , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center
+ , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north
+ , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north
+ // border-pane open/close
+ , hide: hide // method - ditto
+ , show: show // method - ditto
+ , toggle: toggle // method - pass a 'pane' ("north", "west", etc)
+ , open: open // method - ditto
+ , close: close // method - ditto
+ , slideOpen: slideOpen // method - ditto
+ , slideClose: slideClose // method - ditto
+ , slideToggle: slideToggle // method - ditto
+ // pane actions
+ , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data
+ , _sizePane: sizePane // method -intended for user by plugins only!
+ , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto'
+ , sizeContent: sizeContent // method - pass a 'pane'
+ , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them
+ // pane element methods
+ , initContent: initContent // method - ditto
+ , addPane: addPane // method - pass a 'pane'
+ , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem
+ , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions
+ // special pane option setting
+ , enableClosable: enableClosable // method - pass a 'pane'
+ , disableClosable: disableClosable // method - ditto
+ , enableSlidable: enableSlidable // method - ditto
+ , disableSlidable: disableSlidable // method - ditto
+ , enableResizable: enableResizable // method - ditto
+ , disableResizable: disableResizable// method - ditto
+ // utility methods for panes
+ , allowOverflow: allowOverflow // utility - pass calling element (this)
+ , resetOverflow: resetOverflow // utility - ditto
+ // layout control
+ , destroy: destroy // method - no parameters
+ , initPanes: isInitialized // method - no parameters
+ , resizeAll: resizeAll // method - no parameters
+ // callback triggering
+ , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west")
+ // alias collections of options, state and children - created in addPane and extended elsewhere
+ , hasParentLayout: false // set by initContainer()
+ , children: children // pointers to child-layouts, eg: Instance.children["west"]
+ , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] }
+ , south: false // ditto
+ , west: false // ditto
+ , east: false // ditto
+ , center: false // ditto
+ };
+
+ // create the border layout NOW
+ if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation
+ return null;
+ else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later
+ return Instance; // return the Instance object
+
+}
+
+
+
+
+/**
+ * jquery.layout.state 1.0
+ * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
+ *
+ * Copyright (c) 2010
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ * @dependancies: $.ui.cookie (above)
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ */
+/*
+ * State-management options stored in options.stateManagement, which includes a .cookie hash
+ * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden
+ *
+ * // STATE/COOKIE OPTIONS
+ * @example $(el).layout({
+ stateManagement: {
+ enabled: true
+ , stateKeys: "east.size,west.size,east.isClosed,west.isClosed"
+ , cookie: { name: "appLayout", path: "/" }
+ }
+ })
+ * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies
+ * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } })
+ * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" })
+ *
+ * // STATE/COOKIE METHODS
+ * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} );
+ * @example myLayout.loadCookie();
+ * @example myLayout.deleteCookie();
+ * @example var JSON = myLayout.readState(); // CURRENT Layout State
+ * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie)
+ * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash)
+ *
+ * CUSTOM STATE-MANAGEMENT (eg, saved in a database)
+ * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" );
+ * @example myLayout.loadState( JSON );
+ */
+
+/**
+ * UI COOKIE UTILITY
+ *
+ * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then...
+ * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin
+ * NOTE: This utility is REQUIRED by the layout.state plugin
+ *
+ * Cookie methods in Layout are created as part of State Management
+ */
+if (!$.ui) $.ui = {};
+$.ui.cookie = {
+
+ // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6
+ acceptsCookies: !!navigator.cookieEnabled
+
+, read: function (name) {
+ var
+ c = document.cookie
+ , cs = c ? c.split(';') : []
+ , pair // loop var
+ ;
+ for (var i=0, n=cs.length; i < n; i++) {
+ pair = $.trim(cs[i]).split('='); // name=value pair
+ if (pair[0] == name) // found the layout cookie
+ return decodeURIComponent(pair[1]);
+
+ }
+ return null;
+ }
+
+, write: function (name, val, cookieOpts) {
+ var
+ params = ''
+ , date = ''
+ , clear = false
+ , o = cookieOpts || {}
+ , x = o.expires
+ ;
+ if (x && x.toUTCString)
+ date = x;
+ else if (x === null || typeof x === 'number') {
+ date = new Date();
+ if (x > 0)
+ date.setDate(date.getDate() + x);
+ else {
+ date.setFullYear(1970);
+ clear = true;
+ }
+ }
+ if (date) params += ';expires='+ date.toUTCString();
+ if (o.path) params += ';path='+ o.path;
+ if (o.domain) params += ';domain='+ o.domain;
+ if (o.secure) params += ';secure';
+ document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie
+ }
+
+, clear: function (name) {
+ $.ui.cookie.write(name, '', {expires: -1});
+ }
+
+};
+// if cookie.jquery.js is not loaded, create an alias to replicate it
+// this may be useful to other plugins or code dependent on that plugin
+if (!$.cookie) $.cookie = function (k, v, o) {
+ var C = $.ui.cookie;
+ if (v === null)
+ C.clear(k);
+ else if (v === undefined)
+ return C.read(k);
+ else
+ C.write(k, v, o);
+};
+
+
+// tell Layout that the state plugin is available
+$.layout.plugins.stateManagement = true;
+
+// Add State-Management options to layout.defaults
+$.layout.config.optionRootKeys.push("stateManagement");
+$.layout.defaults.stateManagement = {
+ enabled: false // true = enable state-management, even if not using cookies
+, autoSave: true // Save a state-cookie when page exits?
+, autoLoad: true // Load the state-cookie when Layout inits?
+ // List state-data to save - must be pane-specific
+, stateKeys: "north.size,south.size,east.size,west.size,"+
+ "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+
+ "north.isHidden,south.isHidden,east.isHidden,west.isHidden"
+, cookie: {
+ name: "" // If not specified, will use Layout.name, else just "Layout"
+ , domain: "" // blank = current domain
+ , path: "" // blank = current page, '/' = entire website
+ , expires: "" // 'days' to keep cookie - leave blank for 'session cookie'
+ , secure: false
+ }
+};
+// Set stateManagement as a layout-option, NOT a pane-option
+$.layout.optionsMap.layout.push("stateManagement");
+
+/*
+ * State Management methods
+ */
+$.layout.state = {
+
+ /**
+ * Get the current layout state and save it to a cookie
+ *
+ * myLayout.saveCookie( keys, cookieOpts )
+ *
+ * @param {Object} inst
+ * @param {(string|Array)=} keys
+ * @param {Object=} opts
+ */
+ saveCookie: function (inst, keys, cookieOpts) {
+ var o = inst.options
+ , oS = o.stateManagement
+ , oC = $.extend(true, {}, oS.cookie, cookieOpts || null)
+ , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state
+ ;
+ $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC );
+ return $.extend(true, {}, data); // return COPY of state.stateData data
+ }
+
+ /**
+ * Remove the state cookie
+ *
+ * @param {Object} inst
+ */
+, deleteCookie: function (inst) {
+ var o = inst.options;
+ $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" );
+ }
+
+ /**
+ * Read & return data from the cookie - as JSON
+ *
+ * @param {Object} inst
+ */
+, readCookie: function (inst) {
+ var o = inst.options;
+ var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" );
+ // convert cookie string back to a hash and return it
+ return c ? $.layout.state.decodeJSON(c) : {};
+ }
+
+ /**
+ * Get data from the cookie and USE IT to loadState
+ *
+ * @param {Object} inst
+ */
+, loadCookie: function (inst) {
+ var c = $.layout.state.readCookie(inst); // READ the cookie
+ if (c) {
+ inst.state.stateData = $.extend(true, {}, c); // SET state.stateData
+ inst.loadState(c); // LOAD the retrieved state
+ }
+ return c;
+ }
+
+ /**
+ * Update layout options from the cookie, if one exists
+ *
+ * @param {Object} inst
+ * @param {Object=} stateData
+ * @param {boolean=} animate
+ */
+, loadState: function (inst, stateData, animate) {
+ stateData = $.layout.transformData( stateData ); // panes = default subkey
+ if ($.isEmptyObject( stateData )) return;
+ $.extend(true, inst.options, stateData); // update layout options
+ // if layout has already been initialized, then UPDATE layout state
+ if (inst.state.initialized) {
+ var pane, vis, o, s, h, c
+ , noAnimate = (animate===false)
+ ;
+ $.each($.layout.config.borderPanes, function (idx, pane) {
+ state = inst.state[pane];
+ o = stateData[ pane ];
+ if (typeof o != 'object') return; // no key, continue
+ s = o.size;
+ c = o.initClosed;
+ h = o.initHidden;
+ vis = state.isVisible;
+ // resize BEFORE opening
+ if (!vis)
+ inst.sizePane(pane, s, false, false);
+ if (h === true) inst.hide(pane, noAnimate);
+ else if (c === false) inst.open (pane, false, noAnimate);
+ else if (c === true) inst.close(pane, false, noAnimate);
+ else if (h === false) inst.show (pane, false, noAnimate);
+ // resize AFTER any other actions
+ if (vis)
+ inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed
+ });
+ };
+ }
+
+ /**
+ * Get the *current layout state* and return it as a hash
+ *
+ * @param {Object=} inst
+ * @param {(string|Array)=} keys
+ */
+, readState: function (inst, keys) {
+ var
+ data = {}
+ , alt = { isClosed: 'initClosed', isHidden: 'initHidden' }
+ , state = inst.state
+ , panes = $.layout.config.allPanes
+ , pair, pane, key, val
+ ;
+ if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user
+ if ($.isArray(keys)) keys = keys.join(",");
+ // convert keys to an array and change delimiters from '__' to '.'
+ keys = keys.replace(/__/g, ".").split(',');
+ // loop keys and create a data hash
+ for (var i=0, n=keys.length; i < n; i++) {
+ pair = keys[i].split(".");
+ pane = pair[0];
+ key = pair[1];
+ if ($.inArray(pane, panes) < 0) continue; // bad pane!
+ val = state[ pane ][ key ];
+ if (val == undefined) continue;
+ if (key=="isClosed" && state[pane]["isSliding"])
+ val = true; // if sliding, then *really* isClosed
+ ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val;
+ }
+ return data;
+ }
+
+ /**
+ * Stringify a JSON hash so can save in a cookie or db-field
+ */
+, encodeJSON: function (JSON) {
+ return parse(JSON);
+ function parse (h) {
+ var D=[], i=0, k, v, t; // k = key, v = value
+ for (k in h) {
+ v = h[k];
+ t = typeof v;
+ if (t == 'string') // STRING - add quotes
+ v = '"'+ v +'"';
+ else if (t == 'object') // SUB-KEY - recurse into it
+ v = parse(v);
+ D[i++] = '"'+ k +'":'+ v;
+ }
+ return '{'+ D.join(',') +'}';
+ };
+ }
+
+ /**
+ * Convert stringified JSON back to a hash object
+ * @see $.parseJSON(), adding in jQuery 1.4.1
+ */
+, decodeJSON: function (str) {
+ try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; }
+ catch (e) { return {}; }
+ }
+
+
+, _create: function (inst) {
+ var _ = $.layout.state;
+ // ADD State-Management plugin methods to inst
+ $.extend( inst, {
+ // readCookie - update options from cookie - returns hash of cookie data
+ readCookie: function () { return _.readCookie(inst); }
+ // deleteCookie
+ , deleteCookie: function () { _.deleteCookie(inst); }
+ // saveCookie - optionally pass keys-list and cookie-options (hash)
+ , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); }
+ // loadCookie - readCookie and use to loadState() - returns hash of cookie data
+ , loadCookie: function () { return _.loadCookie(inst); }
+ // loadState - pass a hash of state to use to update options
+ , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); }
+ // readState - returns hash of current layout-state
+ , readState: function (keys) { return _.readState(inst, keys); }
+ // add JSON utility methods too...
+ , encodeJSON: _.encodeJSON
+ , decodeJSON: _.decodeJSON
+ });
+
+ // init state.stateData key, even if plugin is initially disabled
+ inst.state.stateData = {};
+
+ // read and load cookie-data per options
+ var oS = inst.options.stateManagement;
+ if (oS.enabled) {
+ if (oS.autoLoad) // update the options from the cookie
+ inst.loadCookie();
+ else // don't modify options - just store cookie data in state.stateData
+ inst.state.stateData = inst.readCookie();
+ }
+ }
+
+, _unload: function (inst) {
+ var oS = inst.options.stateManagement;
+ if (oS.enabled) {
+ if (oS.autoSave) // save a state-cookie automatically
+ inst.saveCookie();
+ else // don't save a cookie, but do store state-data in state.stateData key
+ inst.state.stateData = inst.readState();
+ }
+ }
+
+};
+
+// add state initialization method to Layout's onCreate array of functions
+$.layout.onCreate.push( $.layout.state._create );
+$.layout.onUnload.push( $.layout.state._unload );
+
+
+
+
+/**
+ * jquery.layout.buttons 1.0
+ * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
+ *
+ * Copyright (c) 2010
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ *
+ * Docs: [ to come ]
+ * Tips: [ to come ]
+ */
+
+// tell Layout that the state plugin is available
+$.layout.plugins.buttons = true;
+
+// Add buttons options to layout.defaults
+$.layout.defaults.autoBindCustomButtons = false;
+// Specify autoBindCustomButtons as a layout-option, NOT a pane-option
+$.layout.optionsMap.layout.push("autoBindCustomButtons");
+
+var lang = $.layout.language;
+
+/*
+ * Button methods
+ */
+$.layout.buttons = {
+
+ /**
+ * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons
+ *
+ * @see _create()
+ *
+ * @param {Object} inst Layout Instance object
+ */
+ init: function (inst) {
+ var pre = "ui-layout-button-"
+ , layout = inst.options.name || ""
+ , name;
+ $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) {
+ $.each($.layout.config.borderPanes, function (ii, pane) {
+ $("."+pre+action+"-"+pane).each(function(){
+ // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name'
+ name = $(this).data("layoutName") || $(this).attr("layoutName");
+ if (name == undefined || name === layout)
+ inst.bindButton(this, action, pane);
+ });
+ });
+ });
+ }
+
+ /**
+ * Helper function to validate params received by addButton utilities
+ *
+ * Two classes are added to the element, based on the buttonClass...
+ * The type of button is appended to create the 2nd className:
+ * - ui-layout-button-pin // action btnClass
+ * - ui-layout-button-pin-west // action btnClass + pane
+ * - ui-layout-button-toggle
+ * - ui-layout-button-open
+ * - ui-layout-button-close
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ *
+ * @return {Array.<Object>} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null
+ */
+, get: function (inst, selector, pane, action) {
+ var $E = $(selector)
+ , o = inst.options
+ , err = o.showErrorMessages
+ ;
+ if (!$E.length) { // element not found
+ if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true);
+ }
+ else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified
+ if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true);
+ $E = $(""); // NO BUTTON
+ }
+ else { // VALID
+ var btn = o[pane].buttonClass +"-"+ action;
+ $E .addClass( btn +" "+ btn +"-"+ pane )
+ .data("layoutName", o.name); // add layout identifier - even if blank!
+ }
+ return $E;
+ }
+
+
+ /**
+ * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc.
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} action
+ * @param {string} pane
+ */
+, bind: function (inst, selector, action, pane) {
+ var _ = $.layout.buttons;
+ switch (action.toLowerCase()) {
+ case "toggle": _.addToggle (inst, selector, pane); break;
+ case "open": _.addOpen (inst, selector, pane); break;
+ case "close": _.addClose (inst, selector, pane); break;
+ case "pin": _.addPin (inst, selector, pane); break;
+ case "toggle-slide": _.addToggle (inst, selector, pane, true); break;
+ case "open-slide": _.addOpen (inst, selector, pane, true); break;
+ }
+ return inst;
+ }
+
+ /**
+ * Add a custom Toggler button for a pane
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ * @param {boolean=} slide true = slide-open, false = pin-open
+ */
+, addToggle: function (inst, selector, pane, slide) {
+ $.layout.buttons.get(inst, selector, pane, "toggle")
+ .click(function(evt){
+ inst.toggle(pane, !!slide);
+ evt.stopPropagation();
+ });
+ return inst;
+ }
+
+ /**
+ * Add a custom Open button for a pane
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ * @param {boolean=} slide true = slide-open, false = pin-open
+ */
+, addOpen: function (inst, selector, pane, slide) {
+ $.layout.buttons.get(inst, selector, pane, "open")
+ .attr("title", lang.Open)
+ .click(function (evt) {
+ inst.open(pane, !!slide);
+ evt.stopPropagation();
+ });
+ return inst;
+ }
+
+ /**
+ * Add a custom Close button for a pane
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ */
+, addClose: function (inst, selector, pane) {
+ $.layout.buttons.get(inst, selector, pane, "close")
+ .attr("title", lang.Close)
+ .click(function (evt) {
+ inst.close(pane);
+ evt.stopPropagation();
+ });
+ return inst;
+ }
+
+ /**
+ * Add a custom Pin button for a pane
+ *
+ * Four classes are added to the element, based on the paneClass for the associated pane...
+ * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin:
+ * - ui-layout-pane-pin
+ * - ui-layout-pane-west-pin
+ * - ui-layout-pane-pin-up
+ * - ui-layout-pane-west-pin-up
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc.
+ */
+, addPin: function (inst, selector, pane) {
+ var _ = $.layout.buttons
+ , $E = _.get(inst, selector, pane, "pin");
+ if ($E.length) {
+ var s = inst.state[pane];
+ $E.click(function (evt) {
+ _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed));
+ if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open
+ else inst.close( pane ); // slide-closed
+ evt.stopPropagation();
+ });
+ // add up/down pin attributes and classes
+ _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding));
+ // add this pin to the pane data so we can 'sync it' automatically
+ // PANE.pins key is an array so we can store multiple pins for each pane
+ s.pins.push( selector ); // just save the selector string
+ }
+ return inst;
+ }
+
+ /**
+ * Change the class of the pin button to make it look 'up' or 'down'
+ *
+ * @see addPin(), syncPins()
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {Array.<Object>} $Pin The pin-span element in a jQuery wrapper
+ * @param {string} pane These are the params returned to callbacks by layout()
+ * @param {boolean} doPin true = set the pin 'down', false = set it 'up'
+ */
+, setPinState: function (inst, $Pin, pane, doPin) {
+ var updown = $Pin.attr("pin");
+ if (updown && doPin === (updown=="down")) return; // already in correct state
+ var
+ pin = inst.options[pane].buttonClass +"-pin"
+ , side = pin +"-"+ pane
+ , UP = pin +"-up "+ side +"-up"
+ , DN = pin +"-down "+side +"-down"
+ ;
+ $Pin
+ .attr("pin", doPin ? "down" : "up") // logic
+ .attr("title", doPin ? lang.Unpin : lang.Pin)
+ .removeClass( doPin ? UP : DN )
+ .addClass( doPin ? DN : UP )
+ ;
+ }
+
+ /**
+ * INTERNAL function to sync 'pin buttons' when pane is opened or closed
+ * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
+ *
+ * @see open(), close()
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {string} pane These are the params returned to callbacks by layout()
+ * @param {boolean} doPin True means set the pin 'down', False means 'up'
+ */
+, syncPinBtns: function (inst, pane, doPin) {
+ // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE
+ $.each(state[pane].pins, function (i, selector) {
+ $.layout.buttons.setPinState(inst, $(selector), pane, doPin);
+ });
+ }
+
+
+, _load: function (inst) {
+ var _ = $.layout.buttons;
+ // ADD Button methods to Layout Instance
+ // Note: sel = jQuery Selector string
+ $.extend( inst, {
+ bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); }
+ // DEPRECATED METHODS
+ , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); }
+ , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); }
+ , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); }
+ , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); }
+ });
+
+ // init state array to hold pin-buttons
+ for (var i=0; i<4; i++) {
+ var pane = $.layout.config.borderPanes[i];
+ inst.state[pane].pins = [];
+ }
+
+ // auto-init buttons onLoad if option is enabled
+ if ( inst.options.autoBindCustomButtons )
+ _.init(inst);
+ }
+
+, _unload: function (inst) {
+ // TODO: unbind all buttons???
+ }
+
+};
+
+// add initialization method to Layout's onLoad array of functions
+$.layout.onLoad.push( $.layout.buttons._load );
+//$.layout.onUnload.push( $.layout.buttons._unload );
+
+
+
+/**
+ * jquery.layout.browserZoom 1.0
+ * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $
+ *
+ * Copyright (c) 2012
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ *
+ * @todo: Extend logic to handle other problematic zooming in browsers
+ * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event
+ */
+
+// tell Layout that the plugin is available
+$.layout.plugins.browserZoom = true;
+
+$.layout.defaults.browserZoomCheckInterval = 1000;
+$.layout.optionsMap.layout.push("browserZoomCheckInterval");
+
+/*
+ * browserZoom methods
+ */
+$.layout.browserZoom = {
+
+ _init: function (inst) {
+ // abort if browser does not need this check
+ if ($.layout.browserZoom.ratio() !== false)
+ $.layout.browserZoom._setTimer(inst);
+ }
+
+, _setTimer: function (inst) {
+ // abort if layout destroyed or browser does not need this check
+ if (inst.destroyed) return;
+ var o = inst.options
+ , s = inst.state
+ // don't need check if inst has parentLayout, but check occassionally in case parent destroyed!
+ // MINIMUM 100ms interval, for performance
+ , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 )
+ ;
+ // set the timer
+ setTimeout(function(){
+ if (inst.destroyed || !o.resizeWithWindow) return;
+ var d = $.layout.browserZoom.ratio();
+ if (d !== s.browserZoom) {
+ s.browserZoom = d;
+ inst.resizeAll();
+ }
+ // set a NEW timeout
+ $.layout.browserZoom._setTimer(inst);
+ }
+ , ms );
+ }
+
+, ratio: function () {
+ var w = window
+ , s = screen
+ , d = document
+ , dE = d.documentElement || d.body
+ , b = $.layout.browser
+ , v = b.version
+ , r, sW, cW
+ ;
+ // we can ignore all browsers that fire window.resize event onZoom
+ if ((b.msie && v > 8)
+ || !b.msie
+ ) return false; // don't need to track zoom
+
+ if (s.deviceXDPI)
+ return calc(s.deviceXDPI, s.systemXDPI);
+ // everything below is just for future reference!
+ if (b.webkit && (r = d.body.getBoundingClientRect))
+ return calc((r.left - r.right), d.body.offsetWidth);
+ if (b.webkit && (sW = w.outerWidth))
+ return calc(sW, w.innerWidth);
+ if ((sW = s.width) && (cW = dE.clientWidth))
+ return calc(sW, cW);
+ return false; // no match, so cannot - or don't need to - track zoom
+
+ function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); }
+ }
+
+};
+// add initialization method to Layout's onLoad array of functions
+$.layout.onReady.push( $.layout.browserZoom._init );
+
+
+
+})( jQuery ); \ No newline at end of file
diff --git a/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css b/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css
new file mode 100644
index 0000000..c02c76f
--- /dev/null
+++ b/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css
@@ -0,0 +1,304 @@
+/*!
+ * jQuery UI CSS Framework 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*!
+ * jQuery UI CSS Framework 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*!
+ * jQuery UI Tabs 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
diff --git a/webhelp/docs/common/main.js b/webhelp/docs/common/main.js
index 714cdee..5957fb4 100644
--- a/webhelp/docs/common/main.js
+++ b/webhelp/docs/common/main.js
@@ -75,7 +75,7 @@ $(document).ready(function() {
//$("#doSearch").button(); //add jquery button styling to 'Go' button
// When you click on a link to an anchor, scroll down
- // 105 px to cope with the fact that the banner
+ // 120 px to cope with the fact that the banner
// hides the top 95px or so of the page.
// This code deals with the problem when
// you click on a link from another page.
diff --git a/webhelp/docs/common/splitterInit.js b/webhelp/docs/common/splitterInit.js
new file mode 100644
index 0000000..090b814
--- /dev/null
+++ b/webhelp/docs/common/splitterInit.js
@@ -0,0 +1,40 @@
+
+ var myLayout;
+
+ jQuery(document).ready(function ($) {
+
+ myLayout = $('body').layout({
+ //Defining panes
+ west__paneSelector: "#sidebar"
+ , north__paneSelector: "#header"
+ , center__paneSelector: "#content"
+
+ // some resizing/toggling settings
+ , north__resizable: false // OVERRIDE the pane-default of 'resizable=true'
+ , north__spacing_open: 0 // no resizer-bar when open (zero height)
+ , west__slideable: false
+ , west__spacing_closed: 6
+ , west__spacing_open: 4
+
+ ,
+ // some pane-size settings
+ west__minSize: 280
+ , north__minSize: 99
+
+ // some pane animation settings
+ , west__animatePaneSizing: false
+ , west__fxSpeed_size: "normal"
+ , west__fxSpeed_open: 10
+ , west__fxSettings_open: {easing: ""}
+ , west__fxName_close: "none"
+
+
+ , stateManagement__enabled: true // automatic cookie load & save enabled by default
+ , stateManagement__cookie__name: "sidebar_state"
+ });
+
+
+
+
+ });
+
diff --git a/webhelp/docs/content/ch01.html b/webhelp/docs/content/ch01.html
deleted file mode 100644
index 3ab56e7..0000000
--- a/webhelp/docs/content/ch01.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Introduction</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><meta name="description" content="Overview of the package."></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="next" href="ch02.html" title="Using the package"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Introduction</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="index.html">Prev</a> 
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id375622"></a>Introduction</h1></div></div></div>
-<p>A common requirement for technical publications groups is to produce a Web-based help
- format that includes a table of contents pane, a search feature, and an index similar to what
- you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for
- a Web application that is not exposed to the Internet or requires that the user be logged in,
- then it is impossible to use services like Google to add search. <a id="id375647" class="indexterm"></a>
- </p><div class="itemizedlist"><p class="title"><strong>Features</strong></p><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Sophisticated CSS-based page layout</p></li><li class="listitem"><p>Client-side search.<a id="id375673" class="indexterm"></a></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Provides full content search of the documentation. Shows the search results with
- links to chunked pages, and a small description.</p></li><li class="listitem"><p>Search results scoring/rating - The results are weighted according to how many
- times the words in search query appears in it, is it bold or not, is in index terms
- etc. The score out of 5 is shown by small colored boxes after each
- search-result.</p></li><li class="listitem"><p>Search results can include brief descriptions of the target.<a id="id375711" class="indexterm"></a></p></li><li class="listitem"><p>Stemming support for English, French, and German. Stemming support can be added
- for other languages by implementing a stemmer.<a id="id375732" class="indexterm"></a></p></li><li class="listitem"><p>Support for Chinese, Japanese, and Korean languages using code from the Lucene search
- engine.</p></li><li class="listitem"><p>Search highlighting shows where the searched term appears in the results.
- <a id="id375759" class="indexterm"></a></p></li></ul></div></li><li class="listitem"><p>Table of contents (TOC) pane with collapsible toc tree.</p></li><li class="listitem"><p>Auto-synchronization of content pane and TOC.</p></li><li class="listitem"><p>Nicely placed small forward, backward, top links</p></li><li class="listitem"><p>TOC and search pane implemented without the use of a frameset.</p></li><li class="listitem"><p>An Ant script to generate output. You can use this
- build file by importing it into your own or use it as a
- model for integrating this output format into your own
- build system. Alternatively, you can use this Ant script
- as a template for creating your own build script or you
- can use the <a class="ulink" href="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html" target="_top">Docbkx Maven plugin</a>.</p></li></ul></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li id="webhelp-currentid"><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02.html b/webhelp/docs/content/ch02.html
deleted file mode 100644
index 433184e..0000000
--- a/webhelp/docs/content/ch02.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Using the package</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch01.html" title="Introduction"></link><link rel="next" href="ch02s01.html" title="Generating webhelp output"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch01.html">Prev</a> 
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s01.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id375821"></a>Using the package</h1></div></div></div>
-<div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ch02s01.html">Generating webhelp output</a></span></dt><dt><span class="section"><a href="ch02s02.html">Using and customizing the output</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02s01.html">Recommended Apache configurations</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">Search indexing</a></span></dt><dt><span class="section"><a href="ch02s04.html">Adding support for other (non-CJKV) languages</a></span></dt><dt><span class="section"><a href="ch02s05.html">Adding images</a></span></dt></dl></div><p class="summary">The following sections describe how to
- install and use the package on Windows. </p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02s02.html b/webhelp/docs/content/ch02s02.html
deleted file mode 100644
index 27231c1..0000000
--- a/webhelp/docs/content/ch02s02.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Using and customizing the output</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s01.html" title="Generating webhelp output"></link><link rel="next" href="ch02s02s01.html" title="Recommended Apache configurations"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s01.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s02s01.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id376328"></a>Using and customizing the output</h2></div></div></div>
-<div class="toc"><dl><dt><span class="section"><a href="ch02s02s01.html">Recommended Apache configurations</a></span></dt></dl></div><p>To deep link to a topic inside the help set, simply link directly to the page. This help
- system uses no frameset, so nothing further is necessary. </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>See <a class="ulink" href="http://www.sagehill.net/docbookxsl/Chunking.html" target="_top">Chunking into
- multiple HTML files</a> in Bob Stayton's <a class="ulink" href="http://www.sagehill.net/docbookxsl/index.html" target="_top">DocBook XSL: The Complete
- Guide</a> for information on controlling output file names and which files are
- chunked in DocBook.</p></div><p>When you perform a search, the results can include brief summaries. These are populated
- in one of two ways:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>By adding <code class="sgmltag-element">role="summary"</code> to a <code class="sgmltag-element">para</code> or
- <code class="sgmltag-element">phrase</code> in the <code class="sgmltag-element">chapter</code> or
- <code class="sgmltag-element">section</code>.</p></li><li class="listitem"><p>By adding an <code class="sgmltag-element">abstract</code> to the <code class="sgmltag-element">chapterinfo</code> or
- <code class="sgmltag-element">sectioninfo</code> element.</p></li></ul></div><p>To customize the look and feel of the help, study the following css files:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="filename">docs/common/css/positioning.css</code>: This handles the Positioning
- of DIVs in appropriate positions. For example, it causes the
- <code class="code">leftnavigation</code> div to appear on the left, the header on top, and so on.
- Use this if you need to change the relative positions or need to change the
- width/height etc.</p></li><li class="listitem"><p><code class="filename">docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css</code>:
- This is the theming part which adds colors and stuff. This is a default theme comes
- with <a class="ulink" href="http://jqueryui.com/download" target="_top">jqueryui</a> unchanged. You can get
- any theme based your interest from this. (Themes are on right navigation bar.) Then
- replace the css theme folder (theme-redmond) with it, and change the xsl to point to
- the new css.</p></li><li class="listitem"><p><code class="filename">docs/common/jquery/treeview/jquery.treeview.css</code>: This styles
- the toc Tree. Generally, you don't have to edit this file.</p></li></ul></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02s02s01.html b/webhelp/docs/content/ch02s02s01.html
deleted file mode 100644
index f4fc2d0..0000000
--- a/webhelp/docs/content/ch02s02s01.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Recommended Apache configurations</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02s02.html" title="Using and customizing the output"></link><link rel="prev" href="ch02s02.html" title="Using and customizing the output"></link><link rel="next" href="ch02s03.html" title="Search indexing"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using and customizing the output</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s02.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02s02.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s03.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id376463"></a>Recommended Apache configurations</h3></div></div></div>
-<p>If you are serving a long document from an Apache web server, we recommend you make
- the following additions or changes to your <code class="filename">httpd.conf</code> or
- <code class="filename">.htaccess</code> file. <em><span class="remark">TODO: Explain what each thing
- does.</span></em></p><pre class="programlisting">AddDefaultCharSet UTF-8 # <a id="AddDefaultCharSet"></a><span><img src="../common/images/callouts/1.png" alt="1" border="0"></img></span>
-
- # 480 weeks
- &lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt; # <a id="CachingSettings"></a><span><img src="../common/images/callouts/2.png" alt="2" border="0"></img></span>
- Header set Cache-Control "max-age=290304000, public"
- &lt;/FilesMatch&gt;
-
- # 2 DAYS
- &lt;FilesMatch "\.(xml|txt)$"&gt;
- Header set Cache-Control "max-age=172800, public, must-revalidate"
- &lt;/FilesMatch&gt;
-
- # 2 HOURS
- &lt;FilesMatch "\.(html|htm)$"&gt;
- Header set Cache-Control "max-age=7200, must-revalidate"
- &lt;/FilesMatch&gt;
-
- # compress text, html, javascript, css, xml:
- AddOutputFilterByType DEFLATE text/plain # <a id="CompressSetting"></a><span><img src="../common/images/callouts/3.png" alt="3" border="0"></img></span>
- AddOutputFilterByType DEFLATE text/html
- AddOutputFilterByType DEFLATE text/xml
- AddOutputFilterByType DEFLATE text/css
- AddOutputFilterByType DEFLATE application/xml
- AddOutputFilterByType DEFLATE application/xhtml+xml
- AddOutputFilterByType DEFLATE application/rss+xml
- AddOutputFilterByType DEFLATE application/javascript
- AddOutputFilterByType DEFLATE application/x-javascript
-
- # Or, compress certain file types by extension:
- &lt;Files *.html&gt;
- SetOutputFilter DEFLATE
- &lt;/Files&gt;
- </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#AddDefaultCharSet"><span><img src="../common/images/callouts/1.png" alt="1" border="0"></img></span></a> </p></td><td valign="top" align="left"><p>See <a class="ulink" href="http://www.sagehill.net/docbookxsl/SpecialChars.html" target="_top">Odd
- characters in HTML output</a> in Bob Stayton's book <em class="citetitle">DocBook XSL:
- The Complete Guide</em> for more information about this setting.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#CachingSettings"><span><img src="../common/images/callouts/2.png" alt="2" border="0"></img></span></a> </p></td><td valign="top" align="left"><p>These lines and those that follow cause the browser to cache various resources
- such as bitmaps and JavaScript files. Note that caching JavaScript files could cause
- your users to have stale search indexes if you update your document since the search
- index is stored in JavaScript files.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#CompressSetting"><span><img src="../common/images/callouts/3.png" alt="3" border="0"></img></span></a> </p></td><td valign="top" align="left"><p>These lines cause the the server to compress html, css, and JavaScript files and
- the brower to uncompress them to improve download performance.</p></td></tr></table></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02s02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02s03.html b/webhelp/docs/content/ch02s03.html
deleted file mode 100644
index 60f8784..0000000
--- a/webhelp/docs/content/ch02s03.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Search indexing</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s02s01.html" title="Recommended Apache configurations"></link><link rel="next" href="ch02s04.html" title="Adding support for other (non-CJKV) languages"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s02s01.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s04.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id376572"></a>Search indexing</h2></div></div></div>
-<p>Run <span class="command"><strong>ant index</strong></span> in the webhelp directory to index the content. Running
- <span class="command"><strong>ant webhelp</strong></span> will do the indexing as part of the process as well.</p><p>Here's some detailed information about invoking the indexer. The indexing process is
- pretty smooth, so probably you doesn't need to be concerned with following details. Webhelp
- Ant script does all the needed bits.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Following should be in the CLASSPATH.</p><p>
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="filename">webhelpindexer.jar</code>,
- <code class="filename">lucene-analyzers-3.0.0.jar</code>,
- <code class="filename">lucene-core-3.0.0.jar</code> - These three are available in the
- extensions/ directory of docsbook-xsl-1.76.1, and is automatically fetched to the
- webhelp's Ant script. Go for a XSL snapshot if you can which contains the latest
- version http://docbook.sourceforge.net/snapshot/</p></li><li class="listitem"><p><code class="filename">xercesImpl.jar</code>, <code class="filename"> xml-apis.jar</code> -
- These two comes by default with Ant 1.8.0 or prior versions. These are available
- under /usr/share/java directory of Linux distributions as well. Else, you may have
- to download, and put them to <code class="filename">jre/lib/endorsed</code>.</p></li></ul></div><p>
- </p></li><li class="listitem"><p>The main class is <code class="classname">com.nexwave.nquindexer.IndexerMain</code> for the
- version 1.76.1+. It's <code class="classname">com.nexwave.nquindexer.IndexerTask</code> for the
- versions 1.76.0 and 1.76.1.</p><p>
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Needs two parameters as command-line arguments:</p><p>
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>The folder where the files to be indexed reside</p></li></ul></div><p>
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem"><p>(Optional) language. defaults to "en". See build.properties for
- details</p></li></ul></div><p>
- </p></li></ul></div><p>
- </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>We have changed the way we invoke the webhelp indexer from the Ant Task to
- <code class="code">indexertask</code> to direct invocation. This seems to have remove the
- <code class="envar">CLASSPATH</code> issue some people were having.</p></div><p>
- </p></li></ul></div><a id="id376733" class="indexterm"></a><a id="id376745" class="indexterm"></a><p class="summary">To build the indexer, you must have installed the JDK version 1.5 or
- higher and set the <code class="envar">ANT_HOME</code> environment variable. </p><a id="id376768" class="indexterm"></a><a id="id376777" class="indexterm"></a></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02s04.html b/webhelp/docs/content/ch02s04.html
deleted file mode 100644
index 7f657f6..0000000
--- a/webhelp/docs/content/ch02s04.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Adding support for other (non-CJKV) languages</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s03.html" title="Search indexing"></link><link rel="next" href="ch02s05.html" title="Adding images"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s03.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch02s05.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id376790"></a>Adding support for other (non-CJKV) languages</h2></div></div></div>
-<p>To support stemming for a language, the search mechanism requires a stemmer implemented
- in both Java and JavaScript. The Java version is used by the indexer and the JavaScript
- verison is used to stem the user's input on the search form. Currently the search mechanism
- supports stemming for English and German. In addition, Java stemmers are included for the
- following languages. Therefore, to support these languages, you only need to implement the
- stemmer in JavaScript and add it to the template. If you do undertake this task, please
- consider contributing the JavaScript version back to this project and to <a class="ulink" href="http://snowball.tartarus.org/texts/stemmersoverview.html" target="_top">Martin Porter's
- project</a>.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Danish</p></li><li class="listitem"><p>Dutch</p></li><li class="listitem"><p>Finnish</p></li><li class="listitem"><p>Hungarian</p></li><li class="listitem"><p>Italian</p></li><li class="listitem"><p>Norwegian</p></li><li class="listitem"><p>Portuguese</p></li><li class="listitem"><p>Romanian</p></li><li class="listitem"><p>Russian</p></li><li class="listitem"><p>Spanish</p></li><li class="listitem"><p>Swedish</p></li><li class="listitem"><p>Turkish</p></li></ul></div><p><a id="id376892" class="indexterm"></a></p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch02s05.html b/webhelp/docs/content/ch02s05.html
deleted file mode 100644
index 5469ec3..0000000
--- a/webhelp/docs/content/ch02s05.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Adding images</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch02.html" title="Using the package"></link><link rel="prev" href="ch02s04.html" title="Adding support for other (non-CJKV) languages"></link><link rel="next" href="ch03.html" title="Developer Docs"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Using the package</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s04.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch02.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id376902"></a>Adding images</h2></div></div></div>
-<p>This section shows how to add images to WebHelp. For that, follow the simple procedure given.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Put the images in a subdirectory of your source file directory. For example
- <code class="filename">docsrc/images</code>.</p></li><li class="listitem"><p>Then refer to those images from your docbook document.</p><p>Following image is from <span class="bold"><strong>webhelp/docsrs/images/sample.jpg</strong></span>. The docbook code is shown
- below.</p><p>
- </p><div class="figure"><a id="id376944"></a><p class="title"><strong>Figure 1. Sample Image</strong></p><div class="figure-contents"><div class="mediaobject"><img src="images/sample.jpg" alt="Sample Image"></img></div></div></div><p><br class="figure-break"></br>
- </p><div class="example"><a id="id376967"></a><p class="title"><strong>Example 1. Example code for adding images. Note down the relative path used</strong></p><div class="example-contents"><pre class="programlisting">&lt;figure&gt;
- &lt;title&gt;Sample&lt;/title&gt;
- &lt;mediaobject&gt;
- &lt;imageobject&gt;
- &lt;imagedata fileref="<span class="bold"><strong>images/sample.jpg</strong></span>" format="JPG"/&gt;
- &lt;/imageobject&gt;
- &lt;/mediaobject&gt;
-&lt;/figure&gt;</pre></div></div><br class="example-break"></br></li><li class="listitem"><p> The <code class="filename">build.properties</code> file controls what directories are copied
- over from the source tree to the output
- tree:</p><pre class="programlisting"># If your document has image directories that need to be copied
-# to the output directory, you can list patterns here.
-# See the Ant documentation for fileset for documentation
-# on patterns.
-input-images-dirs=images/**,figures/**,graphics/**</pre></li></ul></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch03.html b/webhelp/docs/content/ch03.html
deleted file mode 100644
index 1239560..0000000
--- a/webhelp/docs/content/ch03.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Developer Docs</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch02s05.html" title="Adding images"></link><link rel="next" href="ch03s01.html" title="Design"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Developer Docs</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch02s05.html">Prev</a> 
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03s01.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id377011"></a>Developer Docs</h1></div></div></div>
-<div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ch03s01.html">Design</a></span></dt><dt><span class="section"><a href="ch03s02.html">Search</a></span></dt><dd><dl><dt><span class="section"><a href="ch03s02s01.html">New Stemmers</a></span></dt></dl></dd></dl></div><p class="summary">This chapter provides an overview of how webhelp is implemented.</p><p>The table of contents and search panes are implemented as divs and rendered as if they
- were the left pane in a frameset. As a result, the page must save the state of the table of
- contents and the search in cookies when you navigate away from a page. When you load a new
- page, the page reads these cookies and restores the state of the table of contents tree and
- search. The result is that the help system behaves exactly as if it were a frameset.</p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch03s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch03s01.html b/webhelp/docs/content/ch03s01.html
deleted file mode 100644
index 80bbccb..0000000
--- a/webhelp/docs/content/ch03s01.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03.html" title="Developer Docs"></link><link rel="prev" href="ch03.html" title="Developer Docs"></link><link rel="next" href="ch03s02.html" title="Search"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Developer Docs</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch03.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03s02.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id377030"></a>Design</h2></div></div></div>
-<p class="summary">An overview of webhelp page structure.</p><p>DocBook WebHelp page structure is fully built on css-based design abandoning frameset
- structure. Overall page structure can be divided in to three main sections </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Header: Header is a separate Div which include company logo, navigation
- button(prev, next etc.), page title and heading of parent topic.</p></li><li class="listitem"><p>Content: This includes the content of the documentation. The processing of this
- part is done by <a class="ulink" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl" target="_top"> DocBook
- XSL Chunking customization</a>. Few further css-styling applied from
- <code class="filename">positioning.css</code>. </p></li><li class="listitem"><p>Left Navigation: This includes the table of contents and search tab. This is
- customized using <a class="ulink" href="http://jqueryui.com/" target="_top">jquery-ui</a> styling.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Tabbed Navigation: The navigation pane is organized in to two tabs. Contents
- tab, and Search tab. Tabbed output is achieved using <a class="ulink" href="http://docs.jquery.com/UI/Tabs" target="_top">JQuery Tabs plugin</a>. </p></li><li class="listitem"><p>Table of Contents (TOC) tree: When building the chunked html from the docbook
- file, Table of Contents is generated as an Unordered List (a list made from
- <code class="code">&lt;ul&gt; &lt;li&gt;</code> tags). When page loads in the browser, we apply
- styling to it to achieve the nice look that you see. Styling for TOC tree is done
- by a JQuery UI plugin called <a class="ulink" href="http://bassistance.de/jquery-plugins/jquery-plugin-treeview/" target="_top">
- TreeView</a>. We can generate the tree easily by following javascript code:
- </p><pre class="programlisting">
-//Generate the tree
-$("#tree").treeview({
-collapsed: true,
-animated: "medium",
-control: "#sidetreecontrol",
-persist: "cookie"
-});
-</pre><p>
- </p></li><li class="listitem"><p>Search Tab: This includes the search feature.</p></li></ul></div></li></ul></div><p>
- <a id="id377141" class="indexterm"></a></p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch03s02.html b/webhelp/docs/content/ch03s02.html
deleted file mode 100644
index 387f6a0..0000000
--- a/webhelp/docs/content/ch03s02.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Search</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03.html" title="Developer Docs"></link><link rel="prev" href="ch03s01.html" title="Design"></link><link rel="next" href="ch03s02s01.html" title="New Stemmers"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Developer Docs</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03s01.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch03.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch03s02s01.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="id377151"></a>Search</h2></div></div></div>
-<div class="toc"><dl><dt><span class="section"><a href="ch03s02s01.html">New Stemmers</a></span></dt></dl></div><p class="summary">Overview design of Search mechanism.</p><p>The serching is a fully client-side implementation of querying texts for content
- searching. There's no server involved. So, the search queries by the users are processed by
- JavaScript inside the browser, and displays the matching results by comparing the query with
- a simplified 'index' that too resides in JavaScript. Mainly the search mechanism has two
- parts. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Indexing: First we need to traverse the content in the docs/content folder and
- index the words in it. This is done by <code class="filename">webhelpindexer.jar</code> in
- <code class="filename">xsl/extentions/</code> folder. You can invoke it by <code class="code">ant
- index</code> command from the root of webhelp of directory. The source of
- webhelpindexer is now moved to it's own location at
- <code class="filename">trunk/xsl-webhelpindexer/</code>. Checkout the Docbook trunk svn
- directory to get this source. Then, do your changes and recompile it by simply running
- <code class="code">ant</code> command. My assumption is that it can be opened by Netbeans IDE by
- one click. Or if you are using IntelliJ Idea, you can simply create a new project from
- existing sources. Indexer has extensive support for features such as word scoring,
- stemming of words, and support for languages English, German, French. For CJK
- (Chinese, Japanese, Korean) languages, it uses bi-gram tokenizing to break up the
- words (since CJK languages does not have spaces between words).</p><p> When <code class="code">ant index</code> is run, it generates five output files: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="filename">htmlFileList.js</code> - This contains an array named
- <code class="code">fl</code> which stores details all the files indexed by the indexer.
- Further, the doStem in it defines whether stemming should be used. It defaults
- to false.</p></li><li class="listitem"><p><code class="filename">htmlFileInfoList.js</code> - This includes some meta data
- about the indexed files in an array named <code class="code">fil</code>. It includes details
- about file name, file (html) title, a summary of the content.Format would look
- like, <code class="code">fil["4"]= "ch03.html@@@Developer Docs@@@This chapter provides an
- overview of how webhelp is implemented.";</code>
- </p></li><li class="listitem"><p><code class="filename">index-*.js</code> (Three index files) - These three files
- actually stores the index of the content. Index is added to an array named
- <code class="code">w</code>.</p></li></ul></div></li><li class="listitem"><p> Querying: Query processing happens totally in client side. Following JavaScript
- files handles them. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="filename">nwSearchFnt.js</code> - This handles the user query and
- returns the search results. It does query word tokenizing, drop unnecessary
- punctuations and common words, do stemming if docbook language supports it,
- etc.</p></li><li class="listitem"><p><code class="filename">{$indexer-language-code}_stemmer.js</code> - This includes the
- stemming library. <code class="filename">nwSearchFnt.js</code> file calls
- <code class="code">stemmer</code> method in this file for stemming. ex: <code class="code">var stem =
- stemmer(foobar);</code>
- </p></li></ul></div><p>
- </p></li></ul></div><p>
- <a id="id377392" class="indexterm"></a></p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s02s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch04.html b/webhelp/docs/content/ch04.html
deleted file mode 100644
index 0977f54..0000000
--- a/webhelp/docs/content/ch04.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>FAQ</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><meta name="description" content="Frequently Asked Questions"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch03s02s01.html" title="New Stemmers"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>FAQ</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03s02s01.html">Prev</a> </td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="chapter"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id377643"></a>FAQ</h1></div></div></div>
-<div class="qandaset"><a id="id377658"></a><dl><dt>1. <a href="ch04.html#id377660">On what browsers and operating systems WebHelp has tested extensively?</a></dt><dt>2. <a href="ch04.html#id377682">Apart from this demo, where can I find other demos or production deployments of
- WebHelp?</a></dt><dt>3. <a href="ch04.html#id377705">When building the webhelp output, I'm getting the following error. What's the reason
- for this?</a></dt><dt>4. <a href="ch04.html#id377741">Does WebHelp Indexer can index HTML transformation as well?</a></dt><dt>5. <a href="ch04.html#id377759">I need more information about webhelp-indexer. Where can I find it?</a></dt></dl><table border="0" style="width: 100%;"><colgroup><col align="left" width="1%"></col><col></col></colgroup><tbody><tr class="question"><td align="left" valign="top"><a id="id377660"></a><a id="id377663"></a><p><strong>1.</strong></p></td><td align="left" valign="top"><p>On what browsers and operating systems WebHelp has tested extensively?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>We tested it with versions of most browsers including Firefox 3.x+, IE 7+, Chrome,
- Safari, and iPod/iPhone. The JavaScript codes are mostly jquery plugins, so you’d want
- to check the jquery support matrix for details.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id377682"></a><a id="id377684"></a><p><strong>2.</strong></p></td><td align="left" valign="top"><p>Apart from this demo, where can I find other demos or production deployments of
- WebHelp?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>There are four production deployments provided in <a class="ulink" href="http://wiki.docbook.org/WebHelp" target="_top">WebHelp wiki</a> currently.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id377705"></a><a id="id377707"></a><p><strong>3.</strong></p></td><td align="left" valign="top"><p>When building the webhelp output, I'm getting the following error. What's the reason
- for this?</p><pre class="programlisting">[xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl:
- line 596: Attribute 'href' outside of element.
-[xslt] : Warning! file:/C:/Users/kasun/docbook-xsl-1.77.0/xhtml/autoidx.xsl:
- line 596: Attribute 'href' outside of element.</pre><p>----</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>This happens if you haven't done the step 3 and 4 of webhelp build guide "Generating
- webhelp output" in the documentation. Basically, you need to correctly set the following
- folder
- paths.</p><pre class="programlisting">xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
-xercesImpl.jar=/usr/share/java/xercesImpl.jar
-xml-apis.jar=/usr/share/java/xml-apis.jar</pre></td></tr><tr class="question"><td align="left" valign="top"><a id="id377741"></a><a id="id377743"></a><p><strong>4.</strong></p></td><td align="left" valign="top"><p>Does WebHelp Indexer can index HTML transformation as well?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>Yes, WebHelp supports HTML transformations as well in addition to XHTML.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id377759"></a><a id="id377761"></a><p><strong>5.</strong></p></td><td align="left" valign="top"><p>I need more information about webhelp-indexer. Where can I find it?</p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p>The DocBook Webhelp Indexer is based on the HTMLSearch plugin for DITA. See <a class="ulink" href="http://www.helpml.com:8088/help/index.jsp?topic=/org.sample.help.doc/htmlsearch/DHSC_BestPractices_htmlsearch.html" target="_top">HTMLSearch documentation </a> for more information.</p></td></tr></tbody></table></div><a id="id377784" class="indexterm"></a></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02s01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch05.html b/webhelp/docs/content/ch05.html
deleted file mode 100644
index 0ae4fcc..0000000
--- a/webhelp/docs/content/ch05.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>Chapter 5. Test section</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_9183"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch04.html" title="Chapter 4. FAQ"></link><link rel="next" href="ch05s01.html" title="5.1. Some problematic search words"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1093";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="http://docbook.org/"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="DocBook Documentation"></img></a><h1 align="center">README: Web-based Help from DocBook XML<br></br> </h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch04.html">Prev</a> 
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch05s01.html">Next</a></td></tr></table></div></div><div id="content"><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="id594686"></a>Chapter 5. Test section</h2></div></div></div><div class="toc"><p><strong>Contents</strong></p><dl><dt><span class="section"><a href="ch05s01.html">5.1. Some problematic search words</a></span></dt><dt><span class="section"><a href="ch05s02.html">5.2. Some problematic search words (inflected)</a></span></dt></dl></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch05s01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id593592" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id594387" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some problematic search words</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some problematic search words (inflected)</a></span></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch05s01.html b/webhelp/docs/content/ch05s01.html
deleted file mode 100644
index 2a7ed33..0000000
--- a/webhelp/docs/content/ch05s01.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>5.1. Some problematic search words</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_9183"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch05.html" title="Chapter 5. Test section"></link><link rel="prev" href="ch05.html" title="Chapter 5. Test section"></link><link rel="next" href="ch05s02.html" title="5.2. Some problematic search words (inflected)"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1093";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="http://docbook.org/"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="DocBook Documentation"></img></a><h1 align="center">README: Web-based Help from DocBook XML<br></br>Chapter 5. Test section</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch05.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch05.html">Up</a>
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch05s02.html">Next</a></td></tr></table></div></div><div id="content"><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id594692"></a>5.1. Some problematic search words</h2></div></div></div><p>buy, say, by, vary, try, sky, nucleus, day, key, currency, currencies, build.xml, foo</p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch05s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id593592" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id594387" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch05s01.html" tabindex="1">Some problematic search words</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some problematic search words (inflected)</a></span></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/ch05s02.html b/webhelp/docs/content/ch05s02.html
deleted file mode 100644
index 0dc43c9..0000000
--- a/webhelp/docs/content/ch05s02.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>5.2. Some problematic search words (inflected)</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_9183"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch05.html" title="Chapter 5. Test section"></link><link rel="prev" href="ch05s01.html" title="5.1. Some problematic search words"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1093";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileList.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="http://docbook.org/"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt="DocBook Documentation"></img></a><h1 align="center">README: Web-based Help from DocBook XML<br></br>Chapter 5. Test section</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch05s01.html">Prev</a>
- |
- <a accesskey="u" class="navLinkUp" tabindex="5" href="ch05.html">Up</a></td></tr></table></div></div><div id="content"><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id594702"></a>5.2. Some problematic search words (inflected)</h2></div></div></div><p>buys, says, varies, tries, skies, nuclei, days, keys, currencies, build.xml, foo.</p></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05s01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02.html#id593592" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02.html#id594387" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some problematic search words</a></span></li><li id="webhelp-currentid"><span class="file"><a href="ch05s02.html" tabindex="1">Some problematic search words (inflected)</a></span></li></ul></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/index.html b/webhelp/docs/content/index.html
deleted file mode 100644
index 952848f..0000000
--- a/webhelp/docs/content/index.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="X-UA-Compatible" content="IE=7"></meta>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
-<title>README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="next" href="ch01.html" title="Introduction"></link><script type="text/javascript">
- //The id for tree cookie
- var treeCookieId = "treeview-1055";
- var language = "en";
- var w = new Object();
- //Localization
- txt_filesfound = 'Results';
- txt_enter_at_least_1_char = "You must enter at least one character.";
- txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
- txt_please_wait = "Please wait. Search in progress...";
- txt_results_for = "Results for: ";
- </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
-noscript{
- font-weight:bold;
-}
-input {
- margin-bottom: 5px;
- margin-top: 2px;
-}
-.folder {
- display: block;
- height: 22px;
- padding-left: 20px;
- background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
-}
-span.contentsTab {
- padding-left: 20px;
- background: url(../common/images/toc-icon.png) no-repeat 0 center;
-}
-span.searchTab {
- padding-left: 20px;
- background: url(../common/images/search-icon.png) no-repeat 0 center;
-}
-
-/* Overide jquery treeview's defaults for ul. */
-.treeview ul {
- background-color: transparent;
- margin-top: 4px;
-}
-#webhelp-currentid {
- background-color: #D8D8D8 !important;
-}
-.treeview .hover { color: black; }
-.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
-
-/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
-.ui-widget-content {
- border: 0px;
- background: none;
- color: none;
-}
-.ui-widget-header {
- color: #e9e8e9;
- border-left: 1px solid #e5e5e5;
- border-right: 1px solid #e5e5e5;
- border-bottom: 1px solid #bbc4c5;
- border-top: 4px solid #e5e5e5;
- border: medium none;
- background: #F4F4F4; /* old browsers */
- background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
- font-weight: none;
-}
-.ui-widget-header a { color: none; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
-border: none; background: none; font-weight: none; color: none; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
- color: black; text-decoration: none;
- background: #C6C6C6; /* old browsers */
- background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
- -webkit-border-radius:15px; -moz-border-radius:10px;
- border: 1px solid #f1f1f1;
-}
-.ui-corner-all { border-radius: 0 0 0 0; }
-
-.ui-tabs { padding: .2em;}
-.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
-.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br> </h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
- </a></td><td> 
- |
- <a accesskey="n" class="navLinkNext" tabindex="5" href="ch01.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="book"><div xmlns="" class="titlepage">
-<div>
-<div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id275648"></a>README: Web-based Help from DocBook XML</h1></div>
-<div><div xmlns="http://www.w3.org/1999/xhtml" class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Cramer</span></h3><code class="email">&lt;<a class="email" href="mailto:david AT thingbag DOT net">david AT thingbag DOT net</a>&gt;</code></div></div>
-<div><div xmlns="http://www.w3.org/1999/xhtml" class="author"><h3 class="author"><span class="firstname">Kasun</span> <span class="surname">Gajasinghe</span></h3><code class="email">&lt;<a class="email" href="mailto:kasunbg AT gmail DOT com">kasunbg AT gmail DOT com</a>&gt;</code></div></div>
-<div><p xmlns="http://www.w3.org/1999/xhtml" class="copyright">Copyright © 2008-2012 Kasun Gajasinghe, David Cramer</p></div>
-<div><div xmlns="http://www.w3.org/1999/xhtml" class="legalnotice"><a id="id375193"></a><p>Permission is hereby granted, free of charge, to any person obtaining a copy of this
- software and associated documentation files (the <span class="quote">“<span class="quote">Software</span>â€</span>), to deal in the
- Software without restriction, including without limitation the rights to use, copy, modify,
- merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
- persons to whom the Software is furnished to do so, subject to the following conditions: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.</p></li><li class="listitem"><p>Except as contained in this notice, the names of individuals credited with
- contribution to this software shall not be used in advertising or otherwise to promote
- the sale, use or other dealings in this Software without prior written authorization
- from the individuals in question.</p></li><li class="listitem"><p>Any stylesheet derived from this Software that is publicly distributed will be
- identified with a different name and the version strings in any derived Software will
- be changed so that no possibility of confusion between the derived package and this
- Software will exist.</p></li></ul></div><p><strong>Warranty: </strong>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY
- OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p><p>This package is maintained by Kasun Gajasinghe, <code class="email">&lt;<a class="email" href="mailto:kasunbg AT gmail DOT com">kasunbg AT gmail DOT com</a>&gt;</code>
- and David Cramer, <code class="email">&lt;<a class="email" href="mailto:david AT thingbag DOT net">david AT thingbag DOT net</a>&gt;</code>.</p><p>This package also includes the following software written and copyrighted by others:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Files in <code class="filename">template/common/jquery</code> are
- copyrighted by <a class="ulink" href="http://jquery.com/" target="_top">JQuery</a> under the MIT License.
- The file <code class="filename">jquery.cookie.js</code> Copyright (c) 2006 Klaus Hartl under
- the MIT license.</p><a id="id375285" class="indexterm"></a></li><li class="listitem"><p>Some files in the <code class="filename">template/content/search</code>
- and <code class="filename">indexer</code> directories were originally part of
- N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA plugin is available from the
- <a class="ulink" href="http://tech.groups.yahoo.com/group/dita-users/files/Demos/" target="_top">files
- page</a> of the DITA-users yahoogroup. The htmlsearch plugin was released under
- a BSD-style license. See <code class="filename">indexer/license.txt</code> for details. <a id="id375327" class="indexterm"></a>
- <a id="id374881" class="indexterm"></a></p></li><li class="listitem"><p>Stemmers from the <a class="ulink" href="http://snowball.tartarus.org/texts/stemmersoverview.html" target="_top">Snowball
- project</a> released under a BSD license.</p></li><li class="listitem"><p>Code from the <a class="ulink" href="http://lucene.apache.org/" target="_top">Apache Lucene</a> search
- engine provides support for tokenizing Chinese, Japanese, and Korean content released
- under the Apache 2.0 license. </p></li><li class="listitem"><p>Code that provides weighted search results and some
- other improvements was graciously donated by <a class="ulink" href="http://www.oxygenxml.com" target="_top">SyncRO Soft
- Ltd.</a>, the publishers of the oXygen XML
- Editor.</p></li><li class="listitem"><p>Cosmetic improvements provided by <a class="ulink" href="http://docs.openstack.org" target="_top">OpenStack</a>.</p></li></ul></div><p> Webhelp for DocBook was first developed as a <a class="ulink" href="http://code.google.com/soc/" target="_top">Google Summer of Code</a> project. </p></div></div>
-<div><p xmlns="http://www.w3.org/1999/xhtml" class="pubdate">January 2012</p></div>
-</div>
-<hr>
-</div>
-<div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>1. <a href="ch02s05.html#id376944">Sample Image</a></dt></dl></div><div class="list-of-examples"><p><strong>List of Examples</strong></p><dl><dt>1. <a href="ch02s05.html#id376967">Example code for adding images. Note down the relative path used</a></dt><dt>2. <a href="ch03s02s01.html#id377526">Add new language to supportedLanguages array</a></dt><dt>3. <a href="ch03s02s01.html#id377581">Initialize correct stemmer based on the
- <code class="code">webhelp.indexer.language</code> specified</a></dt></dl></div></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/content/search/htmlFileList.js b/webhelp/docs/content/search/htmlFileList.js
deleted file mode 100644
index 5562796..0000000
--- a/webhelp/docs/content/search/htmlFileList.js
+++ /dev/null
@@ -1,18 +0,0 @@
-//List of files which are indexed.
-fl = new Array();
-fl["0"]= "ch04.html";
-fl["1"]= "ch05s01.html";
-fl["2"]= "ch03s02.html";
-fl["3"]= "index.html";
-fl["4"]= "ch03s01.html";
-fl["5"]= "ch01.html";
-fl["6"]= "ch02.html";
-fl["7"]= "ch02s01.html";
-fl["8"]= "ch02s03.html";
-fl["9"]= "ch05.html";
-fl["10"]= "ch03.html";
-fl["11"]= "ch02s05.html";
-fl["12"]= "ch02s04.html";
-fl["13"]= "ch02s02.html";
-fl["14"]= "ch05s02.html";
-var doStem = true \ No newline at end of file
diff --git a/webhelp/docs/favicon.ico b/webhelp/docs/favicon.ico
index 76ece8f..76ece8f 100644..100755
--- a/webhelp/docs/favicon.ico
+++ b/webhelp/docs/favicon.ico
Binary files differ
diff --git a/webhelp/docs/content/images/sample.jpg b/webhelp/docs/images/sample.jpg
index d8ec5c3..d8ec5c3 100644
--- a/webhelp/docs/content/images/sample.jpg
+++ b/webhelp/docs/images/sample.jpg
Binary files differ
diff --git a/webhelp/docs/index.html b/webhelp/docs/index.html
index ac84c17..a0be769 100644
--- a/webhelp/docs/index.html
+++ b/webhelp/docs/index.html
@@ -1,12 +1,179 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <link rel="shortcut icon" href="favicon.ico" />
- <meta http-equiv="Refresh" content="1; URL=content/index.html" />
- <title>README: Web-based Help from DocBook XML </title>
- </head>
- <body>
- If not automatically redirected, click <a href="content/index.html">content/index.html</a></body>
-</html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>README: Web-based Help from DocBook XML - </title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="next" href="ch01.html" title="Introduction"></link><meta name="Section-title" content="README: Web-based Help from DocBook XML"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br> </h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td> 
+ |
+ <a accesskey="n" class="navLinkNext" tabindex="5" href="ch01.html">Next</a></td></tr></table></div></div><div id="content"><div class="book"><div xmlns="" class="titlepage">
+<div>
+<div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idm11949456"></a>README: Web-based Help from DocBook XML</h1></div>
+<div><div xmlns="http://www.w3.org/1999/xhtml" class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Cramer</span></h3><code class="email">&lt;<a class="email" href="mailto:david AT thingbag DOT net">david AT thingbag DOT net</a>&gt;</code></div></div>
+<div><div xmlns="http://www.w3.org/1999/xhtml" class="author"><h3 class="author"><span class="firstname">Kasun</span> <span class="surname">Gajasinghe</span></h3><code class="email">&lt;<a class="email" href="mailto:kasunbg AT gmail DOT com">kasunbg AT gmail DOT com</a>&gt;</code></div></div>
+<div><p xmlns="http://www.w3.org/1999/xhtml" class="copyright">Copyright © 2008-2012 Kasun Gajasinghe, David Cramer</p></div>
+<div><div xmlns="http://www.w3.org/1999/xhtml" class="legalnotice"><a id="idp256"></a><p>Permission is hereby granted, free of charge, to any person obtaining a copy of this
+ software and associated documentation files (the <span class="quote">“<span class="quote">Software</span>â€</span>), to deal in the
+ Software without restriction, including without limitation the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
+ persons to whom the Software is furnished to do so, subject to the following conditions: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.</p></li><li class="listitem"><p>Except as contained in this notice, the names of individuals credited with
+ contribution to this software shall not be used in advertising or otherwise to promote
+ the sale, use or other dealings in this Software without prior written authorization
+ from the individuals in question.</p></li><li class="listitem"><p>Any stylesheet derived from this Software that is publicly distributed will be
+ identified with a different name and the version strings in any derived Software will
+ be changed so that no possibility of confusion between the derived package and this
+ Software will exist.</p></li></ul></div><p><strong>Warranty: </strong>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DAVID CRAMER, KASUN GAJASINGHE, OR ANY
+ OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p><p>This package is maintained by Kasun Gajasinghe,
+ <code class="email">&lt;<a class="email" href="mailto:kasunbg AT gmail DOT com">kasunbg AT gmail DOT com</a>&gt;</code> and David Cramer,
+ <code class="email">&lt;<a class="email" href="mailto:david AT thingbag DOT net">david AT thingbag DOT net</a>&gt;</code> and with
+ contributions by Arun Bharadwaj and Visitha Baddegama. Please
+ direct support questions to the <a class="ulink" href="http://wiki.docbook.org/DocBookDiscussion" target="_top">DocBook-apps
+ mailing list</a>. </p><p>This package also includes the following software written and copyrighted by others:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Files in <code class="filename">template/common/jquery</code> are
+ copyrighted by <a class="ulink" href="http://jquery.com/" target="_top">JQuery</a> under the MIT License.
+ The file <code class="filename">jquery.cookie.js</code> Copyright (c) 2006 Klaus Hartl under
+ the MIT license.</p><a id="idp54848" class="indexterm"></a></li><li class="listitem"><p>Some files in the <code class="filename">template/search</code> and <code class="filename">indexer</code> directories were
+ originally part of N. Quaine's htmlsearch DITA plugin.
+ The htmlsearch DITA plugin is available from the <a class="ulink" href="http://tech.groups.yahoo.com/group/dita-users/files/Demos/" target="_top">files page</a> of the DITA-users yahoogroup. The
+ htmlsearch plugin was released under a BSD-style
+ license. See <code class="filename">indexer/license.txt</code>
+ for details. <a id="idp59632" class="indexterm"></a>
+ <a id="idp7584" class="indexterm"></a></p></li><li class="listitem"><p>Stemmers from the <a class="ulink" href="http://snowball.tartarus.org/texts/stemmersoverview.html" target="_top">Snowball
+ project</a> released under a BSD license.</p></li><li class="listitem"><p>Code from the <a class="ulink" href="http://lucene.apache.org/" target="_top">Apache Lucene</a> search
+ engine provides support for tokenizing Chinese, Japanese, and Korean content released
+ under the Apache 2.0 license. </p></li><li class="listitem"><p>Code that provides weighted search results and some
+ other improvements was graciously donated by <a class="ulink" href="http://www.oxygenxml.com" target="_top">SyncRO Soft
+ Ltd.</a>, the publishers of the oXygen XML
+ Editor.</p></li><li class="listitem"><p><a class="ulink" href="http://ccil.org/~cowan/XML/tagsoup/" target="_top">TagSoup</a>, released under the Apache 2.0
+ license, makes it possible to index html instead of just
+ xhtml output. </p></li><li class="listitem"><p>Cosmetic improvements provided by <a class="ulink" href="http://docs.openstack.org" target="_top">OpenStack</a>.</p></li></ul></div><p> Webhelp for DocBook was first developed as a <a class="ulink" href="http://code.google.com/soc/" target="_top">Google Summer of Code</a> project. </p></div></div>
+<div><p xmlns="http://www.w3.org/1999/xhtml" class="pubdate">January 2012</p></div>
+</div>
+<hr>
+</div>
+<div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>1. <a href="ch02s05.html#idp258048">Sample Image</a></dt></dl></div><div class="list-of-examples"><p><strong>List of Examples</strong></p><dl><dt>1. <a href="ch02s05.html#idp260752">Example code for adding images. Note down the relative path used</a></dt><dt>2. <a href="ch03s02s01.html#idp320496">Add new language to supportedLanguages array</a></dt><dt>3. <a href="ch03s02s01.html#idp327120">Initialize correct stemmer based on the
+ <code class="code">webhelp.indexer.language</code> specified</a></dt></dl></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/docs/ix01.html b/webhelp/docs/ix01.html
new file mode 100644
index 0000000..f0620d2
--- /dev/null
+++ b/webhelp/docs/ix01.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
+<title>Index - - README: Web-based Help from DocBook XML</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="prev" href="ch05s02.html" title="Some search words for testing (inflected)"></link><meta name="Section-title" content="Index"></meta><script type="text/javascript">
+ //The id for tree cookie
+ var treeCookieId = "treeview-1102";
+ var language = "en";
+ var w = new Object();
+ //Localization
+ txt_filesfound = 'Results';
+ txt_enter_at_least_1_char = "You must enter at least one character.";
+ txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.";
+ txt_please_wait = "Please wait. Search in progress...";
+ txt_results_for = "Results for: ";
+ </script><link rel="shortcut icon" href="favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="common/jquery/treeview/jquery.treeview.css"></link><style type="text/css">
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
+}
+
+input {
+ margin-bottom: 5px;
+ margin-top: 2px;
+}
+.folder {
+ display: block;
+ height: 22px;
+ padding-left: 20px;
+ background: transparent url(common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
+}
+span.contentsTab {
+ padding-left: 20px;
+ background: url(common/images/toc-icon.png) no-repeat 0 center;
+}
+span.searchTab {
+ padding-left: 20px;
+ background: url(common/images/search-icon.png) no-repeat 0 center;
+}
+
+/* Overide jquery treeview's defaults for ul. */
+.treeview ul {
+ background-color: transparent;
+ margin-top: 4px;
+}
+#webhelp-currentid {
+ background-color: #D8D8D8 !important;
+}
+.treeview .hover { color: black; }
+.filetree li span a { text-decoration: none; font-size: 12px; color: #517291; }
+
+/* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/
+.ui-widget-content {
+ border: 0px;
+ background: none;
+ color: none;
+}
+.ui-widget-header {
+ color: #e9e8e9;
+ border-left: 1px solid #e5e5e5;
+ border-right: 1px solid #e5e5e5;
+ border-bottom: 1px solid #bbc4c5;
+ border-top: 4px solid #e5e5e5;
+ border: medium none;
+ background: #F4F4F4; /* old browsers */
+ background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */
+ font-weight: none;
+}
+.ui-widget-header a { color: none; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+border: none; background: none; font-weight: none; color: none; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; }
+
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
+ color: black; text-decoration: none;
+ background: #C6C6C6; /* old browsers */
+ background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */
+ -webkit-border-radius:15px; -moz-border-radius:10px;
+ border: 1px solid #f1f1f1;
+}
+.ui-corner-all { border-radius: 0 0 0 0; }
+
+.ui-tabs { padding: .2em;}
+.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
+.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style><!--[if IE]>
+ <link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ <![endif]--><script type="text/javascript" src="common/browserDetect.js"></script><script type="text/javascript" src="common/jquery/jquery-1.7.2.min.js"></script><script type="text/javascript" src="common/jquery/jquery.ui.all.js"></script><script type="text/javascript" src="common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="common/jquery/layout/jquery.layout.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><noscript><div id="noscript">JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</div></noscript><div id="header"><a href="index.html"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Index</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="#" onclick="myLayout.toggle('west')" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
+ </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch05s02.html">Prev</a> </td></tr></table></div></div><div id="content"><div class="index"><div xmlns="" class="titlepage"><div><div><h1 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="idp356096"></a>Index</h1></div></div></div>
+<div class="index"><div class="indexdiv"><h3>A</h3><dl><dt>ANT_HOME, <a class="indexterm" href="ch02s03.html">Search indexing</a></dt></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>design, <a class="indexterm" href="ch03s01.html">Design</a></dt><dt>DITA</dt><dd><dl><dt>htmlsearch plugin, <a class="indexterm" href="index.html">README: Web-based Help from DocBook XML</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt>FAQ, <a class="indexterm" href="ch04.html">FAQ</a></dt><dt>features, <a class="indexterm" href="ch01.html">Introduction</a></dt></dl></div><div class="indexdiv"><h3>H</h3><dl><dt>htmlsearch, <a class="indexterm" href="index.html">README: Web-based Help from DocBook XML</a></dt></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>indexer</dt><dd><dl><dt>building, <a class="indexterm" href="ch02s03.html">Search indexing</a></dt><dt>CLASSPATH, <a class="indexterm" href="ch02s03.html">Search indexing</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>J</h3><dl><dt>jquery, <a class="indexterm" href="index.html">README: Web-based Help from DocBook XML</a></dt></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>search, <a class="indexterm" href="ch03s02.html">Search</a></dt><dd><dl><dt>description, <a class="indexterm" href="ch01.html">Introduction</a></dt><dt>features, <a class="indexterm" href="ch01.html">Introduction</a></dt><dt>highlighting, <a class="indexterm" href="ch01.html">Introduction</a></dt><dt>indexing, <a class="indexterm" href="ch02s03.html">Search indexing</a></dt><dt>stemming, <a class="indexterm" href="ch01.html">Introduction</a></dt></dl></dd><dt>stemmer, <a class="indexterm" href="ch03s02s01.html">New Stemmers</a></dt><dt>stemming, <a class="indexterm" href="ch02s04.html">Adding support for other (non-CJKV) languages</a></dt></dl></div></div></div><script type="text/javascript" src="common/main.js"></script><script type="text/javascript" src="common/splitterInit.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05s02.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output using the Ant build.xml
+ file</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li><li><span class="file"><a href="ch05.html" tabindex="1">Test section</a></span><ul><li><span class="file"><a href="ch05s01.html" tabindex="1">Some search words for testing</a></span></li><li><span class="file"><a href="ch05s02.html" tabindex="1">Some search words for testing (inflected)</a></span></li></ul></li><li id="webhelp-currentid"><span class="file"><a href="ix01.html" tabindex="1">Index</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><div><input id="textToSearch" name="textToSearch" type="search" placeholder="Search" class="searchText" tabindex="1"></input> &nbsp; <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></div></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html>
diff --git a/webhelp/template/content/search/default.props b/webhelp/docs/search/default.props
index 22edf43..22edf43 100644
--- a/webhelp/template/content/search/default.props
+++ b/webhelp/docs/search/default.props
diff --git a/webhelp/template/content/search/en-us.props b/webhelp/docs/search/en-us.props
index da284ce..da284ce 100644
--- a/webhelp/template/content/search/en-us.props
+++ b/webhelp/docs/search/en-us.props
diff --git a/webhelp/template/content/search/es-es.props b/webhelp/docs/search/es-es.props
index fb73bdc..fb73bdc 100644
--- a/webhelp/template/content/search/es-es.props
+++ b/webhelp/docs/search/es-es.props
diff --git a/webhelp/docs/content/search/htmlFileInfoList.js b/webhelp/docs/search/htmlFileInfoList.js
index 43430f7..a5efebe 100644
--- a/webhelp/docs/content/search/htmlFileInfoList.js
+++ b/webhelp/docs/search/htmlFileInfoList.js
@@ -20,19 +20,19 @@ fl["15"]= "ch02s02.html";
fl["16"]= "ch05s02.html";
fil = new Array();
fil["0"]= "ch04.html@@@FAQ@@@Frequently Asked Questions...";
-fil["1"]= "ch05s01.html@@@5.1. Some problematic search words@@@null";
+fil["1"]= "ch05s01.html@@@Some search words for testing@@@null";
fil["2"]= "ch03s02.html@@@Search@@@Overview design of Search mechanism...";
fil["3"]= "index.html@@@README: Web-based Help from DocBook XML@@@null";
-fil["4"]= "ch02s02s01.html@@@@@@null";
+fil["4"]= "ch02s02s01.html@@@Recommended Apache configurations@@@null";
fil["5"]= "ch03s01.html@@@Design@@@An overview of webhelp page structure...";
fil["6"]= "ch01.html@@@Introduction@@@Overview of the package...";
-fil["7"]= "ch02.html@@@Using the package@@@The following sections describe how to install and use the package on Windows...";
-fil["8"]= "ch02s01.html@@@Generating webhelp output@@@Installation instructions...";
+fil["7"]= "ch02.html@@@Using the package@@@java available in your PATH...";
+fil["8"]= "ch02s01.html@@@Generating webhelp output using the Ant build.xml file@@@Installation instructions...";
fil["9"]= "ch02s03.html@@@Search indexing@@@To build the indexer, you must have installed the JDK version 1.5 or higher and set the ANT_HOME environment variable...";
fil["10"]= "ch03s02s01.html@@@New Stemmers@@@Adding new Stemmers is very simple...";
-fil["11"]= "ch05.html@@@Chapter 5. Test section@@@null";
+fil["11"]= "ch05.html@@@Test section@@@null";
fil["12"]= "ch03.html@@@Developer Docs@@@This chapter provides an overview of how webhelp is implemented...";
fil["13"]= "ch02s05.html@@@Adding images@@@null";
fil["14"]= "ch02s04.html@@@Adding support for other (non-CJKV) languages@@@null";
fil["15"]= "ch02s02.html@@@Using and customizing the output@@@null";
-fil["16"]= "ch05s02.html@@@5.2. Some problematic search words (inflected)@@@null";
+fil["16"]= "ch05s02.html@@@Some search words for testing (inflected)@@@null";
diff --git a/webhelp/docs/content/search/index-1.js b/webhelp/docs/search/index-1.js
index dea25ac..096fcfb 100644
--- a/webhelp/docs/content/search/index-1.js
+++ b/webhelp/docs/search/index-1.js
@@ -1,19 +1,17 @@
var indexerLanguage="en";
//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa
-w["-"]="2*5,6*1,9*2";
+w["-"]="0*2,1*2,2*7,3*1,5*2,6*3,7*2,8*2,9*4,10*2,11*2,12*2,13*2,14*2,15*2,16*2";
w["-doutput-dir"]="8*1";
w["-version"]="8*2";
-w["."]="2*5,3*2,4*3,5*5,6*1,8*10,9*3,10*8,13*2,14*1,15*3";
+w["."]="2*5,3*2,4*3,5*5,6*1,7*1,8*11,9*3,10*8,13*2,14*1,15*3";
w[".chm"]="6*1";
w[".htaccess"]="4*1";
w[".html"]="4*1";
w[".js"]="2*2";
-w[".nexwave.nquindexer.indexermain"]="9*1";
-w[".nexwave.nquindexer.indexertask"]="9*1";
w[".treeview"]="5*1";
-w["0"]="0*2,3*1,8*5,9*6";
-w["1"]="0*6,1*46,3*2,8*8,9*6,11*1,13*10";
-w["1."]="0*6,3*2,8*1,13*2";
+w["0"]="0*2,3*2,8*5,9*6";
+w["1"]="0*6,3*2,8*3,9*6";
+w["1."]="0*6,3*2";
w["1.5"]="9*1";
w["1.6"]="8*1";
w["1.76.0"]="9*1";
@@ -23,31 +21,29 @@ w["1.77.0"]="0*2";
w["1.8.0"]="8*3,9*1";
w["1.8.2.custom.css"]="15*1";
w["172800"]="4*2";
-w["2"]="0*6,3*2,4*2,8*1,10*5,11*1,15*1,16*46";
-w["2."]="0*6,3*1,10*1";
-w["2.0"]="3*1";
+w["2"]="0*6,3*3,4*2,8*3,15*1";
+w["2."]="0*6,3*1";
+w["2.0"]="3*2";
w["2006"]="3*1";
w["2008"]="3*1";
w["2008-2012"]="3*1";
w["2012"]="3*2";
w["290304000"]="4*2";
-w["2:"]="8*1";
-w["3"]="0*8,3*1,10*5";
-w["3."]="0*6,3*1,10*1";
+w["2:"]="8*3";
+w["3"]="0*8,3*1";
+w["3."]="0*6,3*1";
w["3.0.0.jar"]="9*2";
w["3.x"]="0*1";
-w["4"]="0*7,2*1,8*1";
+w["4"]="0*7,2*1";
w["4."]="0*6";
w["480"]="4*1";
-w["5"]="0*8,1*46,6*1,8*3,9*1,11*48,16*46";
-w["5."]="0*6,11*2";
-w["5.1."]="1*2,11*1";
-w["5.2."]="11*1,16*2";
+w["5"]="0*8,6*1,8*13,9*1";
+w["5."]="0*6";
w["596"]="0*2";
w["596:"]="0*2";
-w["6"]="8*4";
-w["6.5"]="8*3";
-w["6.5.5.jar"]="0*1,8*1";
+w["6"]="8*6";
+w["6.5"]="8*4";
+w["6.5.5.jar"]="0*1,8*3";
w["6.5.x"]="8*1";
w["7"]="0*1";
w["7200"]="4*2";
@@ -58,6 +54,7 @@ w[":"]="0*2,10*2,15*3";
w["_stemmer"]="2*1,10*1";
w["_stemmer.j"]="2*2,10*2";
w["abandon"]="5*1";
+w["about"]="0*2,2*2,4*1,8*2,9*1";
w["abov"]="3*1";
w["abstract"]="15*1";
w["accord"]="6*1";
@@ -66,38 +63,38 @@ w["action"]="3*1";
w["actual"]="2*1";
w["ad"]="2*1,3*1,6*1,7*2,10*3,13*51,14*46,15*2";
w["adapt"]="8*1";
-w["add"]="3*1,6*1,8*1,10*14,13*1,14*1,15*1";
+w["add"]="3*1,6*1,8*1,10*4,13*1,14*1,15*1";
w["adddefaultcharset"]="4*1";
-w["addit"]="0*1,4*1,8*1,14*1";
+w["addit"]="0*1,4*1,14*1";
w["addoutputfilterbytyp"]="4*9";
-w["admon"]="8*1";
-w["admon.graph"]="8*2";
+w["admon.g"]="8*1";
+w["admon.graph"]="8*1";
w["advertis"]="3*1";
w["after"]="6*1";
w["against"]="8*2";
w["age"]="4*3";
w["al"]="10*1";
w["algorithm"]="10*1";
-w["all"]="0*1,2*2,3*2,4*1,5*1,6*1,7*1,8*2,9*2,10*2,12*1,13*1,14*1,15*1";
+w["all"]="2*1,3*1,8*1,9*1,10*1";
w["all."]="10*1";
w["allow"]="8*1";
w["alreadi"]="10*1";
-w["also"]="3*1,8*1";
+w["also"]="3*1,6*1,7*1,8*2";
w["altern"]="6*1";
w["analyz"]="9*1";
-w["and"]="0*4,2*6,3*12,4*4,5*3,6*6,7*2,8*9,9*4,10*8,12*5,14*5,15*51";
-w["ani"]="3*6,8*1,10*1,15*1";
+w["ani"]="3*6,10*1,15*1";
w["anim"]="5*1";
w["animated:"]="5*1";
w["anoth"]="8*2,10*1";
-w["ant"]="2*3,6*2,8*15,9*14,10*2,13*1";
+w["ant"]="2*3,6*2,7*2,8*59,9*14,10*2,13*1";
w["ant.file.dir"]="8*2";
w["ant_hom"]="8*1,9*1";
-w["apach"]="3*2,4*41,7*1,8*3,15*1";
+w["apach"]="3*3,4*41,7*1,8*3,15*1";
w["apache-ant-1"]="8*2";
w["apache-ant-1.8.0"]="8*2";
w["apart"]="0*2";
-w["apis.jar"]="0*2,8*4,9*1";
+w["apis.jar"]="0*2,8*9,9*1";
+w["app"]="3*1";
w["appear"]="6*2,15*1";
w["appli"]="5*2";
w["applic"]="4*5,6*1";
@@ -111,8 +108,12 @@ w["arguments:"]="9*1";
w["aris"]="3*1";
w["array"]="2*3,3*1,10*7";
w["array."]="10*1";
+w["arsenal"]="1*1,16*1";
+w["arsenic"]="1*1,16*1";
+w["arun"]="3*1";
w["ask"]="0*1";
w["associ"]="3*1";
+w["asspath"]="8*5";
w["assum"]="8*2,10*1";
w["assumpt"]="2*1";
w["attribut"]="0*2";
@@ -123,12 +124,15 @@ w["autoidx"]="0*2";
w["autoidx.xsl"]="0*2";
w["autoidx.xsl:"]="0*4";
w["automat"]="9*1";
-w["avail"]="3*1,8*1,9*2,10*3";
+w["ava"]="7*1";
+w["avail"]="3*1,7*1,8*3,9*2,10*3";
w["away"]="12*1";
w["back"]="14*1";
w["backward"]="6*1";
+w["baddegama"]="3*1";
+w["baddegama."]="3*1";
w["bar."]="15*1";
-w["base"]="0*1,3*52,5*1,6*2,10*5,15*1";
+w["base"]="0*2,1*1,2*1,3*52,5*2,6*3,7*1,8*1,9*1,10*6,11*1,12*1,13*1,14*1,15*2,16*1";
w["basedir"]="8*1";
w["basic"]="0*1";
w["be"]="8*1";
@@ -138,6 +142,7 @@ w["below"]="8*1";
w["below."]="8*1,13*1";
w["better"]="8*1";
w["between"]="2*1,3*1";
+w["bharadwaj"]="3*1";
w["bi"]="2*1";
w["bi-gram"]="2*1";
w["bin"]="8*4";
@@ -153,14 +158,14 @@ w["box"]="6*1";
w["break"]="2*1";
w["brief"]="6*1,15*1";
w["brower"]="4*1";
-w["browser"]="0*4,2*2,3*1,4*2,5*2,6*1,7*1,8*2,9*1,10*1,12*1,13*1,14*1,15*1";
-w["browser."]="0*1,2*1,3*1,4*1,5*1,6*1,7*1,8*2,9*1,10*1,12*1,13*1,14*1,15*1";
+w["browser"]="0*3,2*1,4*1,5*1,8*1";
+w["browser."]="8*1";
w["bsd"]="3*2";
w["bsd-style"]="3*1";
-w["build"]="0*3,1*1,5*1,6*3,8*13,9*1,10*3,13*1,16*1";
+w["build"]="0*3,1*1,5*1,6*3,7*3,8*59,9*1,10*3,13*1,16*1";
w["build-index"]="10*1";
w["build.properti"]="8*1,9*1,10*1,13*1";
-w["build.xml"]="1*1,8*11,16*1";
+w["build.xml"]="1*1,7*1,8*56,16*1";
w["build.xml."]="8*1";
w["built"]="5*1";
w["but"]="3*1,8*1,10*2";
@@ -171,13 +176,12 @@ w["c:"]="0*4,8*3";
w["cach"]="4*5";
w["cache-control"]="4*3";
w["call"]="2*1,5*1";
-w["can"]="0*6,2*3,5*2,6*5,8*4,9*1,10*3,13*1,15*2";
w["caus"]="4*3,15*1";
w["certain"]="4*1";
w["ch03"]="2*1";
w["ch03.html"]="2*1";
w["chang"]="2*1,3*1,4*1,8*1,9*1,10*3,15*3";
-w["chapter"]="2*1,11*4,12*1,15*1";
+w["chapter"]="2*1,12*1,15*1";
w["chapterinfo"]="15*1";
w["charact"]="4*1";
w["charg"]="3*1";
@@ -189,9 +193,10 @@ w["chrome"]="0*1";
w["chunk"]="5*2,6*1,15*2";
w["cjk"]="2*2,10*2";
w["cjkv"]="7*1,10*1,14*2";
+w["cl"]="8*3";
w["claim"]="3*1";
w["class"]="9*1,10*1";
-w["classpath"]="0*1,8*5,9*2";
+w["classpath"]="0*1,8*2,9*2";
w["classpath."]="9*1";
w["click."]="2*1";
w["client"]="2*2,6*1";
@@ -204,14 +209,17 @@ w["code:"]="5*1";
w["collaps"]="5*1,6*1";
w["collapsed:"]="5*1";
w["color"]="6*1,15*1";
+w["com"]="3*2,9*2,10*8";
+w["com.nexwave.nquindexer.indexermain"]="9*1";
+w["com.nexwave.nquindexer.indexertask"]="9*1";
w["come"]="9*1,15*1";
-w["command"]="2*2,8*4,9*1";
+w["command"]="2*2,7*1,8*5,9*1";
w["command-lin"]="9*1";
w["command."]="2*1";
w["comment"]="8*1";
w["comments."]="8*1";
w["common"]="2*1,3*1,6*1,15*7";
-w["commons:"]="8*1";
+w["commons:"]="8*3";
w["compani"]="5*1";
w["compar"]="2*1";
w["compil"]="10*1";
@@ -228,25 +236,24 @@ w["connect"]="3*1";
w["consid"]="14*1";
w["contact"]="10*1";
w["contain"]="2*1,3*1,8*1,9*1,10*1";
-w["content"]="2*4,3*2,5*6,6*5,7*5,9*1,10*2,11*5,12*8";
-w["content."]="2*1,9*1";
-w["content.format"]="2*1";
+w["content"]="2*3,3*1,5*6,6*5,7*5,9*1,11*5,12*8";
+w["content."]="2*2,9*1";
w["content:"]="5*1";
w["contract"]="3*1";
-w["contribut"]="3*1,14*1";
+w["contribut"]="3*2,14*1";
w["contributor"]="3*1";
w["control"]="4*3,5*1,13*1,15*1";
w["control:"]="5*1";
-w["conveni"]="8*2";
+w["conveni"]="8*3";
w["cooki"]="3*1,5*1,12*2";
-w["copi"]="3*3,8*3,10*1,13*2";
+w["copi"]="3*3,8*5,10*1,13*2";
w["copyright"]="3*5";
w["core"]="9*1";
w["correct"]="0*1,3*1,8*1,10*5";
w["cosmet"]="3*1";
w["could"]="4*1,8*1";
w["cramer"]="3*4";
-w["creat"]="2*1,6*1,8*4";
+w["creat"]="2*1,6*1,7*1,8*5";
w["credit"]="3*1";
w["csrc"]="8*2";
w["css"]="4*5,5*3,6*1,15*8";
@@ -257,12 +264,13 @@ w["currenc"]="1*2,16*1";
w["current"]="0*1,10*3,14*1";
w["currently."]="0*1";
w["custom"]="5*2,7*1,8*1,15*48";
-w["d"]="0*1,8*1";
+w["d"]="8*1";
w["damag"]="3*1";
w["danish"]="14*1";
w["data"]="2*1";
w["david"]="3*6";
w["day"]="1*1,4*1,16*1";
+w["de"]="8*1,10*3";
w["deal"]="3*3";
w["deep"]="15*1";
w["default"]="2*1,8*1,9*2,15*1";
@@ -284,12 +292,12 @@ w["details."]="0*1,3*1,8*1,9*1";
w["develop"]="3*1,12*51";
w["differ"]="3*1,8*1";
w["dir"]="8*6,13*1";
-w["direct"]="9*1,15*1";
+w["direct"]="3*1,9*1,15*1";
w["directori"]="2*2,3*1,8*15,9*3,13*4";
w["directory."]="2*1,8*4,13*1";
-w["disabl"]="0*1,2*1,3*1,4*1,5*1,6*1,7*1,8*2,9*1,10*1,12*1,13*1,14*1,15*1";
+w["disabl"]="8*1";
w["display"]="2*1";
-w["distribut"]="3*2,8*2,9*1";
+w["distribut"]="3*2,8*3,9*1";
w["dita"]="0*1,3*3";
w["dita-us"]="3*1";
w["dita."]="0*1";
@@ -299,7 +307,8 @@ w["do"]="2*2,3*1,8*2,9*1,14*1";
w["doc"]="2*1,8*3,12*51,15*7";
w["docbkx"]="6*1,8*1";
w["docbo"]="0*2";
-w["docbook"]="0*2,2*2,3*52,4*3,5*3,8*5,9*1,10*8,13*2,15*2";
+w["docbook"]="0*3,1*1,2*3,3*53,4*3,5*4,6*2,7*1,8*6,9*2,10*9,11*1,12*1,13*3,14*1,15*3,16*1";
+w["docbook-app"]="3*1";
w["docbook-apps@list"]="10*1";
w["docbook-apps@lists.oasis-open.org"]="10*1";
w["docbook-webhelp"]="8*1,10*7";
@@ -316,8 +325,7 @@ w["docsrc"]="13*1";
w["document"]="0*2,3*1,4*2,5*1,6*1,8*10,13*4";
w["document."]="8*2,13*1";
w["documentation."]="0*1,5*1,6*1";
-w["doe"]="0*2,2*2,4*1,8*1,9*1";
-w["does."]="4*1";
+w["doe"]="0*2,2*2,8*1,9*1";
w["doesn"]="9*1";
w["don"]="8*1,15*1";
w["donat"]="3*1";
@@ -326,13 +334,12 @@ w["dostem"]="2*1";
w["dot"]="3*4";
w["doutput"]="8*1";
w["down"]="3*1,13*5";
-w["download"]="4*1,8*1,9*1,10*1";
+w["download"]="4*1,8*2,9*1,10*1";
w["drop"]="2*1";
-w["dtd"]="8*1";
+w["dtd"]="8*2";
w["dtd."]="8*1";
w["dutch"]="14*1";
-w["e"]="8*1,10*1,12*1";
-w["each"]="4*1,6*1";
+w["e"]="10*1,12*1";
w["easi"]="10*1";
w["easili"]="5*1,10*2";
w["easily."]="10*1";
@@ -345,35 +352,40 @@ w["element"]="15*1";
w["element."]="0*2,15*1";
w["els"]="9*1,10*7";
w["email"]="10*1";
-w["empti"]="8*1";
-w["enabl"]="0*1,2*1,3*1,4*1,5*1,6*1,7*1,8*2,9*1,10*1,12*1,13*1,14*1,15*1";
+w["en"]="8*3,9*1,10*4";
+w["en."]="8*1";
+w["enabl"]="8*1";
w["enable.stem"]="8*1";
w["endors"]="9*1";
w["engin"]="3*1,6*1";
w["engine."]="6*1";
w["english"]="2*1,6*1,8*1,10*3,14*1";
w["englishstemm"]="10*1";
-w["enjoy"]="0*1,2*1,3*1,4*1,5*1,6*1,7*1,8*1,9*1,10*1,12*1,13*1,14*1,15*1";
-w["environ"]="8*4,9*1";
+w["environ"]="7*1,8*5,9*1";
w["equalsignorecas"]="10*3";
w["error"]="0*2";
w["error."]="0*2";
-w["etc"]="2*1,5*1,6*1,8*1";
+w["etc"]="2*1,5*1,6*1,8*2";
w["etc."]="2*1,5*1,6*1,8*3,15*1";
w["event"]="3*1";
w["ex"]="2*1";
w["ex:"]="2*1";
w["exact"]="10*1,12*1";
-w["exampl"]="3*6,8*5,10*5,13*13,15*1";
+w["exampl"]="3*6,8*5,10*1,13*1,15*1";
w["example."]="10*1";
w["example:"]="8*4";
+w["example 1"]="13*5";
+w["example 1. exampl"]="13*5";
+w["example 2"]="10*5";
+w["example 2. add"]="10*5";
+w["example 3"]="10*5";
+w["example 3. initi"]="10*5";
w["except"]="3*1";
w["exist"]="2*1,3*1";
w["exist."]="3*1,8*1";
-w["explain"]="4*1";
w["expos"]="6*1";
w["express"]="3*1";
w["ext"]="10*2";
w["extend"]="10*2";
-w["extens"]="0*2,2*1,4*1,8*2,9*1,10*1";
+w["extens"]="0*2,2*1,4*1,8*1,9*1,10*1";
diff --git a/webhelp/docs/content/search/index-2.js b/webhelp/docs/search/index-2.js
index c56f9bf..05d3f0c 100644
--- a/webhelp/docs/content/search/index-2.js
+++ b/webhelp/docs/search/index-2.js
@@ -1,23 +1,27 @@
//Auto generated index for searching by xsl-webhelpindexer for DocBook Webhelp.# Kasun Gajasinghe, University of Moratuwa
w["extension:"]="4*1";
w["extent"]="2*1";
-w["f"]="9*1,12*1,14*1";
+w["extract"]="8*1";
+w["f"]="4*1,9*1,12*1,14*1";
w["fair"]="10*1";
w["fals"]="2*1,8*1";
w["false."]="2*1";
w["faq"]="0*51";
-w["featur"]="0*1,2*2,3*1,4*1,5*2,6*7,7*1,8*1,9*1,10*1,12*1,13*1,14*1,15*1";
+w["featur"]="2*1,5*1,6*6";
w["feature."]="5*1";
w["feel"]="15*1";
w["fetch"]="9*1";
w["few"]="5*1,10*1";
-w["figur"]="3*5,8*3,13*6";
+w["fi"]="4*1";
+w["figur"]="3*5,8*3,13*4";
+w["figure 1"]="13*5";
+w["figure 1. sampl"]="13*5";
w["fil"]="2*2";
-w["file"]="0*2,2*10,3*5,4*8,5*1,6*1,8*17,9*1,10*1,13*2,15*4";
+w["file"]="0*2,2*10,3*5,4*6,5*1,6*1,7*1,8*64,9*1,10*1,13*2,15*4";
w["file."]="4*1,10*1,15*1";
w["file:"]="0*4";
w["fileref"]="13*1";
-w["files."]="4*2,8*1";
+w["files."]="4*1,8*1";
w["files:"]="2*1,15*1";
w["fileset"]="8*1,13*1";
w["filesmatch"]="4*6";
@@ -32,14 +36,12 @@ w["flv"]="4*2";
w["folder"]="0*1,2*2,9*1,10*2,15*1";
w["folder."]="2*1,10*1";
w["foll"]="0*1";
-w["follos"]="8*1";
+w["follos"]="8*3";
w["follow"]="0*2,2*1,3*2,4*2,5*1,7*1,8*2,9*2,10*1,13*2,14*1,15*1";
-w["foo"]="1*1";
-w["foo."]="16*1";
w["foobar"]="2*1";
w["form"]="14*1";
w["form."]="14*1";
-w["format"]="6*3,13*1";
+w["format"]="2*1,6*3,13*1";
w["fortun"]="10*1";
w["forward"]="6*1";
w["four"]="0*1";
@@ -47,18 +49,20 @@ w["fr"]="8*1,10*4";
w["frameset"]="5*1,6*1,12*1,15*1";
w["frameset."]="6*1,12*2";
w["free"]="3*1";
-w["french"]="6*1,8*1,10*3";
+w["french"]="2*1,6*1,8*1,10*3";
w["french."]="2*1";
w["frenchstemm"]="10*1";
w["frequent"]="0*1";
+w["from"]="0*3,1*1,2*3,3*57,4*1,5*4,6*4,7*1,8*6,9*2,10*3,11*1,12*2,13*4,14*1,15*2,16*1";
w["full"]="6*1,10*1";
w["fulli"]="2*1,5*1";
w["furnish"]="3*1";
w["further"]="2*1,5*1,15*1";
w["gajasingh"]="3*4";
+w["ge"]="8*1";
w["general"]="10*1,15*1";
-w["generat"]="0*1,2*1,5*3,6*1,7*1,8*50,10*1";
-w["german"]="2*1,6*1,8*1,10*3";
+w["generat"]="0*1,2*1,5*3,6*2,7*1,8*49,10*1";
+w["german"]="2*1,6*1,10*3";
w["german."]="6*1,14*1";
w["germanstemm"]="10*1";
w["get"]="0*2,2*1,6*1,10*1,15*1";
@@ -71,23 +75,21 @@ w["gorithm"]="10*1";
w["gracious"]="3*1";
w["gram"]="2*1";
w["grant"]="3*1";
-w["graphic"]="8*5,13*2";
+w["graphic"]="8*4,13*2";
w["group"]="6*1";
w["guid"]="0*1,4*3,15*1";
-w["h"]="8*1";
w["handl"]="2*2,15*1";
w["happen"]="0*1,2*1";
w["hartl"]="3*1";
-w["has"]="0*2,2*2,8*2,13*1";
w["hat"]="6*1";
-w["have"]="2*1,4*1,8*3,9*5,10*1,15*1";
+w["have"]="9*1";
w["haven"]="0*1";
w["having."]="9*1";
w["head"]="5*1";
w["header"]="4*3,5*2,15*1";
w["header:"]="5*1";
w["height"]="15*1";
-w["help"]="3*51,6*3,9*1,12*1,15*3";
+w["help"]="0*1,1*1,2*1,3*51,5*1,6*4,7*1,8*1,9*2,10*1,11*1,12*2,13*1,14*1,15*4,16*1";
w["help."]="6*1";
w["here"]="8*1,9*1,13*1";
w["here."]="8*2,13*1";
@@ -96,11 +98,14 @@ w["higher"]="8*1,9*1";
w["higher."]="8*2";
w["highlight"]="6*1";
w["hour"]="4*1";
+w["how"]="2*1,6*1,7*1,8*1,12*1,13*1";
w["howev"]="8*1";
w["href"]="0*2";
+w["ht"]="8*1";
w["htaccess"]="4*1";
w["htm"]="4*2,8*1";
-w["html"]="0*3,2*2,4*7,5*1,6*1,8*4,15*1";
+w["html"]="0*3,2*2,3*1,4*7,5*1,6*1,8*2,15*1";
+w["html.extens"]="8*1";
w["htmlfileinfolist"]="2*1";
w["htmlfileinfolist.j"]="2*1";
w["htmlfilelist"]="2*1";
@@ -116,8 +121,11 @@ w["ide"]="2*1";
w["idea"]="2*1";
w["identifi"]="3*1,8*1";
w["ie"]="0*1";
-w["if"]="0*1,2*2,4*2,6*1,8*9,9*1,10*12,12*2,13*1,15*1";
+w["if"]="0*1,2*2,4*2,6*1,8*8,9*1,10*12,12*2,13*1,15*1";
w["ignor"]="8*1";
+w["ilabl"]="7*1";
+w["ile"]="4*1";
+w["iles."]="4*1";
w["imag"]="3*2,7*1,8*11,13*72";
w["imagedata"]="13*1";
w["imageobject"]="13*2";
@@ -125,11 +133,11 @@ w["images."]="3*1,13*5";
w["implement"]="2*1,6*2,12*2,14*2";
w["implemented."]="2*1,12*1";
w["impli"]="3*1";
-w["import"]="6*1,8*84";
+w["import"]="6*1,8*44";
w["imposs"]="6*1";
w["improv"]="3*2,4*1";
w["includ"]="0*1,2*3,3*4,5*4,6*2,10*1,14*1,15*1";
-w["index"]="0*5,2*14,3*4,4*2,6*2,7*1,8*5,9*58,10*12,14*1";
+w["index"]="0*5,2*14,3*5,4*2,6*2,7*1,8*5,9*58,10*12,14*1";
w["index-"]="2*2";
w["index.html"]="8*2";
w["indexer-languag"]="8*1";
@@ -141,13 +149,13 @@ w["indexermain"]="9*1";
w["indexertask"]="9*2,10*1";
w["indexertask.java"]="10*2";
w["indexing:"]="2*1";
-w["indic"]="8*2";
-w["indicated:"]="8*1";
+w["indic"]="8*4";
+w["indicated:"]="8*3";
w["individu"]="3*2";
w["inflect"]="11*1,16*46";
w["inform"]="0*3,4*1,8*2,9*1,15*1";
w["information."]="0*1";
-w["initi"]="3*1,10*15";
+w["initi"]="3*1,10*5";
w["input"]="8*8,13*1,14*1";
w["input-images-basedir"]="8*1";
w["input-images-dir"]="8*2,13*1";
@@ -155,6 +163,7 @@ w["input-xml"]="8*3";
w["input-xml."]="8*1";
w["insid"]="2*1,15*1";
w["instal"]="7*1,8*12,9*1";
+w["instead"]="3*1";
w["instruct"]="8*2";
w["integr"]="6*1,10*1";
w["intellij"]="2*1";
@@ -174,16 +183,16 @@ w["it_stemm"]="10*1";
w["it_stemmer.j"]="10*1";
w["italian"]="10*5,14*1";
w["italianstemm"]="10*4";
-w["ja"]="8*4,10*2";
+w["ja"]="8*2,10*2";
w["januari"]="3*1";
w["japan"]="10*1";
w["japanes"]="2*1,3*1,6*1,8*1,10*1";
-w["jar"]="0*1,2*1,8*9,9*5";
-w["java"]="0*6,8*6,9*1,10*5,14*3";
+w["jar"]="0*1,2*1,8*15,9*5";
+w["java"]="0*6,7*5,8*21,9*1,10*5,14*3";
w["java."]="10*1";
w["javascr"]="14*1";
w["javascrip"]="4*1";
-w["javascript"]="0*3,2*5,3*2,4*8,5*3,6*2,7*2,8*2,9*2,10*6,12*2,13*2,14*5,15*2";
+w["javascript"]="0*1,2*3,4*6,5*1,10*4,14*3";
w["javascript."]="2*1,14*1";
w["jdk"]="8*1,9*1";
w["jdk."]="8*1";
@@ -198,6 +207,7 @@ w["jquery.treeview.css"]="15*1";
w["jqueryui"]="15*1";
w["jre"]="9*1";
w["js"]="2*6,3*1,4*2,10*3";
+w["just"]="3*1";
w["kasun"]="0*6,3*4";
w["kasunbg"]="3*2";
w["key"]="1*1,16*1";
@@ -214,6 +224,7 @@ w["layer"]="8*1";
w["layout"]="6*1";
w["left"]="5*1,12*1,15*1";
w["leftnavig"]="15*1";
+w["les"]="4*1";
w["level"]="8*1";
w["li"]="5*1";
w["liabil"]="3*1";
@@ -221,7 +232,7 @@ w["liabl"]="3*1";
w["lib"]="9*1";
w["librari"]="2*1";
w["library."]="2*1";
-w["licens"]="3*4";
+w["licens"]="3*5";
w["license."]="3*5";
w["license.txt"]="3*1";
w["like"]="2*1,6*1,10*1";
@@ -230,12 +241,12 @@ w["line"]="0*2,4*2,8*2,9*1,10*1";
w["line."]="8*1";
w["link"]="6*2,15*2";
w["linux"]="9*1";
-w["list"]="3*10,5*2,8*1,10*3,13*1";
+w["list"]="3*11,5*2,8*1,10*3,13*1";
w["ll"]="9*1,10*1";
w["ll."]="9*1";
w["load"]="5*1,12*1";
-w["local"]="8*1";
-w["locat"]="2*1,8*5,10*1";
+w["local"]="8*3";
+w["locat"]="2*1,8*6,10*1";
w["location."]="10*1";
w["log"]="6*1";
w["logo"]="5*1";
@@ -250,10 +261,12 @@ w["lucene-core-3"]="9*1";
w["lucene-core-3.0.0.jar"]="9*1";
w["m"]="0*2";
w["made"]="5*1";
-w["mail"]="10*1";
+w["mail"]="3*1,10*1";
w["main"]="2*1,5*1,9*1";
w["maintain"]="3*1";
-w["make"]="4*1,8*1,10*1";
+w["make"]="3*1,4*1,8*1,10*1";
+w["makefil"]="6*1,7*2,8*2";
+w["makefile.sampl"]="7*2,8*2";
w["manag"]="8*1";
w["mani"]="6*1";
w["martin"]="14*1";
@@ -275,17 +288,17 @@ w["method"]="2*1";
w["microsoft"]="6*1";
w["miss"]="8*1";
w["mit"]="3*2";
+w["ml"]="8*1";
w["model"]="6*1";
-w["modifi"]="3*1,8*2";
+w["modifi"]="3*1,8*4";
w["more"]="0*3,4*1";
w["most"]="0*2";
w["move"]="2*1";
w["multipl"]="15*1";
-w["must"]="4*2,8*3,9*1,12*1";
+w["must"]="4*2,7*1,8*4,9*1,12*1";
w["must-revalid"]="4*2";
w["mutandi"]="8*3";
w["mutati"]="8*3";
-w["my"]="2*1";
w["n"]="3*1";
w["n."]="3*1";
w["name"]="2*4,3*2,8*7,10*3,15*1";
@@ -294,7 +307,7 @@ w["navigation:"]="5*2";
w["ncomment"]="8*1";
w["necessari"]="8*2";
w["necessary."]="15*1";
-w["need"]="0*3,2*1,8*3,9*3,10*3,13*1,14*1,15*2";
+w["need"]="0*3,2*1,8*4,9*3,10*3,13*1,14*1,15*2";
w["need:"]="10*1";
w["net"]="3*2,9*1";
w["netbean"]="2*1";
@@ -310,7 +323,6 @@ w["non-n"]="8*1";
w["noninfring"]="3*1";
w["noninfringement."]="3*1";
w["norwegian"]="14*1";
-w["not"]="2*1,3*2,6*2,8*10";
w["note"]="3*1,4*1,8*162,9*40,10*40,13*5";
w["noth"]="15*1";
w["notic"]="3*3";
@@ -349,9 +361,9 @@ w["others:"]="3*1";
w["otherwis"]="3*2";
w["ouput"]="8*1";
w["out"]="3*1,6*1";
-w["output"]="0*3,2*1,4*1,5*1,6*2,7*2,8*57,10*1,13*2,15*47";
+w["output"]="0*3,2*1,4*1,5*1,6*2,7*2,8*56,10*1,13*2,15*47";
w["output-dir"]="8*2";
-w["output."]="6*1,8*1";
+w["output."]="3*1,6*1";
w["outsid"]="0*2";
w["over"]="13*1";
w["overal"]="5*1";
@@ -372,7 +384,7 @@ w["part"]="2*1,3*1,5*1,9*1,15*1";
w["particul"]="3*1";
w["parts."]="2*1";
w["pass"]="8*2";
-w["path"]="0*1,3*1,8*10,13*5";
+w["path"]="0*1,3*1,7*1,8*11,13*5";
w["path-"]="8*4";
w["paths."]="0*1";
diff --git a/webhelp/docs/content/search/index-3.js b/webhelp/docs/search/index-3.js
index 3872f38..9a8057e 100644
--- a/webhelp/docs/content/search/index-3.js
+++ b/webhelp/docs/search/index-3.js
@@ -14,11 +14,11 @@ w["phrase"]="15*1";
w["pie"]="3*1";
w["place"]="6*1";
w["plain"]="4*1";
-w["pleas"]="0*1,2*1,3*1,4*1,5*1,6*1,7*1,8*1,9*1,10*1,12*1,13*1,14*2,15*1";
+w["pleas"]="3*1,14*1";
w["plugin"]="0*2,3*2,5*2,6*1,8*1";
w["plugin."]="3*1";
w["png"]="4*2";
-w["point"]="8*2,15*1";
+w["point"]="7*1,8*5,15*1";
w["popul"]="15*1";
w["popular"]="10*1";
w["porter"]="14*1";
@@ -27,17 +27,17 @@ w["portugues"]="14*1";
w["posit"]="5*1,15*4";
w["positioning.css"]="5*1,15*1";
w["positions."]="15*1";
-w["possibl"]="3*1";
+w["possibl"]="3*2";
w["pretti"]="9*1";
w["prev"]="5*1";
w["prior"]="3*1,9*1";
w["privat"]="10*2";
w["probabl"]="9*1";
-w["problem"]="8*1";
-w["problemat"]="1*46,11*2,16*46";
-w["procedur"]="8*3,13*1";
+w["procedur"]="8*1,13*1";
+w["procedure 1"]="8*5";
+w["procedure 1. "]="8*1";
w["process"]="2*2,5*1,8*3,9*2";
-w["processor"]="0*1,8*2";
+w["processor"]="0*1,8*4";
w["processors."]="8*1";
w["produc"]="6*1";
w["product"]="0*3";
@@ -48,7 +48,7 @@ w["promot"]="3*1";
w["prompt"]="8*2";
w["prompt:"]="8*2";
w["properti"]="8*5,10*2,13*1";
-w["provid"]="0*1,2*1,3*4,6*1,8*1,12*1";
+w["provid"]="0*1,2*1,3*4,6*1,12*1";
w["public"]="3*1,4*2,6*1";
w["publish"]="3*2";
w["punctuat"]="2*1,8*1";
@@ -57,21 +57,22 @@ w["put"]="8*1,9*1,13*1";
w["quain"]="3*1";
w["queri"]="2*7,6*1,8*1";
w["querying:"]="2*1";
-w["question"]="0*1,3*1,10*1";
+w["question"]="0*1,3*2,10*1";
w["question."]="3*1";
-w["r"]="6*1,8*1";
+w["r"]="8*1";
+w["raphic"]="8*1";
w["rate"]="6*1";
w["read"]="12*1";
-w["readm"]="3*51,8*1";
+w["readm"]="0*1,1*1,2*1,3*51,5*1,6*1,7*1,8*2,9*1,10*1,11*1,12*1,13*1,14*1,15*1,16*1";
w["readme.xml"]="8*1";
-w["readme:"]="3*51";
+w["readme:"]="0*1,1*1,2*1,3*51,5*1,6*1,7*1,8*1,9*1,10*1,11*1,12*1,13*1,14*1,15*1,16*1";
w["reason"]="0*2";
w["recommend"]="4*41,7*1,15*1";
w["recompil"]="2*1";
w["redmond"]="15*2";
w["refer"]="8*2,13*1";
w["relat"]="3*1,8*1,13*5,15*1";
-w["releas"]="3*3";
+w["releas"]="3*4";
w["remov"]="9*1";
w["render"]="12*1";
w["replac"]="15*1";
@@ -85,36 +86,37 @@ w["result."]="6*1";
w["results."]="2*1,6*1";
w["return"]="2*1";
w["revalid"]="4*2";
-w["right"]="15*1";
+w["right"]="3*1,15*1";
+w["rman"]="8*1";
w["role"]="15*1";
w["romanian"]="14*1";
w["root"]="2*1,10*1";
w["rss"]="4*1";
-w["run"]="2*2,8*2,9*2,10*2";
+w["run"]="2*2,8*1,9*2,10*2";
w["russian"]="14*1";
-w["s"]="0*2,2*2,3*1,4*1,8*1,9*3,10*2,14*2,15*1";
+w["s"]="0*2,2*3,3*1,4*1,9*3,10*2,14*2,15*1";
w["safari"]="0*1";
w["safe"]="8*1";
w["sale"]="3*1";
w["same"]="8*2";
-w["sampl"]="3*1,13*21";
+w["sampl"]="3*1,6*1,7*3,8*2,13*11";
w["sample.jpg"]="13*10";
w["save"]="12*1";
w["saxhtmlindex"]="10*1";
w["saxhtmlindex.java"]="10*2";
-w["saxon"]="0*1,8*7";
-w["saxon-6"]="0*1";
-w["saxon-6.5.5.jar"]="0*1,8*1";
+w["saxon"]="0*1,8*10";
+w["saxon-6"]="0*1,8*3";
+w["saxon-6.5.5.jar"]="0*1,8*3";
w["saxon.jar"]="8*1";
w["say"]="1*1,16*1";
w["score"]="2*1,6*2";
-w["script"]="6*3,8*1,9*1";
-w["script."]="9*1";
+w["script"]="6*2,7*2,8*2,9*1";
+w["script."]="6*1,7*2,8*1,9*1";
w["search"]="1*46,2*51,3*3,4*2,5*4,6*13,7*1,8*3,9*46,10*3,11*2,12*4,14*3,15*1,16*46";
w["search-result."]="6*1";
w["search."]="6*2,12*1";
w["searching."]="2*1";
-w["section"]="5*1,7*1,11*46,13*1,15*1";
+w["section"]="5*1,7*1,11*51,13*1,15*1";
w["sectioninfo"]="15*1";
w["see"]="0*1,3*1,4*1,8*6,9*1,10*2,13*1,15*1";
w["see."]="5*1";
@@ -130,8 +132,9 @@ w["set"]="0*1,4*4,8*5,9*1,15*1";
w["setoutputfilt"]="4*1";
w["setting."]="4*1";
w["shall"]="3*3";
-w["share"]="0*6,8*5,9*1";
-w["should"]="2*1,8*2,9*1";
+w["share"]="0*6,8*12,9*1";
+w["shell"]="7*1,8*1";
+w["should"]="2*1,8*1,9*1";
w["show"]="6*2,13*1";
w["shown"]="6*1,13*1";
w["side"]="2*2,6*1";
@@ -143,18 +146,16 @@ w["simple."]="10*1";
w["simpli"]="2*2,8*1,15*1";
w["simplifi"]="2*1";
w["sinc"]="2*1,4*1";
-w["site."]="0*1,2*1,3*1,4*1,5*1,6*1,7*1,8*1,9*1,10*1,12*1,13*1,14*1,15*1";
w["sky"]="1*1,16*1";
w["small"]="6*3";
w["smooth"]="9*1";
w["snapshot"]="9*4";
w["snowbal"]="3*1,10*6";
w["snowballstemm"]="10*2";
-w["so"]="0*1,2*1,3*2,8*1,9*1,15*2";
w["soft"]="3*1";
w["softwar"]="3*15";
w["software."]="3*2";
-w["some"]="1*92,2*1,3*2,8*1,9*2,11*2,16*92";
+w["some"]="1*46,2*1,3*2,8*1,9*2,11*2,16*46";
w["sophist"]="6*1";
w["sourc"]="2*2,8*1,13*2";
w["source."]="2*1";
@@ -165,14 +166,14 @@ w["spanish"]="14*1";
w["specifi"]="3*1,8*1,10*5";
w["src"]="10*8";
w["stale"]="4*1";
-w["start"]="8*1";
+w["start"]="7*1,8*2";
w["state"]="12*2";
w["stayton"]="4*1,15*1";
w["stem"]="2*6,6*2,8*2,14*3";
w["stemmer"]="2*3,3*2,8*1,10*74,12*1,14*3";
w["stemmer."]="6*1,10*1";
w["stemming."]="2*1";
-w["step"]="0*1,8*1";
+w["step"]="0*1,8*2";
w["steps."]="10*1";
w["store"]="2*2,4*1,8*2";
w["string"]="3*1,10*3";
@@ -193,7 +194,7 @@ w["such"]="2*1,4*1,10*1";
w["summari"]="2*1,15*2";
w["summaries."]="15*1";
w["summer"]="3*1";
-w["support"]="0*2,2*3,3*1,6*3,7*1,10*3,14*49";
+w["support"]="0*2,2*3,3*2,6*3,7*1,10*3,14*49";
w["supportedlanguag"]="3*1,10*8";
w["suppress.footer.navig"]="8*1";
w["sure"]="10*1";
@@ -202,16 +203,17 @@ w["swedish"]="14*1";
w["swf"]="4*2";
w["synchron"]="6*1";
w["syncro"]="3*1";
-w["system"]="0*2,6*1,8*3,12*1,15*1";
-w["system."]="6*1,8*2";
+w["system"]="0*2,6*1,8*4,12*1,15*1";
+w["system."]="6*1,8*3";
w["system:"]="8*1";
w["t"]="0*2,2*1,4*1,6*1,8*1,9*1,15*1";
-w["tab"]="5*7";
+w["tab"]="5*7,8*1";
w["tab."]="5*2,8*1";
w["tab:"]="5*1";
-w["tabl"]="5*3,6*2,7*5,12*8";
+w["tabl"]="5*3,6*2,7*5,11*5,12*8";
w["tabs."]="5*1";
w["tag"]="5*2";
+w["tagsoup"]="3*1";
w["target"]="6*1";
w["target."]="6*1";
w["task"]="9*1,14*1";
@@ -220,10 +222,11 @@ w["tell"]="8*1";
w["templat"]="3*2,6*1,10*2";
w["template."]="14*1";
w["term"]="6*2";
-w["test"]="0*3,8*5,11*92";
+w["test"]="0*3,1*46,8*5,11*53,16*46";
w["test-ouput"]="8*1";
w["test-output"]="8*3";
w["text"]="2*1,4*5,8*1,10*1";
+w["that"]="2*2,3*3,4*2,5*1,6*2,8*11,10*2,12*1,13*2";
w["them"]="4*1,9*1";
w["them."]="2*1";
w["theme"]="15*7";
@@ -232,8 +235,7 @@ w["then"]="2*1,6*1,10*6,13*1,15*1";
w["there"]="0*1,2*1,10*1";
w["therefor"]="14*1";
w["these"]="2*1,4*2,9*3,12*1,14*1,15*1";
-w["they"]="8*1,12*1";
-w["thing"]="4*1";
+w["they"]="8*3,12*1";
w["thingbag"]="3*2";
w["those"]="4*1,13*1";
w["though"]="8*1";
@@ -242,12 +244,8 @@ w["time"]="6*1";
w["tion"]="4*1";
w["tip"]="8*41,15*40";
w["titl"]="2*1,5*1,13*2";
-w["tml"]="8*1";
-w["tml.extens"]="8*1";
w["toc"]="5*2,6*4,15*1";
w["toc."]="6*1";
-w["todo"]="4*1";
-w["todo:"]="4*1";
w["token"]="2*2,3*1";
w["too"]="2*1";
w["tool"]="8*1";
@@ -264,9 +262,8 @@ w["tree"]="5*6,6*1,12*1,13*2,15*1";
w["tree."]="6*1,15*1";
w["tree:"]="5*1,13*1";
w["treeview"]="5*2,15*3";
-w["tri"]="1*1,8*1,16*1";
-w["tru"]="8*1";
-w["true"]="5*1,8*3";
+w["tri"]="1*1,16*1";
+w["true"]="5*1,8*4";
w["trunk"]="2*3";
w["turkish"]="14*1";
w["two"]="2*1,5*1,9*2,10*2,15*1";
@@ -278,22 +275,22 @@ w["ul"]="5*1";
w["unchang"]="15*1";
w["unchanged."]="15*1";
w["uncompress"]="4*1";
-w["under"]="3*5,9*1";
+w["under"]="3*6,9*1";
w["understandable."]="10*1";
w["undertak"]="14*1";
+w["unix"]="7*1,8*1";
w["unnecessari"]="2*1";
w["unord"]="5*1";
w["unzip"]="8*2";
w["up"]="1*1,2*2,4*1,5*1,8*1,9*1,10*1,13*1,14*1,15*1,16*1";
w["updat"]="4*1";
w["us"]="10*1";
-w["use"]="2*2,3*5,5*2,6*7,7*53,8*8,10*1,13*5,14*2,15*48";
+w["use"]="2*2,3*5,5*2,6*7,7*56,8*55,10*1,13*5,14*2,15*48";
w["used."]="2*1";
w["user"]="0*6,2*2,3*1,4*1,6*1,8*1,14*1";
-w["usr"]="0*6,8*5,9*1";
+w["usr"]="0*6,8*12,9*1";
w["utf"]="4*1";
w["utf-8"]="4*1";
-w["va"]="8*3";
w["valid"]="8*2";
w["validate-against-dtd"]="8*1";
w["valu"]="8*4";
@@ -307,17 +304,19 @@ w["veri"]="10*1";
w["verison"]="14*1";
w["version"]="0*1,3*1,8*3,9*4,10*2,14*2";
w["versions."]="9*1";
+w["visitha"]="3*1";
w["w"]="2*1";
w["wan"]="0*1";
w["warn"]="0*2";
w["warranti"]="3*7";
-w["warranty:"]="3*1";
+w["warranty: "]="3*5";
+w["was"]="3*3";
w["way"]="9*1,15*1";
w["ways:"]="15*1";
w["we"]="0*1,2*1,4*1,5*2,9*3";
-w["web"]="3*51,4*1,6*2,9*1";
-w["web-bas"]="3*51,6*1";
-w["webhelp"]="0*15,2*2,3*2,5*2,7*1,8*55,9*8,10*10,12*1,13*7";
+w["web"]="0*1,1*1,2*1,3*51,4*1,5*1,6*3,7*1,8*1,9*2,10*1,11*1,12*1,13*1,14*1,15*1,16*1";
+w["web-bas"]="0*1,1*1,2*1,3*51,5*1,6*2,7*1,8*1,9*1,10*1,11*1,12*1,13*1,14*1,15*1,16*1";
+w["webhelp"]="0*15,2*2,3*2,5*2,6*1,7*1,8*54,9*8,10*10,12*1,13*7";
w["webhelp-index"]="0*2";
w["webhelp-indexer."]="0*2";
w["webhelp."]="8*1,10*2,13*1";
@@ -331,32 +330,36 @@ w["weight"]="3*1,6*1";
w["well"]="0*3,9*1";
w["well."]="9*1";
w["were"]="3*1,9*1,12*2";
+w["what"]="0*4,6*1,10*1,13*1";
+w["when"]="0*2,2*1,5*2,8*1,12*2,15*1";
+w["where"]="0*4,6*1,7*1,8*1,9*1,10*1";
w["whether"]="2*1,3*1";
w["which"]="2*1,5*1,8*2,9*1,15*2";
w["whom"]="3*1";
w["width"]="15*1";
w["wiki"]="0*1";
-w["window"]="7*1,8*7";
-w["windows."]="7*1";
+w["will"]="3*3,8*3,9*1";
+w["window"]="7*1,8*2";
w["without"]="3*4,6*1";
w["word"]="1*46,2*8,6*1,11*2,16*46";
w["work"]="8*2";
w["would"]="2*1";
w["write"]="10*1";
-w["written"]="3*2,8*1,10*1";
-w["written."]="8*1";
+w["writt"]="8*1";
+w["written"]="3*2,10*1";
w["x"]="0*1,4*1,8*1";
w["x-javascript"]="4*1";
-w["xerc"]="8*1";
+w["xerc"]="8*3";
+w["xerces2"]="8*1";
w["xercesimpl"]="8*2,9*1";
-w["xercesimpl.jar"]="0*2,8*4,9*1";
-w["xhtml"]="0*9,4*1,8*1";
+w["xercesimpl.jar"]="0*2,8*11,9*1";
+w["xhtml"]="0*9,3*1,4*1,8*1";
w["xhtml."]="0*1";
-w["xml"]="0*2,1*1,3*52,4*7,8*19,9*1,16*1";
+w["xml"]="0*3,1*2,2*1,3*52,4*7,5*1,6*1,7*2,8*74,9*2,10*1,11*1,12*1,13*1,14*1,15*1,16*2";
w["xml-api"]="8*2,9*1";
-w["xml-apis.jar"]="0*2,8*4,9*1";
-w["xml-common"]="8*1";
-w["xml-commons:"]="8*1";
+w["xml-apis.jar"]="0*2,8*11,9*1";
+w["xml-common"]="8*3";
+w["xml-commons:"]="8*3";
w["xml."]="8*1";
w["xml:"]="4*1";
w["xp"]="8*1";
@@ -364,13 +367,22 @@ w["xsl"]="0*2,2*2,4*3,5*1,8*3,9*2,15*2";
w["xsl-webhelpindex"]="2*1";
w["xsl:"]="0*2,4*3,15*1";
w["xsls"]="8*1";
-w["xslt"]="0*3,8*3";
-w["xslt-processor-classpath"]="0*2,8*2";
+w["xslt"]="0*3,8*5";
+w["xslt-processor-cl"]="8*3";
+w["xslt-processor-classpath"]="0*2,8*1";
+w["xsltproc"]="7*5,8*5";
w["yahoogroup"]="3*1";
w["yahoogroup."]="3*1";
w["yes"]="0*1";
-w["you"]="0*3,2*3,4*3,5*1,6*5,8*16,9*4,10*7,12*2,13*1,14*2,15*4";
-w["your"]="0*1,2*2,3*1,4*4,5*1,6*3,7*1,8*19,9*1,10*7,12*1,13*4,14*1,15*2";
w["yourfil"]="8*1";
w["yourfile.xml"]="8*2";
+w["zh"]="8*1";
+w[" "]="0*4,1*3,2*3,3*8,4*3,5*3,6*4,7*4,8*4,9*3,10*3,11*4,12*4,13*3,14*3,15*3,16*3";
+w[" add"]="10*5";
+w[" exampl"]="13*5";
+w[" initi"]="10*5";
+w[" sampl"]="13*5";
+w["©"]="3*1";
+w["’d"]="0*1";
+w["“"]="3*1";
diff --git a/webhelp/template/content/search/ja-jp.props b/webhelp/docs/search/ja-jp.props
index 2756805..2756805 100644
--- a/webhelp/template/content/search/ja-jp.props
+++ b/webhelp/docs/search/ja-jp.props
diff --git a/webhelp/docs/content/search/l10n.js b/webhelp/docs/search/l10n.js
index f25bb8f..f25bb8f 100644
--- a/webhelp/docs/content/search/l10n.js
+++ b/webhelp/docs/search/l10n.js
diff --git a/webhelp/template/content/search/nwSearchFnt.js b/webhelp/docs/search/nwSearchFnt.js
index 45b7c28..b115dbe 100644
--- a/webhelp/template/content/search/nwSearchFnt.js
+++ b/webhelp/docs/search/nwSearchFnt.js
@@ -62,8 +62,13 @@ function Verifie(searchForm) {
else {
var splitSpace = searchTextField.split(" ");
var splitWords = [];
- for (var i = 0 ; i < splitSpace.length ; i++) {
+ for (var i = 0 ; i < splitSpace.length ; i++) {
var splitDot = splitSpace[i].split(".");
+
+ if(!(splitDot.length == 1)){
+ splitWords.push(splitSpace[i]);
+ }
+
for (var i1 = 0; i1 < splitDot.length; i1++) {
var splitColon = splitDot[i1].split(":");
for (var i2 = 0; i2 < splitColon.length; i2++) {
diff --git a/webhelp/template/content/search/punctuation.props b/webhelp/docs/search/punctuation.props
index d3e3fcd..d3e3fcd 100644
--- a/webhelp/template/content/search/punctuation.props
+++ b/webhelp/docs/search/punctuation.props
diff --git a/webhelp/template/content/search/stemmers/de_stemmer.js b/webhelp/docs/search/stemmers/de_stemmer.js
index 7ff3822..7ff3822 100644
--- a/webhelp/template/content/search/stemmers/de_stemmer.js
+++ b/webhelp/docs/search/stemmers/de_stemmer.js
diff --git a/webhelp/docs/content/search/stemmers/en_stemmer.js b/webhelp/docs/search/stemmers/en_stemmer.js
index 2117c1b..2117c1b 100644
--- a/webhelp/docs/content/search/stemmers/en_stemmer.js
+++ b/webhelp/docs/search/stemmers/en_stemmer.js
diff --git a/webhelp/template/content/search/stemmers/fr_stemmer.js b/webhelp/docs/search/stemmers/fr_stemmer.js
index 34f9743..34f9743 100644
--- a/webhelp/template/content/search/stemmers/fr_stemmer.js
+++ b/webhelp/docs/search/stemmers/fr_stemmer.js
diff --git a/webhelp/docsrc/readme.xml b/webhelp/docsrc/readme.xml
index e45ee24..ea48969 100644
--- a/webhelp/docsrc/readme.xml
+++ b/webhelp/docsrc/readme.xml
@@ -52,8 +52,13 @@
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</para>
</formalpara>
- <para>This package is maintained by Kasun Gajasinghe, <email>kasunbg AT gmail DOT com</email>
- and David Cramer, <email>david AT thingbag DOT net</email>.</para>
+ <para>This package is maintained by Kasun Gajasinghe,
+ <email>kasunbg AT gmail DOT com</email> and David Cramer,
+ <email>david AT thingbag DOT net</email> and with
+ contributions by Arun Bharadwaj and Visitha Baddegama. Please
+ direct support questions to the <ulink
+ url="http://wiki.docbook.org/DocBookDiscussion">DocBook-apps
+ mailing list</ulink>. </para>
<para>This package also includes the following software written and copyrighted by others:<itemizedlist>
<listitem>
<para>Files in <filename class="directory">template/common/jquery</filename> are
@@ -65,12 +70,16 @@
</indexterm>
</listitem>
<listitem>
- <para>Some files in the <filename class="directory">template/content/search</filename>
- and <filename class="directory">indexer</filename> directories were originally part of
- N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA plugin is available from the
- <ulink url="http://tech.groups.yahoo.com/group/dita-users/files/Demos/">files
- page</ulink> of the DITA-users yahoogroup. The htmlsearch plugin was released under
- a BSD-style license. See <filename>indexer/license.txt</filename> for details. <indexterm>
+ <para>Some files in the <filename class="directory"
+ >template/search</filename> and <filename
+ class="directory">indexer</filename> directories were
+ originally part of N. Quaine's htmlsearch DITA plugin.
+ The htmlsearch DITA plugin is available from the <ulink
+ url="http://tech.groups.yahoo.com/group/dita-users/files/Demos/"
+ >files page</ulink> of the DITA-users yahoogroup. The
+ htmlsearch plugin was released under a BSD-style
+ license. See <filename>indexer/license.txt</filename>
+ for details. <indexterm>
<primary>htmlsearch</primary>
</indexterm>
<indexterm>
@@ -96,6 +105,12 @@
Editor.</para>
</listitem>
<listitem>
+ <para><ulink url="http://ccil.org/~cowan/XML/tagsoup/"
+ >TagSoup</ulink>, released under the Apache 2.0
+ license, makes it possible to index html instead of just
+ xhtml output. </para>
+ </listitem>
+ <listitem>
<para>Cosmetic improvements provided by <ulink
url="http://docs.openstack.org"
>OpenStack</ulink>.</para>
@@ -196,86 +211,53 @@
<para>TOC and search pane implemented without the use of a frameset.</para>
</listitem>
<listitem>
- <para>An Ant script to generate output. You can use this
- build file by importing it into your own or use it as a
- model for integrating this output format into your own
- build system. Alternatively, you can use this Ant script
- as a template for creating your own build script or you
- can use the <ulink
+ <para>An Ant script and sample Makefile to generate output.
+ You can use the ant build file by importing it into your
+ own or use it as a model for integrating this output
+ format into your own build system. Alternatively, you can
+ use the build scripts as a template for creating your own
+ script. You can also generate webhelp from DocBook using
+ the <ulink
url="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html"
>Docbkx Maven plugin</ulink>.</para>
</listitem>
</itemizedlist></para>
-<!-- <para>Following are possible enhancements that can be applied to webhelp. You are welcome to
- send us new suggestions, code contributions etc.<itemizedlist>
- <title>Possible future enhancements</title>
- <listitem>
- <para>Adjust css so that there is a visual indication that you have move the focus from the contents to the search tab using the tab key.</para>
- </listitem>
- <listitem>
- <para>Add "Expand all" and "Collapse all" buttons to the table of contents.</para>
- </listitem>
- <listitem>
- <para>Parameterize width of the TOC pane OR make the TOC pane resizeable by the
- user.</para>
- </listitem>
- <listitem>
- <para>Automate search results summary text:</para>
- <itemizedlist>
- <listitem>
- <para>Automatically use the first non-heading content as the summary in the search
- results.</para>
- </listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <para>Support boolean operators in search.</para>
- </listitem>
- <listitem>
- <para>Add an index tab populated by a separate JavaScript file. Include a param/property
- that allows the content creator to disable the index.</para>
- </listitem>
- <listitem>
- <para>Add functionality to the <filename>build.xml</filename> file so that when a property
- is set, the build generates a pdf version of the document and includes a link to it from
- the header.</para>
- </listitem>
- <listitem>
- <para>Add <ulink
- url="http://www.comparenetworks.com/developers/jqueryplugins/jbreadcrumb.html"
- >breadcrumbs</ulink> so the user will know what topics he's been to.</para>
- </listitem>
- <listitem>
- <para>Consider using more advanced Lucene indexers for Chinese and Japanese than the
- CJKAnalyzer</para>
- </listitem>
- <listitem>
- <para>And, a lot more (with duplicates) at <ulink
- url="http://docbook.xmlpress.net/tiki-index.php?page=WebHelpIdeas">WebHelp Ideas Wiki at
- XMLPress </ulink></para>
- </listitem>
- </itemizedlist></para>-->
</chapter>
<chapter>
<title>Using the package</title>
<para role="summary">The following sections describe how to
- install and use the package on Windows. </para>
+ install and use the package on Windows with the sample Ant build
+ script. In an environment where unix shell command are
+ available, you can also use the
+ <filename>Makefile.sample</filename> as a starting point for
+ creating your build script. To use
+ <filename>Makefile.sample</filename> you must have
+ <command>xsltproc</command> and <command>java</command>
+ available in your <envar>PATH</envar>.</para>
<section>
<sectioninfo>
<abstract>
<para>Installation instructions</para>
</abstract>
</sectioninfo>
- <title>Generating webhelp output</title>
+ <title>Generating webhelp output using the Ant build.xml
+ file</title>
<procedure>
- <title>To install the package on Windows</title>
+ <title>To install the package</title>
<note>
- <para>The examples in this procedure assume a Windows installation, but the process is the
- same in other environments, <foreignphrase>mutatis mutandis</foreignphrase>.</para>
- <para>In addition to using the ant
- <filename>build.xml</filename> provided, you can also
- use the <ulink url="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html">Docbkx Maven plugin</ulink> to generate
- webhelp.</para>
+ <para>The examples in this procedure assume a Windows
+ installation, but the process is the same in other
+ environments, <foreignphrase>mutatis
+ mutandis</foreignphrase>. In an environment where unix
+ shell command are available, you can also use the
+ <filename>Makefile.sample</filename> as a starting point
+ for creating your build script. To use
+ <filename>Makefile.sample</filename> you must have
+ <command>xsltproc</command> and <command>java</command>
+ available in your <envar>PATH</envar>. You can also use
+ the <ulink
+ url="http://docbkx-tools.sourceforge.net/docbkx-samples/manual.html"
+ >Docbkx Maven plugin</ulink> to generate webhelp.</para>
</note>
<step>
<para>If necessary, install <ulink url="http://www.java.com/en/download/manual.jsp">Java
@@ -332,14 +314,15 @@
<envar>CLASSPATH</envar>.</para>
</note></para>
</step>
-<!-- <step>
- <para>If you are using Ant 1.8.1 or higher, you may need to add
- <filename>xercesImpl.jar</filename>, and <filename>xml-apis.jar</filename> to the
- classpath. See <function>index</function> target in the Ant script to see how it's
- currently added. <note>
- <para>The way webhelp indexer is invoked is made easier after the XSL-1.76.1 release. </para>
- </note></para>
- </step>-->
+ <step>
+ <para>Download <ulink
+ url="https://xerces.apache.org/xerces2-j/">Xerces2
+ Java</ulink> and extract it to a convenient location on
+ your file system. You will need the
+ <filename>xercesImpl.jar</filename> and
+ <filename>xml-apis.jar</filename> from this distribution
+ in in <xref linkend="edit-build-properties"/>. </para>
+ </step>
<step id="edit-build-properties">
<para>In a text editor, edit the
<filename>build.properties</filename> file in the
@@ -382,7 +365,7 @@ stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
# and uncomment this line.
#input-images-basedir=/path/to/image/location
-# Modify the follosing so that they point to your local
+<emphasis># Modify the follosing so that they point to your local
# copy of the jars indicated:
# * Saxon 6.5 jar
# * Xerces 2: xercesImpl.jar
@@ -390,7 +373,7 @@ stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
xercesImpl.jar=/usr/share/java/xercesImpl.jar
xml-apis.jar=/usr/share/java/xml-apis.jar
-
+</emphasis>
# For non-ns version only, this validates the document
# against a dtd.
validate-against-dtd=true
@@ -417,16 +400,15 @@ admon.graphics=0
suppress.footer.navigation=0</programlisting></para>
</step>
<step>
- <para>Test the package by running the command <code>ant webhelp
- -Doutput-dir=test-ouput</code> at the command line in the webhelp directory. It should
- generate a copy of this documentation in the <filename class="directory">doc</filename>
- directory. Type <code>start test-output\index.html</code> to open the output in a
- browser. Once you have confirmed that the process worked, you can delete the <filename
- class="directory">test-output</filename> directory. <important>
- <para>The Saxon 6.5 jar should <emphasis>not</emphasis> be in your
- <envar>CLASSPATH</envar> when you generate the webhelp output. If you have any
- problems, try running ant with an empty <envar>CLASSPATH</envar>.</para>
- </important></para>
+ <para>Test the package by running the command <code>ant
+ webhelp -Doutput-dir=test-ouput</code> at the command
+ line in the webhelp directory. It should generate a copy
+ of this documentation in the <filename class="directory"
+ >doc</filename> directory. Type <code>start
+ test-output\index.html</code> to open the output in a
+ browser. Once you have confirmed that the process worked,
+ you can delete the <filename class="directory"
+ >test-output</filename> directory. </para>
</step>
<step>
<para>To process your own document, simply refer to this package from another
@@ -496,10 +478,10 @@ suppress.footer.navigation=0</programlisting></para>
</itemizedlist></para>
<section>
<title>Recommended Apache configurations</title>
- <para>If you are serving a long document from an Apache web server, we recommend you make
- the following additions or changes to your <filename>httpd.conf</filename> or
- <filename>.htaccess</filename> file. <remark>TODO: Explain what each thing
- does.</remark><programlisting>AddDefaultCharSet UTF-8 # <co id="AddDefaultCharSet"/>
+ <para>If you are serving a long document from an Apache web
+ server, we recommend you make the following additions or
+ changes to your <filename>httpd.conf</filename> or
+ <filename>.htaccess</filename> file. <programlisting>AddDefaultCharSet UTF-8 # <co id="AddDefaultCharSet"/>
# 480 weeks
&lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt; # <co id="CachingSettings"/>
@@ -533,19 +515,25 @@ suppress.footer.navigation=0</programlisting></para>
&lt;/Files&gt;
</programlisting><calloutlist>
<callout arearefs="AddDefaultCharSet">
- <para>See <ulink url="http://www.sagehill.net/docbookxsl/SpecialChars.html">Odd
- characters in HTML output</ulink> in Bob Stayton's book <citetitle>DocBook XSL:
- The Complete Guide</citetitle> for more information about this setting.</para>
+ <para>See <ulink
+ url="http://www.sagehill.net/docbookxsl/SpecialChars.html"
+ >Odd characters in HTML output</ulink> in Bob
+ Stayton's book <citetitle>DocBook XSL: The Complete
+ Guide</citetitle> for more information about this
+ setting.</para>
</callout>
<callout arearefs="CachingSettings">
- <para>These lines and those that follow cause the browser to cache various resources
- such as bitmaps and JavaScript files. Note that caching JavaScript files could cause
- your users to have stale search indexes if you update your document since the search
- index is stored in JavaScript files.</para>
+ <para>These lines and those that follow cause the
+ browser to cache various resources such as bitmaps and
+ JavaScript files. Note that caching JavaScript files
+ could cause your users to have stale search indexes if
+ you update your document since the search index is
+ stored in JavaScript files.</para>
</callout>
<callout arearefs="CompressSetting">
- <para>These lines cause the the server to compress html, css, and JavaScript files and
- the brower to uncompress them to improve download performance.</para>
+ <para>These lines cause the the server to compress html,
+ css, and JavaScript files and the brower to uncompress
+ them to improve download performance.</para>
</callout>
</calloutlist></para>
</section>
@@ -796,19 +784,26 @@ persist: "cookie"
a simplified 'index' that too resides in JavaScript. Mainly the search mechanism has two
parts. <itemizedlist>
<listitem>
- <para>Indexing: First we need to traverse the content in the docs/content folder and
- index the words in it. This is done by <filename>webhelpindexer.jar</filename> in
- <filename>xsl/extentions/</filename> folder. You can invoke it by <code>ant
- index</code> command from the root of webhelp of directory. The source of
+ <para>Indexing: First we need to traverse the content in
+ the docs folder and index the words in it. This is done
+ by <filename>webhelpindexer.jar</filename> in
+ <filename>xsl/extentions/</filename> folder. You can
+ invoke it by <code>ant index</code> command from the
+ root of webhelp of directory. The source of
webhelpindexer is now moved to it's own location at
- <filename>trunk/xsl-webhelpindexer/</filename>. Checkout the Docbook trunk svn
- directory to get this source. Then, do your changes and recompile it by simply running
- <code>ant</code> command. My assumption is that it can be opened by Netbeans IDE by
- one click. Or if you are using IntelliJ Idea, you can simply create a new project from
- existing sources. Indexer has extensive support for features such as word scoring,
- stemming of words, and support for languages English, German, French. For CJK
- (Chinese, Japanese, Korean) languages, it uses bi-gram tokenizing to break up the
- words (since CJK languages does not have spaces between words).</para>
+ <filename>trunk/xsl-webhelpindexer/</filename>.
+ Checkout the Docbook trunk svn directory to get this
+ source. Then, do your changes and recompile it by simply
+ running <code>ant</code> command. My assumption is that
+ it can be opened by Netbeans IDE by one click. Or if you
+ are using IntelliJ Idea, you can simply create a new
+ project from existing sources. Indexer has extensive
+ support for features such as word scoring, stemming of
+ words, and support for languages English, German,
+ French. For CJK (Chinese, Japanese, Korean) languages,
+ it uses bi-gram tokenizing to break up the words (since
+ CJK languages does not have spaces between
+ words).</para>
<para> When <code>ant index</code> is run, it generates five output files: <itemizedlist>
<listitem>
<para><filename>htmlFileList.js</filename> - This contains an array named
@@ -817,11 +812,14 @@ persist: "cookie"
to false.</para>
</listitem>
<listitem>
- <para><filename>htmlFileInfoList.js</filename> - This includes some meta data
- about the indexed files in an array named <code>fil</code>. It includes details
- about file name, file (html) title, a summary of the content.Format would look
- like, <code>fil["4"]= "ch03.html@@@Developer Docs@@@This chapter provides an
- overview of how webhelp is implemented.";</code>
+ <para><filename>htmlFileInfoList.js</filename> -
+ This includes some meta data about the indexed
+ files in an array named <code>fil</code>. It
+ includes details about file name, file (html)
+ title, a summary of the content. Format would look
+ like, <code>fil["4"]= "ch03.html@@@Developer
+ Docs@@@This chapter provides an overview of how
+ webhelp is implemented.";</code>
</para>
</listitem>
<listitem>
@@ -875,12 +873,18 @@ persist: "cookie"
</listitem>
<listitem>
<para>Then, name the JS stemmer exactly like this:
- <filename>{$language-code}_stemmer.js</filename>. For example, for Italian(it),
- name it as, <filename>it_stemmer.js</filename>. Then, copy it to the
- <filename>docbook-webhelp/template/content/search/stemmers/</filename> folder. (I
- assumed <filename>docbook-webhelp</filename> is the root folder for webhelp.) <note>
- <para>Make sure you changed the <code>webhelp.indexer.language</code> property in
- <filename>build.properties</filename> to your language. </para>
+ <filename>{$language-code}_stemmer.js</filename>.
+ For example, for Italian(it), name it as,
+ <filename>it_stemmer.js</filename>. Then, copy it to
+ the
+ <filename>docbook-webhelp/template/search/stemmers/</filename>
+ folder. (I assumed
+ <filename>docbook-webhelp</filename> is the root
+ folder for webhelp.) <note>
+ <para>Make sure you changed the
+ <code>webhelp.indexer.language</code> property
+ in <filename>build.properties</filename> to your
+ language. </para>
</note>
</para>
</listitem>
@@ -1021,5 +1025,6 @@ xml-apis.jar=/usr/share/java/xml-apis.jar</programlisting></para>
<primary>FAQ</primary>
</indexterm>
</chapter>
- <!--<xi:include href="xinclude-test.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>-->
+ <xi:include href="xinclude-test.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+ <index/>
</book>
diff --git a/webhelp/template/common/css/ie.css b/webhelp/template/common/css/ie.css
index 4c5f1c2..875ef62 100644
--- a/webhelp/template/common/css/ie.css
+++ b/webhelp/template/common/css/ie.css
@@ -9,5 +9,5 @@
}
body #content{
- padding-top: 136px;
+ /* padding-top: 136px;*/
}
diff --git a/webhelp/template/common/css/positioning.css b/webhelp/template/common/css/positioning.css
index d843f64..ce39ee0 100644
--- a/webhelp/template/common/css/positioning.css
+++ b/webhelp/template/common/css/positioning.css
@@ -16,7 +16,7 @@ span.off { }
body { font: 12px Verdana, Geneva, sans-serif; }
p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; }
h1 { font: 15pt Arial, Helvetica, geneva;
- color: black!important!;
+ color: black!important;
}
h2 { font: normal 12pt Arial, Helvetica, geneva; }
@@ -36,16 +36,16 @@ h2 { font: normal 12pt Arial, Helvetica, geneva; }
#header h1 {
margin-left: 310px;
position: fixed;
- top: 10px;
+ top: 20px;
left: -15px;
color: #404040 !important;
}
-/*
+
#header h1 {
margin-top: 2px;
}
-*/
+
p.breadcrumbs {
margin-top: 30px;
@@ -66,30 +66,32 @@ p.breadcrumbs {
overflow: auto;
position: fixed;
height: auto;
- top: 95px;
+ top:100px;
+ /*right:10px;*/
+ /*left:10px;*/
bottom: 0;
left: 0;
- width: 280px;
+ width:inherit;
z-index: 1500;
border-right:2px solid #bbc4c5;
- padding: 0px;
+ padding:1px;
background-color: #ededed!important;
}
#treeDiv {
overflow: auto;
- position: fixed;
+ /* position: fixed;*/
height: auto;
top: 136px;
bottom: 0;
left: 0;
- width: 243px;
+ /* width: 18%;*/
z-index: 1500;
- border-right:2px solid #CCCCCC;
- background-color: #f0f0f0!important;
+ /* border-right:2px solid #CCCCCC;
+ background-color: #f0f0f0!important;*/
}
-#searchDiv {
+/*#searchDiv {
overflow: auto;
position: fixed;
height: auto;
@@ -100,21 +102,22 @@ p.breadcrumbs {
z-index: 1500;
border-right:2px solid #CCCCCC;
background-color: #f0f0f0!important;
-}
+}*/
#content {
position: relative;
- top: 90px; /* left: 240px;*/
- right: auto; /* bottom: 20px; */
- margin: 0px 0px 0px 280px;
+ top: 90px; /*left: 240px;*/
+ right: auto; bottom: 20px;
+ /*margin: 0px 0px 0px 280px;*/
width: auto;
height: inherit;
padding-left: 5px;
padding-right: 30px;
- color: #000000;
- /*border-left: 2px solid #cccccc; overflow :scroll;*/
+ border-left: 1px solid #cccccc;
+ overflow :scroll;
+ overflow-x:hidden;
z-index: 1000;
- min-width:200px;
+
}
#navheader {
@@ -159,16 +162,18 @@ font-weight: normal;
}
.searchresult li { color: #0050A0; }
.shortdesclink { color: gray; font-size: 9pt; }
-.searchText { width: 11em }
+.searchText { float:left;width:150px; }
.searchButton {
- margin-left: 3px;
- background: #F4F4F4;
- color: #black;
- border: #ACCEAF solid 1pt;
+ padding: 2px 12px 2px 12px;
+ background-color:#bbb;
+ border:#bbb solid 1pt;
font-weight: bold;
font-size: 10pt
}
-.searchFieldSet { border: 1px solid #BFBAB0; background-color: #F2EFE9;}
+.searchButton:hover{
+ background-color: #cccccc;
+}
+.searchFieldSet {}
.title, div.toc>p{ font-weight: bold; }
@@ -310,11 +315,11 @@ body p.breadcrumbs {
line-height: 28px;
}
-body #content {
+/*body #content {
position: static;
margin-top: 126px;
top: 0px;
-}
+}*/
body.sidebar #toolbar{left: 0px;}
@@ -348,6 +353,8 @@ div.note *, div.caution *, div.important *, div.tip *, div.warning * {
border: 0px solid;
}
+#sidebar { display: none }
+
@media print {
body * {
@@ -367,3 +374,4 @@ div.note *, div.caution *, div.important *, div.tip *, div.warning * {
}
}
+
diff --git a/webhelp/template/common/jquery/jquery-1.4.2.min.js b/webhelp/template/common/jquery/jquery-1.4.2.min.js
deleted file mode 100644
index 7c24308..0000000
--- a/webhelp/template/common/jquery/jquery-1.4.2.min.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/webhelp/template/common/jquery/jquery-1.7.2.min.js b/webhelp/template/common/jquery/jquery-1.7.2.min.js
new file mode 100644
index 0000000..93adea1
--- /dev/null
+++ b/webhelp/template/common/jquery/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/webhelp/template/common/jquery/jquery.ui.all.js b/webhelp/template/common/jquery/jquery.ui.all.js
new file mode 100644
index 0000000..8d3ce59
--- /dev/null
+++ b/webhelp/template/common/jquery/jquery.ui.all.js
@@ -0,0 +1,418 @@
+/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(b,a){function c(c,a){var e=c.nodeName.toLowerCase();if("area"===e){var e=c.parentNode,f=e.name;if(!c.href||!f||"map"!==e.nodeName.toLowerCase())return!1;e=b("img[usemap=#"+f+"]")[0];return!!e&&d(e)}return(/input|select|textarea|button|object/.test(e)?!c.disabled:"a"==e?c.href||a:a)&&d(c)}function d(c){return!b(c).parents().andSelf().filter(function(){return"hidden"===b.curCSS(this,"visibility")||b.expr.filters.hidden(this)}).length}b.ui=b.ui||{};b.ui.version||(b.extend(b.ui,{version:"1.8.14",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),b.fn.extend({_focus:b.fn.focus,focus:function(c,a){return"number"===typeof c?this.each(function(){var d=this;setTimeout(function(){b(d).focus();
+a&&a.call(d)},c)}):this._focus.apply(this,arguments)},scrollParent:function(){var c;c=b.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(b.curCSS(this,"position",1))&&/(auto|scroll)/.test(b.curCSS(this,"overflow",1)+b.curCSS(this,"overflow-y",1)+b.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(b.curCSS(this,"overflow",1)+b.curCSS(this,
+"overflow-y",1)+b.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!c.length?b(document):c},zIndex:function(c){if(c!==a)return this.css("zIndex",c);if(this.length)for(var c=b(this[0]),d;c.length&&c[0]!==document;){d=c.css("position");if("absolute"===d||"relative"===d||"fixed"===d)if(d=parseInt(c.css("zIndex"),10),!isNaN(d)&&0!==d)return d;c=c.parent()}return 0},disableSelection:function(){return this.bind((b.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
+function(b){b.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),b.each(["Width","Height"],function(c,d){function e(c,a,d,g){b.each(f,function(){a-=parseFloat(b.curCSS(c,"padding"+this,!0))||0;d&&(a-=parseFloat(b.curCSS(c,"border"+this+"Width",!0))||0);g&&(a-=parseFloat(b.curCSS(c,"margin"+this,!0))||0)});return a}var f="Width"===d?["Left","Right"]:["Top","Bottom"],i=d.toLowerCase(),j={innerWidth:b.fn.innerWidth,innerHeight:b.fn.innerHeight,outerWidth:b.fn.outerWidth,
+outerHeight:b.fn.outerHeight};b.fn["inner"+d]=function(f){return f===a?j["inner"+d].call(this):this.each(function(){b(this).css(i,e(this,f)+"px")})};b.fn["outer"+d]=function(f,c){return"number"!==typeof f?j["outer"+d].call(this,f):this.each(function(){b(this).css(i,e(this,f,!0,c)+"px")})}}),b.extend(b.expr[":"],{data:function(c,a,d){return!!b.data(c,d[3])},focusable:function(a){return c(a,!isNaN(b.attr(a,"tabindex")))},tabbable:function(a){var d=b.attr(a,"tabindex"),e=isNaN(d);return(e||0<=d)&&c(a,
+!e)}}),b(function(){var c=document.body,a=c.appendChild(a=document.createElement("div"));b.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});b.support.minHeight=100===a.offsetHeight;b.support.selectstart="onselectstart"in a;c.removeChild(a).style.display="none"}),b.extend(b.ui,{plugin:{add:function(c,a,d){var c=b.ui[c].prototype,f;for(f in d)c.plugins[f]=c.plugins[f]||[],c.plugins[f].push([a,d[f]])},call:function(b,c,a){if((c=b.plugins[c])&&b.element[0].parentNode)for(var f=
+0;f<c.length;f++)b.options[c[f][0]]&&c[f][1].apply(b.element,a)}},contains:function(b,c){return document.compareDocumentPosition?b.compareDocumentPosition(c)&16:b!==c&&b.contains(c)},hasScroll:function(c,a){if("hidden"===b(c).css("overflow"))return!1;var d=a&&"left"===a?"scrollLeft":"scrollTop",f=!1;if(0<c[d])return!0;c[d]=1;f=0<c[d];c[d]=0;return f},isOverAxis:function(b,c,a){return b>c&&b<c+a},isOver:function(c,a,d,f,i,j){return b.ui.isOverAxis(c,d,i)&&b.ui.isOverAxis(a,f,j)}}))})(jQuery);
+(function(b,a){if(b.cleanData){var c=b.cleanData;b.cleanData=function(a){for(var d=0,e;null!=(e=a[d]);d++)b(e).triggerHandler("remove");c(a)}}else{var d=b.fn.remove;b.fn.remove=function(c,a){return this.each(function(){a||(!c||b.filter(c,[this]).length)&&b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return d.call(b(this),c,a)})}}b.widget=function(c,a,d){var f=c.split(".")[0],i,c=c.split(".")[1];i=f+"-"+c;d||(d=a,a=b.Widget);b.expr[":"][i]=function(f){return!!b.data(f,
+c)};b[f]=b[f]||{};b[f][c]=function(b,f){arguments.length&&this._createWidget(b,f)};a=new a;a.options=b.extend(!0,{},a.options);b[f][c].prototype=b.extend(!0,a,{namespace:f,widgetName:c,widgetEventPrefix:b[f][c].prototype.widgetEventPrefix||c,widgetBaseClass:i},d);b.widget.bridge(c,b[f][c])};b.widget.bridge=function(c,d){b.fn[c]=function(e){var f="string"===typeof e,i=Array.prototype.slice.call(arguments,1),j=this,e=!f&&i.length?b.extend.apply(null,[!0,e].concat(i)):e;if(f&&"_"===e.charAt(0))return j;
+f?this.each(function(){var f=b.data(this,c),d=f&&b.isFunction(f[e])?f[e].apply(f,i):f;if(d!==f&&d!==a)return j=d,!1}):this.each(function(){var f=b.data(this,c);f?f.option(e||{})._init():b.data(this,c,new d(e,this))});return j}};b.Widget=function(b,c){arguments.length&&this._createWidget(b,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(c,a){b.data(a,this.widgetName,this);this.element=b(a);this.options=b.extend(!0,{},this.options,this._getCreateOptions(),
+c);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},
+option:function(c,d){var e=c;if(0===arguments.length)return b.extend({},this.options);if("string"===typeof c){if(d===a)return this.options[c];e={};e[c]=d}this._setOptions(e);return this},_setOptions:function(c){var a=this;b.each(c,function(b,f){a._setOption(b,f)});return this},_setOption:function(b,c){this.options[b]=c;"disabled"===b&&this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",
+!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(c,a,d){var f=this.options[c],a=b.Event(a);a.type=(c===this.widgetEventPrefix?c:this.widgetEventPrefix+c).toLowerCase();d=d||{};if(a.originalEvent)for(var c=b.event.props.length,i;c;)i=b.event.props[--c],a[i]=a.originalEvent[i];this.element.trigger(a,d);return!(b.isFunction(f)&&!1===f.call(this.element[0],a,d)||a.isDefaultPrevented())}}})(jQuery);
+(function(b){var a=!1;b(document).mousedown(function(){a=!1});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var c=this;this.element.bind("mousedown."+this.widgetName,function(b){return c._mouseDown(b)}).bind("click."+this.widgetName,function(a){if(!0===b.data(a.target,c.widgetName+".preventClickEvent"))return b.removeData(a.target,c.widgetName+".preventClickEvent"),a.stopImmediatePropagation(),!1});this.started=!1},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(c){if(!a){this._mouseStarted&&this._mouseUp(c);this._mouseDownEvent=c;var d=this,g=1==c.which,h="string"==typeof this.options.cancel?b(c.target).closest(this.options.cancel).length:!1;if(!g||h||!this._mouseCapture(c))return!0;this.mouseDelayMet=!this.options.delay;this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c)&&(this._mouseStarted=!1!==this._mouseStart(c),
+!this._mouseStarted))return c.preventDefault(),!0;!0===b.data(c.target,this.widgetName+".preventClickEvent")&&b.removeData(c.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(b){return d._mouseMove(b)};this._mouseUpDelegate=function(b){return d._mouseUp(b)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.preventDefault();return a=!0}},_mouseMove:function(c){if(b.browser.msie&&!(9<=document.documentMode)&&
+!c.button)return this._mouseUp(c);if(this._mouseStarted)return this._mouseDrag(c),c.preventDefault();this._mouseDistanceMet(c)&&this._mouseDelayMet(c)&&((this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,c))?this._mouseDrag(c):this._mouseUp(c));return!this._mouseStarted},_mouseUp:function(c){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);this._mouseStarted&&(this._mouseStarted=!1,c.target==this._mouseDownEvent.target&&
+b.data(c.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(c));return!1},_mouseDistanceMet:function(b){return Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);
+(function(b){b.ui=b.ui||{};var a=/left|center|right/,c=/top|center|bottom/,d=b.fn.position,g=b.fn.offset;b.fn.position=function(g){if(!g||!g.of)return d.apply(this,arguments);var g=b.extend({},g),e=b(g.of),f=e[0],i=(g.collision||"flip").split(" "),j=g.offset?g.offset.split(" "):[0,0],k,l,m;9===f.nodeType?(k=e.width(),l=e.height(),m={top:0,left:0}):f.setTimeout?(k=e.width(),l=e.height(),m={top:e.scrollTop(),left:e.scrollLeft()}):f.preventDefault?(g.at="left top",k=l=0,m={top:g.of.pageY,left:g.of.pageX}):
+(k=e.outerWidth(),l=e.outerHeight(),m=e.offset());b.each(["my","at"],function(){var b=(g[this]||"").split(" ");b.length===1&&(b=a.test(b[0])?b.concat(["center"]):c.test(b[0])?["center"].concat(b):["center","center"]);b[0]=a.test(b[0])?b[0]:"center";b[1]=c.test(b[1])?b[1]:"center";g[this]=b});1===i.length&&(i[1]=i[0]);j[0]=parseInt(j[0],10)||0;1===j.length&&(j[1]=j[0]);j[1]=parseInt(j[1],10)||0;"right"===g.at[0]?m.left+=k:"center"===g.at[0]&&(m.left+=k/2);"bottom"===g.at[1]?m.top+=l:"center"===g.at[1]&&
+(m.top+=l/2);m.left+=j[0];m.top+=j[1];return this.each(function(){var f=b(this),c=f.outerWidth(),a=f.outerHeight(),d=parseInt(b.curCSS(this,"marginLeft",true))||0,e=parseInt(b.curCSS(this,"marginTop",true))||0,r=c+d+(parseInt(b.curCSS(this,"marginRight",true))||0),u=a+e+(parseInt(b.curCSS(this,"marginBottom",true))||0),s=b.extend({},m),v;if(g.my[0]==="right")s.left=s.left-c;else if(g.my[0]==="center")s.left=s.left-c/2;if(g.my[1]==="bottom")s.top=s.top-a;else if(g.my[1]==="center")s.top=s.top-a/2;
+s.left=Math.round(s.left);s.top=Math.round(s.top);v={left:s.left-d,top:s.top-e};b.each(["left","top"],function(f,d){if(b.ui.position[i[f]])b.ui.position[i[f]][d](s,{targetWidth:k,targetHeight:l,elemWidth:c,elemHeight:a,collisionPosition:v,collisionWidth:r,collisionHeight:u,offset:j,my:g.my,at:g.at})});b.fn.bgiframe&&f.bgiframe();f.offset(b.extend(s,{using:g.using}))})};b.ui.position={fit:{left:function(c,a){var f=b(window),f=a.collisionPosition.left+a.collisionWidth-f.width()-f.scrollLeft();c.left=
+0<f?c.left-f:Math.max(c.left-a.collisionPosition.left,c.left)},top:function(c,a){var f=b(window),f=a.collisionPosition.top+a.collisionHeight-f.height()-f.scrollTop();c.top=0<f?c.top-f:Math.max(c.top-a.collisionPosition.top,c.top)}},flip:{left:function(c,a){if("center"!==a.at[0]){var f=b(window),f=a.collisionPosition.left+a.collisionWidth-f.width()-f.scrollLeft(),d="left"===a.my[0]?-a.elemWidth:"right"===a.my[0]?a.elemWidth:0,g="left"===a.at[0]?a.targetWidth:-a.targetWidth,k=-2*a.offset[0];c.left+=
+0>a.collisionPosition.left?d+g+k:0<f?d+g+k:0}},top:function(c,a){if("center"!==a.at[1]){var f=b(window),f=a.collisionPosition.top+a.collisionHeight-f.height()-f.scrollTop(),d="top"===a.my[1]?-a.elemHeight:"bottom"===a.my[1]?a.elemHeight:0,g="top"===a.at[1]?a.targetHeight:-a.targetHeight,k=-2*a.offset[1];c.top+=0>a.collisionPosition.top?d+g+k:0<f?d+g+k:0}}}};b.offset.setOffset||(b.offset.setOffset=function(c,a){/static/.test(b.curCSS(c,"position"))&&(c.style.position="relative");var f=b(c),d=f.offset(),
+g=parseInt(b.curCSS(c,"top",!0),10)||0,k=parseInt(b.curCSS(c,"left",!0),10)||0,d={top:a.top-d.top+g,left:a.left-d.left+k};"using"in a?a.using.call(c,d):f.css(d)},b.fn.offset=function(c){var a=this[0];return!a||!a.ownerDocument?null:c?this.each(function(){b.offset.setOffset(this,c)}):g.call(this)})})(jQuery);
+(function(b){b.widget("ui.draggable",b.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){"original"==this.options.helper&&!/^(?:r|a|f)/.test(this.element.css("position"))&&
+(this.element[0].style.position="relative");this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable"))return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(a){var c=this.options;if(this.helper||c.disabled||b(a.target).is(".ui-resizable-handle"))return!1;
+this.handle=this._getHandle(a);if(!this.handle)return!1;b(!0===c.iframeFix?"iframe":c.iframeFix).each(function(){b('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this);
+this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=
+a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped=
+!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0===
+this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c=
+!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]||
+0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],
+this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top-
+(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),
+height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document:
+window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"),
+10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];
+this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?
+0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,
+g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.left<f[0]&&(h=f[0]+this.offset.click.left),a.pageY-this.offset.click.top<f[1]&&(e=f[1]+this.offset.click.top),a.pageX-this.offset.click.left>f[2]&&(h=f[2]+this.offset.click.left),
+a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.top<f[1]||e-this.offset.click.top>f[3])?e:!(e-this.offset.click.top<f[1])?e-c.grid[1]:e+c.grid[1]:e,h=c.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX,h=f?!(h-this.offset.click.left<f[0]||h-this.offset.click.left>f[2])?h:!(h-this.offset.click.left<
+f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");
+this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"});
+b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver?
+(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs=
+d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a,
+!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&&
+(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options;
+a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable",
+"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY<d.scrollSensitivity?c.scrollParent[0].scrollTop=g=c.scrollParent[0].scrollTop+d.scrollSpeed:a.pageY-c.overflowOffset.top<
+d.scrollSensitivity&&(c.scrollParent[0].scrollTop=g=c.scrollParent[0].scrollTop-d.scrollSpeed);if(!d.axis||"y"!=d.axis)c.overflowOffset.left+c.scrollParent[0].offsetWidth-a.pageX<d.scrollSensitivity?c.scrollParent[0].scrollLeft=g=c.scrollParent[0].scrollLeft+d.scrollSpeed:a.pageX-c.overflowOffset.left<d.scrollSensitivity&&(c.scrollParent[0].scrollLeft=g=c.scrollParent[0].scrollLeft-d.scrollSpeed)}else{if(!d.axis||"x"!=d.axis)a.pageY-b(document).scrollTop()<d.scrollSensitivity?g=b(document).scrollTop(b(document).scrollTop()-
+d.scrollSpeed):b(window).height()-(a.pageY-b(document).scrollTop())<d.scrollSensitivity&&(g=b(document).scrollTop(b(document).scrollTop()+d.scrollSpeed));if(!d.axis||"y"!=d.axis)a.pageX-b(document).scrollLeft()<d.scrollSensitivity?g=b(document).scrollLeft(b(document).scrollLeft()-d.scrollSpeed):b(window).width()-(a.pageX-b(document).scrollLeft())<d.scrollSensitivity&&(g=b(document).scrollLeft(b(document).scrollLeft()+d.scrollSpeed))}!1!==g&&(b.ui.ddmanager&&!d.dropBehaviour)&&b.ui.ddmanager.prepareOffsets(c,
+a)}});b.ui.plugin.add("draggable","snap",{start:function(){var a=b(this).data("draggable"),c=a.options;a.snapElements=[];b(c.snap.constructor!=String?c.snap.items||":data(draggable)":c.snap).each(function(){var c=b(this),g=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,width:c.outerWidth(),height:c.outerHeight(),top:g.top,left:g.left})})},drag:function(a,c){for(var d=b(this).data("draggable"),g=d.options,h=g.snapTolerance,e=c.offset.left,f=e+d.helperProportions.width,i=c.offset.top,
+j=i+d.helperProportions.height,k=d.snapElements.length-1;0<=k;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,p=d.snapElements[k].top,n=p+d.snapElements[k].height;if(l-h<e&&e<m+h&&p-h<i&&i<n+h||l-h<e&&e<m+h&&p-h<j&&j<n+h||l-h<f&&f<m+h&&p-h<i&&i<n+h||l-h<f&&f<m+h&&p-h<j&&j<n+h){if("inner"!=g.snapMode){var q=Math.abs(p-j)<=h,o=Math.abs(n-i)<=h,w=Math.abs(l-f)<=h,r=Math.abs(m-e)<=h;q&&(c.position.top=d._convertPositionTo("relative",{top:p-d.helperProportions.height,left:0}).top-d.margins.top);
+o&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top);w&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left);r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var u=q||o||w||r;if("outer"!=g.snapMode&&(q=Math.abs(p-i)<=h,o=Math.abs(n-j)<=h,w=Math.abs(l-e)<=h,r=Math.abs(m-f)<=h,q&&(c.position.top=d._convertPositionTo("relative",{top:p,left:0}).top-d.margins.top),o&&(c.position.top=
+d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),w&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),r))c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left;!d.snapElements[k].snapping&&(q||o||w||r||u)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,a,b.extend(d._uiHash(),{snapItem:d.snapElements[k].item}));d.snapElements[k].snapping=q||o||w||r||u}else d.snapElements[k].snapping&&
+d.options.snap.release&&d.options.snap.release.call(d.element,a,b.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1}}});b.ui.plugin.add("draggable","stack",{start:function(){var a=b(this).data("draggable").options,a=b.makeArray(b(a.stack)).sort(function(c,a){return(parseInt(b(c).css("zIndex"),10)||0)-(parseInt(b(a).css("zIndex"),10)||0)});if(a.length){var c=parseInt(a[0].style.zIndex)||0;b(a).each(function(b){this.style.zIndex=c+b});this[0].style.zIndex=c+a.length}}});
+b.ui.plugin.add("draggable","zIndex",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("zIndex")&&(g._zIndex=d.css("zIndex"));d.css("zIndex",g.zIndex)},stop:function(a,c){var d=b(this).data("draggable").options;d._zIndex&&b(c.helper).css("zIndex",d._zIndex)}})})(jQuery);
+(function(b){b.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,c=a.accept;this.isover=0;this.isout=1;this.accept=b.isFunction(c)?c:function(b){return b.is(c)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};b.ui.ddmanager.droppables[a.scope]=b.ui.ddmanager.droppables[a.scope]||[];b.ui.ddmanager.droppables[a.scope].push(this);
+a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=b.ui.ddmanager.droppables[this.options.scope],c=0;c<a.length;c++)a[c]==this&&a.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,c){"accept"==a&&(this.accept=b.isFunction(c)?c:function(b){return b.is(c)});b.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var c=b.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);c&&this._trigger("activate",a,this.ui(c))},_deactivate:function(a){var c=b.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);c&&this._trigger("deactivate",a,this.ui(c))},_over:function(a){var c=b.ui.ddmanager.current;if(c&&(c.currentItem||c.element)[0]!=this.element[0])if(this.accept.call(this.element[0],c.currentItem||c.element))this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",
+a,this.ui(c))},_out:function(a){var c=b.ui.ddmanager.current;if(c&&(c.currentItem||c.element)[0]!=this.element[0])if(this.accept.call(this.element[0],c.currentItem||c.element))this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",a,this.ui(c))},_drop:function(a,c){var d=c||b.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var g=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var c=b.data(this,
+"droppable");if(c.options.greedy&&!c.options.disabled&&c.options.scope==d.options.scope&&c.accept.call(c.element[0],d.currentItem||d.element)&&b.ui.intersect(d,b.extend(c,{offset:c.element.offset()}),c.options.tolerance))return g=!0,!1});return g?!1:this.accept.call(this.element[0],d.currentItem||d.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",a,this.ui(d)),this.element):
+!1},ui:function(b){return{draggable:b.currentItem||b.element,helper:b.helper,position:b.position,offset:b.positionAbs}}});b.extend(b.ui.droppable,{version:"1.8.14"});b.ui.intersect=function(a,c,d){if(!c.offset)return!1;var g=(a.positionAbs||a.position.absolute).left,h=g+a.helperProportions.width,e=(a.positionAbs||a.position.absolute).top,f=e+a.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case "fit":return i<=g&&h<=j&&k<=e&&f<=l;
+case "intersect":return i<g+a.helperProportions.width/2&&h-a.helperProportions.width/2<j&&k<e+a.helperProportions.height/2&&f-a.helperProportions.height/2<l;case "pointer":return b.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,k,i,c.proportions.height,c.proportions.width);case "touch":return(e>=k&&e<=l||f>=k&&f<=l||e<k&&f>l)&&(g>=i&&g<=j||h>=i&&h<=j||g<i&&h>j);default:return!1}};
+b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e<d.length;e++)if(!(d[e].options.disabled||a&&!d[e].accept.call(d[e].element[0],a.currentItem||a.element))){for(var f=0;f<h.length;f++)if(h[f]==d[e].element[0]){d[e].proportions.height=0;continue a}d[e].visible="none"!=d[e].element.css("display");d[e].visible&&("mousedown"==
+g&&d[e]._activate.call(d[e],c),d[e].offset=d[e].element.offset(),d[e].proportions={width:d[e].element[0].offsetWidth,height:d[e].element[0].offsetHeight})}},drop:function(a,c){var d=!1;b.each(b.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options&&(!this.options.disabled&&(this.visible&&b.ui.intersect(a,this,this.options.tolerance))&&(d=d||this._drop.call(this,c)),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||a.element)))this.isout=1,this.isover=
+0,this._deactivate.call(this,c)});return d},dragStart:function(a,c){a.element.parentsUntil("body").bind("scroll.droppable",function(){a.options.refreshPositions||b.ui.ddmanager.prepareOffsets(a,c)})},drag:function(a,c){a.options.refreshPositions&&b.ui.ddmanager.prepareOffsets(a,c);b.each(b.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var d=b.ui.intersect(a,this,this.options.tolerance);if(d=!d&&1==this.isover?"isout":d&&0==this.isover?
+"isover":null){var g;if(this.options.greedy){var h=this.element.parents(":data(droppable):eq(0)");h.length&&(g=b.data(h[0],"droppable"),g.greedyChild="isover"==d?1:0)}g&&"isover"==d&&(g.isover=0,g.isout=1,g._out.call(g,c));this[d]=1;this["isout"==d?"isover":"isout"]=0;this["isover"==d?"_over":"_out"].call(this,c);g&&"isout"==d&&(g.isout=0,g.isover=1,g._over.call(g,c))}}})},dragStop:function(a,c){a.element.parentsUntil("body").unbind("scroll.droppable");a.options.refreshPositions||b.ui.ddmanager.prepareOffsets(a,
+c)}}})(jQuery);
+(function(b){b.widget("ui.resizable",b.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var c=this,a=this.options;this.element.addClass("ui-resizable");b.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],
+_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(/relative/.test(this.element.css("position"))&&b.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"}),this.element.wrap(b('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),
+this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize",
+"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"==
+this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e<h.length;e++){var f=b.trim(h[e]),i=b('<div class="ui-resizable-handle ui-resizable-'+f+'"></div>');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=
+b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy();
+var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a=
+!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();
+var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()-
+e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a=
+e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing=
+!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h}));
+this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity};
+if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),h<a.maxWidth&&(a.maxWidth=h),f<a.maxHeight)a.maxHeight=f;this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();c(b.left)&&(this.position.left=b.left);c(b.top)&&(this.position.top=b.top);c(b.height)&&(this.size.height=b.height);c(b.width)&&(this.size.width=b.width)},_updateRatio:function(b){var a=
+this.position,h=this.size,e=this.axis;c(b.height)?b.width=b.height*this.aspectRatio:c(b.width)&&(b.height=b.width/this.aspectRatio);"sw"==e&&(b.left=a.left+(h.width-b.width),b.top=null);"nw"==e&&(b.top=a.top+(h.height-b.height),b.left=a.left+(h.width-b.width));return b},_respectSize:function(b){var a=this._vBoundaries,h=this.axis,e=c(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=c(b.height)&&a.maxHeight&&a.maxHeight<b.height,i=c(b.width)&&a.minWidth&&a.minWidth>b.width,j=c(b.height)&&a.minHeight&&a.minHeight>
+b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c=
+this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var h=this._proportionallyResizeElements[a];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],f=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=b.map(e,function(b,c){var a=parseInt(b,10)||0,d=parseInt(f[c],10)||0;return a+d})}if(!b.browser.msie||!b(c).is(":hidden")&&!b(c).parents(":hidden").length)h.css({height:c.height()-
+this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var c=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||b('<div style="overflow:hidden;"></div>');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top-
+h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,
+[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,
+element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})};
+"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={},
+e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options,
+h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),
+i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),
+top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0},
+c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)?
+g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper?
+e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left);
+h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&&
+b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost:
+"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width-
+e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b,
+10))}})(jQuery);
+(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"),
+unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d=
+this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d=
+b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g>
+e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.right<g||i.top>f||i.bottom<h):d.tolerance=="fit"&&(k=i.left>g&&i.right<e&&i.top>h&&i.bottom<f);if(k){if(i.selected){i.$element.removeClass("ui-selected");i.selected=false}if(i.unselecting){i.$element.removeClass("ui-unselecting");i.unselecting=false}if(!i.selecting){i.$element.addClass("ui-selecting");
+i.selecting=true;c._trigger("selecting",a,{selecting:i.element})}}else{if(i.selecting)if(a.metaKey&&i.startselected){i.$element.removeClass("ui-selecting");i.selecting=false;i.$element.addClass("ui-selected");i.selected=true}else{i.$element.removeClass("ui-selecting");i.selecting=false;if(i.startselected){i.$element.addClass("ui-unselecting");i.unselecting=true}c._trigger("unselecting",a,{unselecting:i.element})}if(i.selected&&!a.metaKey&&!i.startselected){i.$element.removeClass("ui-selected");i.selected=
+false;i.$element.addClass("ui-unselecting");i.unselecting=true;c._trigger("unselecting",a,{unselecting:i.element})}}}});return!1}},_mouseStop:function(a){var c=this;this.dragged=!1;b(".ui-unselecting",this.element[0]).each(function(){var d=b.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=!1;d.startselected=!1;c._trigger("unselected",a,{unselected:d.element})});b(".ui-selecting",this.element[0]).each(function(){var d=b.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");
+d.selecting=!1;d.selected=!0;d.startselected=!0;c._trigger("selected",a,{selected:d.element})});this._trigger("stop",a);this.helper.remove();return!1}});b.extend(b.ui.selectable,{version:"1.8.14"})})(jQuery);
+(function(b){b.widget("ui.sortable",b.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();
+this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]=
+c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this==
+a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=
+this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();
+c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset());
+this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
+this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:a.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+
+this.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:a.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed):(a.pageY-b(document).scrollTop()<c.scrollSensitivity?d=b(document).scrollTop(b(document).scrollTop()-c.scrollSpeed):b(window).height()-(a.pageY-b(document).scrollTop())<c.scrollSensitivity&&(d=b(document).scrollTop(b(document).scrollTop()+
+c.scrollSpeed)),a.pageX-b(document).scrollLeft()<c.scrollSensitivity?d=b(document).scrollLeft(b(document).scrollLeft()-c.scrollSpeed):b(window).width()-(a.pageX-b(document).scrollLeft())<c.scrollSensitivity&&(d=b(document).scrollLeft(b(document).scrollLeft()+c.scrollSpeed)));!1!==d&&(b.ui.ddmanager&&!c.dropBehaviour)&&b.ui.ddmanager.prepareOffsets(this,a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+
+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";for(c=this.items.length-1;0<=c;c--){var d=this.items[c],g=d.item[0],h=this._intersectsWithPointer(d);if(h&&g!=this.currentItem[0]&&this.placeholder[1==h?"next":"prev"]()[0]!=g&&!b.ui.contains(this.placeholder[0],g)&&("semi-dynamic"==this.options.type?!b.ui.contains(this.element[0],g):1)){this.direction=1==h?"down":"up";if("pointer"==this.options.tolerance||this._intersectsWithSides(d))this._rearrange(a,
+d);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(a,c){if(a){b.ui.ddmanager&&!this.options.dropBehaviour&&b.ui.ddmanager.drop(this,a);if(this.options.revert){var d=this,g=d.placeholder.offset();d.reverting=!0;b(this.helper).animate({left:g.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?
+0:this.offsetParent[0].scrollLeft),top:g.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(a)})}else this._clear(a,c);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null});"original"==this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var a=this.containers.length-1;0<=a;a--)this.containers[a]._trigger("deactivate",
+null,this._uiHash(this)),this.containers[a].containerCache.over&&(this.containers[a]._trigger("out",null,this._uiHash(this)),this.containers[a].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!=this.options.helper&&(this.helper&&this.helper[0].parentNode)&&this.helper.remove(),b.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?b(this.domPosition.prev).after(this.currentItem):
+b(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(a){var c=this._getItemsAsjQuery(a&&a.connected),d=[],a=a||{};b(c).each(function(){var c=(b(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);c&&d.push((a.key||c[1]+"[]")+"="+(a.key&&a.expression?c[1]:c[2]))});!d.length&&a.key&&d.push(a.key+"=");return d.join("&")},toArray:function(a){var c=this._getItemsAsjQuery(a&&a.connected),d=[],a=a||{};c.each(function(){d.push(b(a.item||this).attr(a.attribute||
+"id")||"")});return d},_intersectsWith:function(b){var c=this.positionAbs.left,d=c+this.helperProportions.width,g=this.positionAbs.top,h=g+this.helperProportions.height,e=b.left,f=e+b.width,i=b.top,j=i+b.height,k=this.offset.click.top,l=this.offset.click.left;return"pointer"==this.options.tolerance||this.options.forcePointerForContainers||"pointer"!=this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>b[this.floating?"width":"height"]?g+k>i&&g+k<j&&c+l>e&&c+l<f:e<c+this.helperProportions.width/
+2&&d-this.helperProportions.width/2<f&&i<g+this.helperProportions.height/2&&h-this.helperProportions.height/2<j},_intersectsWithPointer:function(a){var c=b.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height),a=b.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width),c=c&&a,a=this._getDragVerticalDirection(),d=this._getDragHorizontalDirection();return!c?!1:this.floating?d&&"right"==d||"down"==a?2:1:a&&("down"==a?2:1)},_intersectsWithSides:function(a){var c=
+b.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height),a=b.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width),d=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return this.floating&&g?"right"==g&&a||"left"==g&&!a:d&&("down"==d&&c||"up"==d&&!c)},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return 0!=b&&(0<b?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-
+this.lastPositionAbs.left;return 0!=b&&(0<b?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions();return this},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(a){var c=[],d=[],g=this._connectWith();if(g&&a)for(a=g.length-1;0<=a;a--)for(var h=b(g[a]),e=h.length-1;0<=e;e--){var f=b.data(h[e],"sortable");f&&(f!=this&&!f.options.disabled)&&d.push([b.isFunction(f.options.items)?f.options.items.call(f.element):
+b(f.options.items,f.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),f])}d.push([b.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):b(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=d.length-1;0<=a;a--)d[a][0].each(function(){c.push(this)});return b(c)},_removeCurrentsFromItems:function(){for(var b=this.currentItem.find(":data(sortable-item)"),c=0;c<this.items.length;c++)for(var d=
+0;d<b.length;d++)b[d]==this.items[c].item[0]&&this.items.splice(c,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var c=this.items,d=[[b.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):b(this.options.items,this.element),this]],g=this._connectWith();if(g)for(var h=g.length-1;0<=h;h--)for(var e=b(g[h]),f=e.length-1;0<=f;f--){var i=b.data(e[f],"sortable");i&&(i!=this&&!i.options.disabled)&&(d.push([b.isFunction(i.options.items)?i.options.items.call(i.element[0],
+a,{item:this.currentItem}):b(i.options.items,i.element),i]),this.containers.push(i))}for(h=d.length-1;0<=h;h--){a=d[h][1];g=d[h][0];f=0;for(e=g.length;f<e;f++)i=b(g[f]),i.data("sortable-item",a),c.push({item:i,instance:a,width:0,height:0,left:0,top:0})}},refreshPositions:function(a){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;0<=c;c--){var d=this.items[c];if(!(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])){var g=
+this.options.toleranceElement?b(this.options.toleranceElement,d.item):d.item;a||(d.width=g.outerWidth(),d.height=g.outerHeight());g=g.offset();d.left=g.left;d.top=g.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c=this.containers.length-1;0<=c;c--)g=this.containers[c].element.offset(),this.containers[c].containerCache.left=g.left,this.containers[c].containerCache.top=g.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),
+this.containers[c].containerCache.height=this.containers[c].element.outerHeight();return this},_createPlaceholder:function(a){var c=a||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var g=d.placeholder;d.placeholder={element:function(){var a=b(document.createElement(c.currentItem[0].nodeName)).addClass(g||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];g||(a.style.visibility="hidden");return a},update:function(b,a){if(!g||d.forcePlaceholderSize)a.height()||
+a.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=b(d.placeholder.element.call(c.element,c.currentItem));c.currentItem.after(c.placeholder);d.placeholder.update(c,c.placeholder)},_contactContainers:function(a){for(var c=null,d=null,g=this.containers.length-
+1;0<=g;g--)if(!b.ui.contains(this.currentItem[0],this.containers[g].element[0]))if(this._intersectsWith(this.containers[g].containerCache)){if(!c||!b.ui.contains(this.containers[g].element[0],c.element[0]))c=this.containers[g],d=g}else this.containers[g].containerCache.over&&(this.containers[g]._trigger("out",a,this._uiHash(this)),this.containers[g].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[d]._trigger("over",a,this._uiHash(this)),this.containers[d].containerCache.over=
+1;else if(this.currentContainer!=this.containers[d]){for(var c=1E4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"],e=this.items.length-1;0<=e;e--)if(b.ui.contains(this.containers[d].element[0],this.items[e].item[0])){var f=this.items[e][this.containers[d].floating?"left":"top"];Math.abs(f-h)<c&&(c=Math.abs(f-h),g=this.items[e])}if(g||this.options.dropOnEmpty)this.currentContainer=this.containers[d],g?this._rearrange(a,g,null,!0):this._rearrange(a,null,this.containers[d].element,
+!0),this._trigger("change",a,this._uiHash()),this.containers[d]._trigger("change",a,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",a,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a,this.currentItem])):"clone"==c.helper?this.currentItem.clone():this.currentItem;a.parents("body").length||b("parent"!=c.appendTo?
+c.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);a[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")});(""==a[0].style.width||c.forceHelperSize)&&a.width(this.currentItem.width());(""==a[0].style.height||c.forceHelperSize)&&a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){"string"==
+typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]||0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&
+(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==
+this.cssPosition){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},
+_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,b("document"==a.containment?document:window).width()-this.helperProportions.width-this.margins.left,(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-
+this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var c=b(a.containment)[0],a=b(a.containment).offset(),d="hidden"!=b(c).css("overflow");this.containment=[a.left+(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0)-this.margins.top,a.left+(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||
+0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:
+this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==
+this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(d[0].tagName);"relative"==this.cssPosition&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var h=a.pageX,e=a.pageY;if(this.originalPosition&&(this.containment&&(a.pageX-this.offset.click.left<this.containment[0]&&(h=this.containment[0]+this.offset.click.left),
+a.pageY-this.offset.click.top<this.containment[1]&&(e=this.containment[1]+this.offset.click.top),a.pageX-this.offset.click.left>this.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.top<this.containment[1]||e-this.offset.click.top>this.containment[3])?e:!(e-this.offset.click.top<
+this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.left<this.containment[0]||h-this.offset.click.left>this.containment[2])?h:!(h-this.offset.click.left<this.containment[0])?h-c.grid[0]:h+c.grid[0]:h;return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?
+0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_rearrange:function(b,c,d,g){d?d[0].appendChild(this.placeholder[0]):c.item[0].parentNode.insertBefore(this.placeholder[0],"down"==this.direction?c.item[0]:c.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var h=this,e=this.counter;window.setTimeout(function(){e==
+h.counter&&h.refreshPositions(!g)},0)},_clear:function(a,c){this.reverting=!1;var d=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var g in this._storedCSS)if("auto"==this._storedCSS[g]||"static"==this._storedCSS[g])this._storedCSS[g]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(b){this._trigger("receive",
+b,this._uiHash(this.fromOutside))});(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(b){this._trigger("update",b,this._uiHash())});if(!b.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(b){this._trigger("remove",b,this._uiHash())});for(g=this.containers.length-1;0<=g;g--)b.ui.contains(this.containers[g].element[0],this.currentItem[0])&&!c&&(d.push(function(b){return function(a){b._trigger("receive",
+a,this._uiHash(this))}}.call(this,this.containers[g])),d.push(function(b){return function(a){b._trigger("update",a,this._uiHash(this))}}.call(this,this.containers[g])))}for(g=this.containers.length-1;0<=g;g--)c||d.push(function(b){return function(a){b._trigger("deactivate",a,this._uiHash(this))}}.call(this,this.containers[g])),this.containers[g].containerCache.over&&(d.push(function(b){return function(a){b._trigger("out",a,this._uiHash(this))}}.call(this,this.containers[g])),this.containers[g].containerCache.over=
+0);this._storedCursor&&b("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);this._storedZIndex&&this.helper.css("zIndex","auto"==this._storedZIndex?"":this._storedZIndex);this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",a,this._uiHash());for(g=0;g<d.length;g++)d[g].call(this,a);this._trigger("stop",a,this._uiHash())}return!1}c||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!c){for(g=0;g<d.length;g++)d[g].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){!1===b.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(a){var c=a||this;return{helper:c.helper,placeholder:c.placeholder||b([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:a?a.element:null}}});b.extend(b.ui.sortable,
+{version:"1.8.14"})})(jQuery);
+(function(b){b.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers=
+a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
+function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a=
+this.options;a.icons&&(b("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(),
+c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h?
+(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow",
+"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget||
+c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
+h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(),
+j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight||
+f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false",
+"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14",
+animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/);
+h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",
+paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery);
+(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d=
+b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&&
+(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("<ul></ul>").addClass("ui-autocomplete").appendTo(b(this.options.appendTo||
+"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"),
+i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
+this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source?
+(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length<this.options.minLength)return this.close(a);clearTimeout(this.closing);if(!1!==this._trigger("search",a))return this._search(b)},
+_search:function(b){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:b},this.response)},_response:function(b){!this.options.disabled&&b&&b.length?(b=this._normalize(b),this._suggest(b),this._trigger("open")):this.close();this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(b){clearTimeout(this.closing);this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",b))},_change:function(b){this.previous!==
+this.element.val()&&this._trigger("change",b,{item:this.selectedItem})},_normalize:function(a){return a.length&&a[0].label&&a[0].value?a:b.map(a,function(a){return"string"===typeof a?{label:a,value:a}:b.extend({label:a.label||a.value,value:a.value||a.label},a)})},_suggest:function(a){var d=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(d,a);this.menu.deactivate();this.menu.refresh();d.show();this._resizeMenu();d.position(b.extend({of:this.element},this.options.position));
+this.options.autoFocus&&this.menu.next(new b.Event("mouseover"))},_resizeMenu:function(){var b=this.menu.element;b.outerWidth(Math.max(b.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,d){var g=this;b.each(d,function(b,d){g._renderItem(a,d)})},_renderItem:function(a,d){return b("<li></li>").data("item.autocomplete",d).append(b("<a></a>").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&&
+/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery);
+(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&&
+(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d,
+b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10<a});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(a,g)}else this.activate(a,
+this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c+d-b(this).height();return 10>a&&-10<a});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(a,
+result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[b.fn.prop?"prop":"attr"]("scrollHeight")},select:function(b){this._trigger("selected",b,{item:this.active})}})})(jQuery);
+(function(b){var a,c,d,g,h=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},e=function(a){var c=a.name,d=a.form,h=b([]);c&&(h=d?b(d).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form}));return h};b.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",h);"boolean"!==typeof this.options.disabled&&
+(this.options.disabled=this.element.attr("disabled"));this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var f=this,i=this.options,j="checkbox"===this.type||"radio"===this.type,k="ui-state-hover"+(!j?" ui-state-active":"");null===i.label&&(i.label=this.buttonElement.html());this.element.is(":disabled")&&(i.disabled=!0);this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!i.disabled){b(this).addClass("ui-state-hover");
+this===a&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){i.disabled||b(this).removeClass(k)}).bind("click.button",function(b){if(i.disabled){b.preventDefault();b.stopImmediatePropagation()}});this.element.bind("focus.button",function(){f.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){f.buttonElement.removeClass("ui-state-focus")});j&&(this.element.bind("change.button",function(){g||f.refresh()}),this.buttonElement.bind("mousedown.button",function(b){if(!i.disabled){g=
+false;c=b.pageX;d=b.pageY}}).bind("mouseup.button",function(b){if(!i.disabled&&(c!==b.pageX||d!==b.pageY))g=true}));"checkbox"===this.type?this.buttonElement.bind("click.button",function(){if(i.disabled||g)return false;b(this).toggleClass("ui-state-active");f.buttonElement.attr("aria-pressed",f.element[0].checked)}):"radio"===this.type?this.buttonElement.bind("click.button",function(){if(i.disabled||g)return false;b(this).addClass("ui-state-active");f.buttonElement.attr("aria-pressed",true);var a=
+f.element[0];e(a).not(a).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)}):(this.buttonElement.bind("mousedown.button",function(){if(i.disabled)return false;b(this).addClass("ui-state-active");a=this;b(document).one("mouseup",function(){a=null})}).bind("mouseup.button",function(){if(i.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(a){if(i.disabled)return false;(a.keyCode==b.ui.keyCode.SPACE||
+a.keyCode==b.ui.keyCode.ENTER)&&b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(a){a.keyCode===b.ui.keyCode.SPACE&&b(this).click()}));this._setOption("disabled",i.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if("checkbox"===this.type||
+"radio"===this.type){var b=this.element.parents().filter(":last"),a="label[for="+this.element.attr("id")+"]";this.buttonElement=b.find(a);this.buttonElement.length||(b=b.length?b.siblings():this.element.siblings(),this.buttonElement=b.filter(a),this.buttonElement.length||(this.buttonElement=b.find(a)));this.element.addClass("ui-helper-hidden-accessible");(b=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=
+this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||
+this.buttonElement.removeAttr("title");b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"disabled"===a?c?this.element.attr("disabled",!0):this.element.removeAttr("disabled"):this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);"radio"===this.type?e(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+!0):b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",!1)}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",!0):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",!1))},_resetButton:function(){if("input"===this.type)this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(e.push(h?"ui-button-icons-only":
+"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction");
+this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
+b.Widget.prototype.destroy.call(this)}})})(jQuery);
+(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c=
+b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||"&#160;",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
+c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d),
+l=b('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("<span></span>")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("<span></span>").addClass("ui-dialog-title").attr("id",
+i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
+this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!==
+c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+=
+1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1),
+!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("<div></div>").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&&
+null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('<button type="button"></button>').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
+handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition,
+originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize",
+b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "):
+[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in
+c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"):
+f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||"&#160;"))}b.Widget.prototype._setOption.apply(this,arguments)},
+_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height-
+c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "),
+create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()<b.ui.dialog.overlay.maxZ)return!1})},1),b(document).bind("keydown.dialog-overlay",function(c){a.options.closeOnEscape&&(c.keyCode&&c.keyCode===b.ui.keyCode.ESCAPE)&&(a.close(c),c.preventDefault())}),b(window).bind("resize.dialog-overlay",b.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||b("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
+height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),
+c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a<c?b(window).height()+"px":a+"px"):b(document).height()+"px"},width:function(){var a,c;return b.browser.msie?(a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),a<c?b(window).width()+"px":a+"px"):b(document).width()+"px"},resize:function(){var a=b([]);b.each(b.ui.dialog.overlay.instances,function(){a=a.add(this)});a.css({width:0,
+height:0}).css({width:b.ui.dialog.overlay.width(),height:b.ui.dialog.overlay.height()})}});b.extend(b.ui.dialog.overlay.prototype,{destroy:function(){b.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+(function(b){b.widget("ui.slider",b.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var a=this,c=this.options,d=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),g=c.values&&c.values.length||1,h=[];this._mouseSliding=this._keySliding=!1;this._animateOff=!0;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(c.disabled?" ui-slider-disabled ui-disabled":""));this.range=b([]);if(c.range){if(!0===c.range&&(c.values||(c.values=[this._valueMin(),this._valueMin()]),c.values.length&&2!==c.values.length))c.values=[c.values[0],c.values[0]];this.range=b("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e<g;e+=1)h.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle",
+a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g):
+h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c,
+g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c=
+this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus();
+c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,
+this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset?
+this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1<c&&(c=1);0>c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b,
+c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d<g))d=g;d!==this.values(c)&&(g=this.values(),g[c]=d,b=this._trigger("slide",b,{handle:this.handles[c],value:d,values:g}),this.values(c?0:1),!1!==b&&this.values(c,d,!0))}else d!==this.value()&&(b=this._trigger("slide",b,{handle:this.handles[c],value:d}),!1!==b&&this.value(d))},_stop:function(b,c){var d={handle:this.handles[c],value:this.value()};
+this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());this._trigger("stop",b,d)},_change:function(b,c){if(!this._keySliding&&!this._mouseSliding){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());this._trigger("change",b,d)}},value:function(b){if(arguments.length)this.options.value=this._trimAlignValue(b),this._refreshValue(),this._change(null,0);else return this._value()},
+values:function(a,c){var d,g,h;if(1<arguments.length)this.options.values[a]=this._trimAlignValue(c),this._refreshValue(),this._change(null,a);else if(arguments.length)if(b.isArray(arguments[0])){d=this.options.values;g=arguments[0];for(h=0;h<d.length;h+=1)d[h]=this._trimAlignValue(g[h]),this._change(null,h);this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):this.value();else return this._values()},_setOption:function(a,c){var d,g=0;b.isArray(this.options.values)&&
+(g=this.options.values.length);b.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.attr("disabled","disabled"),this.element.addClass("ui-disabled")):(this.handles.removeAttr("disabled"),this.element.removeClass("ui-disabled"));break;case "orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);
+this._refreshValue();break;case "value":this._animateOff=!0;this._refreshValue();this._change(null,0);this._animateOff=!1;break;case "values":this._animateOff=!0;this._refreshValue();for(d=0;d<g;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var c,d;if(arguments.length)return c=this.options.values[b],c=this._trimAlignValue(c);c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);
+return c},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var c=0<this.options.step?this.options.step:1,d=(b-this._valueMin())%c;alignValue=b-d;2*Math.abs(d)>=c&&(alignValue+=0<d?c:-c);return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=this.options.range,c=this.options,d=this,g=!this._animateOff?c.animate:!1,h,e=
+{},f,i,j,k;if(this.options.values&&this.options.values.length)this.handles.each(function(a){h=100*((d.values(a)-d._valueMin())/(d._valueMax()-d._valueMin()));e["horizontal"===d.orientation?"left":"bottom"]=h+"%";b(this).stop(1,1)[g?"animate":"css"](e,c.animate);if(!0===d.options.range)if("horizontal"===d.orientation){if(0===a)d.range.stop(1,1)[g?"animate":"css"]({left:h+"%"},c.animate);if(1===a)d.range[g?"animate":"css"]({width:h-f+"%"},{queue:!1,duration:c.animate})}else{if(0===a)d.range.stop(1,
+1)[g?"animate":"css"]({bottom:h+"%"},c.animate);if(1===a)d.range[g?"animate":"css"]({height:h-f+"%"},{queue:!1,duration:c.animate})}f=h});else{i=this.value();j=this._valueMin();k=this._valueMax();h=k!==j?100*((i-j)/(k-j)):0;e["horizontal"===d.orientation?"left":"bottom"]=h+"%";this.handle.stop(1,1)[g?"animate":"css"](e,c.animate);if("min"===a&&"horizontal"===this.orientation)this.range.stop(1,1)[g?"animate":"css"]({width:h+"%"},c.animate);if("max"===a&&"horizontal"===this.orientation)this.range[g?
+"animate":"css"]({width:100-h+"%"},{queue:!1,duration:c.animate});if("min"===a&&"vertical"===this.orientation)this.range.stop(1,1)[g?"animate":"css"]({height:h+"%"},c.animate);if("max"===a&&"vertical"===this.orientation)this.range[g?"animate":"css"]({height:100-h+"%"},{queue:!1,duration:c.animate})}}});b.extend(b.ui.slider,{version:"1.8.14"})})(jQuery);
+(function(b,a){var c=0,d=0;b.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a):
+(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a=
+b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]||
+(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),
+0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
+this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs",
+function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal",
+function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")};
+this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected=
+-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
+b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a=
+b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c,
+d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)):
+(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(),
+f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1<this.anchors.length&&this.select(a+(a+1<this.anchors.length?1:-1));c.disabled=b.map(b.grep(c.disabled,function(b){return b!=a}),function(b){return b>=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!=
+a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+
+".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup();
+d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup();
+return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b<c.anchors.length?b:0)},b);a&&a.stopPropagation()}),j=c._unrotate||(c._unrotate=!a?function(b){b.clientX&&
+c.rotate(null)}:function(){t=f.selected;d()});b?(this.element.bind("tabsshow",d),this.anchors.bind(f.event+".tabs",j),d()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",d),this.anchors.unbind(f.event+".tabs",j),delete this._rotate,delete this._unrotate);return this}})})(jQuery);
+(function(b,a){function c(){this.debug=!1;this._curInst=null;this._keyEvent=!1;this._disabledInputs=[];this._inDialog=this._datepickerShowing=!1;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:"January February March April May June July August September October November December".split(" "),monthNamesShort:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dayNames:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),dayNamesShort:"Sun Mon Tue Wed Thu Fri Sat".split(" "),dayNamesMin:"Su Mo Tu We Th Fr Sa".split(" "),
+weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,
+beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1};b.extend(this._defaults,this.regional[""]);this.dpDiv=d(b('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");
+a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&&
+c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g=
+a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('<div class="'+
+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker",
+c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b('<span class="'+this._appendClass+'">'+d+"</span>"),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("<img/>").addClass(this._triggerClass).attr({src:g,
+alt:d,title:d}):b('<button type="button"></button>').addClass(this._triggerClass).html(""==g?d:b("<img/>").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a=
+0,c=0,f=0;f<b.length;f++)b[f].length>a&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,
+a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b('<input type="text" id="dp'+this.uuid+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1),
+a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+
+"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",
+this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"),
+c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),
+c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;a<this._disabledInputs.length;a++)if(this._disabledInputs[a]==b)return!0;return!1},_getInst:function(a){try{return b.data(a,"datepicker")}catch(c){throw"Missing instance data for this datepicker";
+}},_optionDatepicker:function(c,d,e){var h=this._getInst(c);if(2==arguments.length&&"string"==typeof d)return"defaults"==d?b.extend({},b.datepicker._defaults):h?"all"==d?b.extend({},h.settings):this._get(h,d):null;var l=d||{};"string"==typeof d&&(l={},l[d]=e);if(h){this._curInst==h&&this._hideDatepicker();var m=this._getDateDatepicker(c,!0),p=this._getMinMaxDate(h,"min"),n=this._getMinMaxDate(h,"max");g(h.settings,l);null!==p&&(l.dateFormat!==a&&l.minDate===a)&&(h.settings.minDate=this._formatDate(h,
+p));null!==n&&(l.dateFormat!==a&&l.maxDate===a)&&(h.settings.maxDate=this._formatDate(h,n));this._attachments(b(c),h);this._autoSize(h);this._setDate(h,m);this._updateAlternate(h);this._updateDatepicker(h)}},_changeDatepicker:function(b,a,c){this._optionDatepicker(b,a,c)},_refreshDatepicker:function(b){(b=this._getInst(b))&&this._updateDatepicker(b)},_setDateDatepicker:function(b,a){var c=this._getInst(b);c&&(this._setDate(c,a),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(b,
+a){var c=this._getInst(b);c&&!c.inline&&this._setDateFromField(c,a);return c?this._getDate(c):null},_doKeyDown:function(a){var c=b.datepicker._getInst(a.target),d=!0,e=c.dpDiv.is(".ui-datepicker-rtl");c._keyEvent=!0;if(b.datepicker._datepickerShowing)switch(a.keyCode){case 9:b.datepicker._hideDatepicker();d=!1;break;case 13:return d=b("td."+b.datepicker._dayOverClass+":not(."+b.datepicker._currentClass+")",c.dpDiv),d[0]?b.datepicker._selectDay(a.target,c.selectedMonth,c.selectedYear,d[0]):b.datepicker._hideDatepicker(),
+!1;case 27:b.datepicker._hideDatepicker();break;case 33:b.datepicker._adjustDate(a.target,a.ctrlKey?-b.datepicker._get(c,"stepBigMonths"):-b.datepicker._get(c,"stepMonths"),"M");break;case 34:b.datepicker._adjustDate(a.target,a.ctrlKey?+b.datepicker._get(c,"stepBigMonths"):+b.datepicker._get(c,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&b.datepicker._clearDate(a.target);d=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&b.datepicker._gotoToday(a.target);d=a.ctrlKey||a.metaKey;
+break;case 37:if(a.ctrlKey||a.metaKey)b.datepicker._adjustDate(a.target,e?1:-1,"D");d=a.ctrlKey||a.metaKey;a.originalEvent.altKey&&b.datepicker._adjustDate(a.target,a.ctrlKey?-b.datepicker._get(c,"stepBigMonths"):-b.datepicker._get(c,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&b.datepicker._adjustDate(a.target,-7,"D");d=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)b.datepicker._adjustDate(a.target,e?-1:1,"D");d=a.ctrlKey||a.metaKey;a.originalEvent.altKey&&b.datepicker._adjustDate(a.target,
+a.ctrlKey?+b.datepicker._get(c,"stepBigMonths"):+b.datepicker._get(c,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&b.datepicker._adjustDate(a.target,7,"D");d=a.ctrlKey||a.metaKey;break;default:d=!1}else 36==a.keyCode&&a.ctrlKey?b.datepicker._showDatepicker(this):d=!1;d&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(c){var d=b.datepicker._getInst(c.target);if(b.datepicker._get(d,"constrainInput")){var d=b.datepicker._possibleChars(b.datepicker._get(d,"dateFormat")),e=String.fromCharCode(c.charCode==
+a?c.keyCode:c.charCode);return c.ctrlKey||c.metaKey||" ">e||!d||-1<d.indexOf(e)}},_doKeyUp:function(a){a=b.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(b.datepicker.parseDate(b.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,b.datepicker._getFormatConfig(a)))b.datepicker._setDateFromField(a),b.datepicker._updateAlternate(a),b.datepicker._updateDatepicker(a)}catch(c){b.datepicker.log(c)}return!0},_showDatepicker:function(a){a=a.target||a;"input"!=a.nodeName.toLowerCase()&&
+(a=b("input",a.parentNode)[0]);if(!(b.datepicker._isDisabledDatepicker(a)||b.datepicker._lastInput==a)){var c=b.datepicker._getInst(a);b.datepicker._curInst&&b.datepicker._curInst!=c&&(b.datepicker._datepickerShowing&&b.datepicker._triggerOnClose(b.datepicker._curInst),b.datepicker._curInst.dpDiv.stop(!0,!0));var d=b.datepicker._get(c,"beforeShow");g(c.settings,d?d.apply(a,[a,c]):{});c.lastVal=null;b.datepicker._lastInput=a;b.datepicker._setDateFromField(c);b.datepicker._inDialog&&(a.value="");b.datepicker._pos||
+(b.datepicker._pos=b.datepicker._findPos(a),b.datepicker._pos[1]+=a.offsetHeight);var e=!1;b(a).parents().each(function(){e=e|b(this).css("position")=="fixed";return!e});e&&b.browser.opera&&(b.datepicker._pos[0]-=document.documentElement.scrollLeft,b.datepicker._pos[1]-=document.documentElement.scrollTop);d={left:b.datepicker._pos[0],top:b.datepicker._pos[1]};b.datepicker._pos=null;c.dpDiv.empty();c.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});b.datepicker._updateDatepicker(c);d=
+b.datepicker._checkOffset(c,d,e);c.dpDiv.css({position:b.datepicker._inDialog&&b.blockUI?"static":e?"fixed":"absolute",display:"none",left:d.left+"px",top:d.top+"px"});if(!c.inline){var d=b.datepicker._get(c,"showAnim"),h=b.datepicker._get(c,"duration"),m=function(){var a=c.dpDiv.find("iframe.ui-datepicker-cover");if(a.length){var f=b.datepicker._getBorders(c.dpDiv);a.css({left:-f[0],top:-f[1],width:c.dpDiv.outerWidth(),height:c.dpDiv.outerHeight()})}};c.dpDiv.zIndex(b(a).zIndex()+1);b.datepicker._datepickerShowing=
+!0;if(b.effects&&b.effects[d])c.dpDiv.show(d,b.datepicker._get(c,"showOptions"),h,m);else c.dpDiv[d||"show"](d?h:null,m);(!d||!h)&&m();c.input.is(":visible")&&!c.input.is(":disabled")&&c.input.focus();b.datepicker._curInst=c}}},_updateDatepicker:function(a){this.maxRows=4;var c=b.datepicker._getBorders(a.dpDiv);e=a;a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");d.length&&d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});
+a.dpDiv.find("."+this._dayOverClass+" a").mouseover();c=this._getNumberOfMonths(a);d=c[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");1<d&&a.dpDiv.addClass("ui-datepicker-multi-"+d).css("width",17*d+"em");a.dpDiv[(1!=c[0]||1!=c[1]?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==b.datepicker._curInst&&(b.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&
+!a.input.is(":disabled")&&a.input[0]!=document.activeElement)&&a.input.focus();if(a.yearshtml){var g=a.yearshtml;setTimeout(function(){g===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);g=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,c,d){var e=a.dpDiv.outerWidth(),g=a.dpDiv.outerHeight(),
+h=a.input?a.input.outerWidth():0,p=a.input?a.input.outerHeight():0,n=document.documentElement.clientWidth+b(document).scrollLeft(),q=document.documentElement.clientHeight+b(document).scrollTop();c.left-=this._get(a,"isRTL")?e-h:0;c.left-=d&&c.left==a.input.offset().left?b(document).scrollLeft():0;c.top-=d&&c.top==a.input.offset().top+p?b(document).scrollTop():0;c.left-=Math.min(c.left,c.left+e>n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c=
+this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c);
+this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
+_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"):
+0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear=
+!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay=
+b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d):
+(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0<a&&6>a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
+a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort,
+n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1<a.length&&a.charAt(E+1)==b)&&E++;return b},s=function(a){var b=u(a),a=RegExp("^\\d{1,"+("@"==a?14:"!"==a?20:"y"==a&&b?4:"o"==a?3:2)+"}"),a=c.substring(B).match(a);if(!a)throw"Missing number at position "+B;B+=a[0].length;return parseInt(a[0],10)},v=function(a,d,f){var a=b.map(u(a)?f:d,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),e=-1;b.each(a,function(a,b){var d=b[1];
+if(c.substr(B,d.length).toLowerCase()==d.toLowerCase())return e=b[0],B+=d.length,!1});if(-1!=e)return e+1;throw"Unknown name at position "+B;},z=function(){if(c.charAt(B)!=a.charAt(E))throw"Unexpected literal at position "+B;B++},B=0,E=0;E<a.length;E++)if(r)"'"==a.charAt(E)&&!u("'")?r=!1:z();else switch(a.charAt(E)){case "d":o=s("d");break;case "D":v("D",g,h);break;case "o":w=s("o");break;case "m":q=s("m");break;case "M":q=v("M",p,n);break;case "y":d=s("y");break;case "@":var C=new Date(s("@")),d=
+C.getFullYear(),q=C.getMonth()+1,o=C.getDate();break;case "!":C=new Date((s("!")-this._ticksTo1970)/1E4);d=C.getFullYear();q=C.getMonth()+1;o=C.getDate();break;case "'":u("'")?z():r=!0;break;default:z()}if(B<c.length)throw"Extra/unparsed characters found in date: "+c.substring(B);-1==d?d=(new Date).getFullYear():100>d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1<w){q=1;o=w;do{e=this._getDaysInMonth(d,q-1);if(o<=e)break;q++;o-=e}while(1)}C=this._daylightSavingAdjust(new Date(d,
+q-1,o));if(C.getFullYear()!=d||C.getMonth()+1!=q||C.getDate()!=o)throw"Invalid date";return C},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:864E9*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:
+null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,c=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){(b=r+1<a.length&&a.charAt(r+1)==b)&&r++;return b},n=function(a,b,c){b=""+b;if(h(a))for(;b.length<c;)b="0"+b;return b},q=function(a,b,c,d){return h(a)?d[b]:c[b]},o="",w=!1;if(b)for(var r=0;r<a.length;r++)if(w)"'"==a.charAt(r)&&!h("'")?w=!1:o+=a.charAt(r);else switch(a.charAt(r)){case "d":o+=n("d",b.getDate(),2);break;case "D":o+=q("D",b.getDay(),
+d,e);break;case "o":o+=n("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":o+=n("m",b.getMonth()+1,2);break;case "M":o+=q("M",b.getMonth(),g,c);break;case "y":o+=h("y")?b.getFullYear():(10>b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b=
+"",c=!1,d=function(b){(b=e+1<a.length&&a.charAt(e+1)==b)&&e++;return b},e=0;e<a.length;e++)if(c)"'"==a.charAt(e)&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(b,c){return b.settings[c]!==a?b.settings[c]:this._defaults[c]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=
+a.input?a.input.val():null,e,g;e=g=this._getDefaultDate(a);var h=this._getFormatConfig(a);try{e=this.parseDate(c,d,h)||g}catch(n){this.log(n),d=b?"":d}a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();a.currentDay=d?e.getDate():0;a.currentMonth=d?e.getMonth():0;a.currentYear=d?e.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,
+c,d){var e=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},g=function(c){try{return b.datepicker.parseDate(b.datepicker._get(a,"dateFormat"),c,b.datepicker._getFormatConfig(a))}catch(d){}for(var e=(c.toLowerCase().match(/^c/)?b.datepicker._getDate(a):null)||new Date,g=e.getFullYear(),h=e.getMonth(),e=e.getDate(),i=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=i.exec(c);l;){switch(l[2]||"d"){case "d":case "D":e+=parseInt(l[1],10);break;case "w":case "W":e+=7*parseInt(l[1],10);break;case "m":case "M":h+=
+parseInt(l[1],10);e=Math.min(e,b.datepicker._getDaysInMonth(g,h));break;case "y":case "Y":g+=parseInt(l[1],10),e=Math.min(e,b.datepicker._getDaysInMonth(g,h))}l=i.exec(c)}return new Date(g,h,e)};if(c=(c=null==c||""===c?d:"string"==typeof c?g(c):"number"==typeof c?isNaN(c)?d:e(c):new Date(c.getTime()))&&"Invalid Date"==c.toString()?d:c)c.setHours(0),c.setMinutes(0),c.setSeconds(0),c.setMilliseconds(0);return this._daylightSavingAdjust(c)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(12<
+a.getHours()?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,g=a.selectedYear,b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();(e!=a.selectedMonth||g!=a.selectedYear)&&!c&&this._notifyChange(a);this._adjustInstDate(a);a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
+a.input&&""==a.input.val()?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var c=new Date,c=this._daylightSavingAdjust(new Date(c.getFullYear(),c.getMonth(),c.getDate())),d=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),g=this._get(a,"hideIfNoPrevNext"),m=this._get(a,"navigationAsDateFormat"),p=this._getNumberOfMonths(a),n=this._get(a,"showCurrentAtPos"),q=this._get(a,"stepMonths"),o=1!=p[0]||1!=p[1],w=this._daylightSavingAdjust(!a.currentDay?
+new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),r=this._getMinMaxDate(a,"min"),u=this._getMinMaxDate(a,"max"),n=a.drawMonth-n,s=a.drawYear;0>n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&v<r?r:v;this._daylightSavingAdjust(new Date(s,n,1))>v;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)),
+v=this._canAdjustMonth(a,-1,s,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+h+".datepicker._adjustDate('#"+a.id+"', -"+q+", 'M');\" title=\""+v+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"e":"w")+'">'+v+"</span></a>":g?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+v+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"e":"w")+'">'+v+"</span></a>",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s,
+n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+h+".datepicker._adjustDate('#"+a.id+"', +"+q+", 'M');\" title=\""+z+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"w":"e")+'">'+z+"</span></a>":g?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+z+'"><span class="ui-icon ui-icon-circle-triangle-'+(d?"w":"e")+'">'+z+"</span></a>",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&&
+a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+h+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"",e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(d?m:"")+(this._isInRange(a,z)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+h+".datepicker._gotoToday('#"+a.id+"');\">"+q+"</button>":"")+(d?"":m)+"</div>":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H<p[0];H++){var L=
+"";this.maxRows=4;for(var I=0;I<p[1];I++){var Q=this._daylightSavingAdjust(new Date(s,n,a.selectedDay)),A=" ui-corner-all",y="";if(o){y+='<div class="ui-datepicker-group';if(1<p[1])switch(I){case 0:y+=" ui-datepicker-group-first";A=" ui-corner-"+(d?"right":"left");break;case p[1]-1:y+=" ui-datepicker-group-last";A=" ui-corner-"+(d?"left":"right");break;default:y+=" ui-datepicker-group-middle",A=""}y+='">'}for(var y=y+('<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+A+'">'+(/all|left/.test(A)&&
+0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0<H||0<I,E,C)+'</div><table class="ui-datepicker-calendar"><thead><tr>'),D=q?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("<th"+(5<=(A+m+6)%7?' class="ui-datepicker-week-end"':"")+'><span title="'+z[x]+'">'+B[x]+"</span></th>");y+=D+"</tr></thead><tbody>";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,
+D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R<D;R++){for(var y=y+"<tr>",M=!q?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(x)+"</td>",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&x<r||u&&x>u,M=M+('<td class="'+(5<=(A+m+6)%7?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+
+(x.getTime()==Q.getTime()&&n==a.selectedMonth&&a._keyEvent||P.getTime()==x.getTime()&&P.getTime()==Q.getTime()?" "+this._dayOverClass:"")+(N?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!K?"":" "+J[1]+(x.getTime()==w.getTime()?" "+this._currentClass:"")+(x.getTime()==c.getTime()?" ui-datepicker-today":""))+'"'+((!F||K)&&J[2]?' title="'+J[2]+'"':"")+(N?"":' onclick="DP_jQuery_'+h+".datepicker._selectDay('#"+a.id+"',"+x.getMonth()+","+x.getFullYear()+', this);return false;"')+">"+(F&&!K?
+"&#xa0;":N?'<span class="ui-state-default">'+x.getDate()+"</span>":'<a class="ui-state-default'+(x.getTime()==c.getTime()?" ui-state-highlight":"")+(x.getTime()==w.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+x.getDate()+"</a>")+"</td>");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+"</tr>"}n++;11<n&&(n=0,s++);y+="</tbody></table>"+(o?"</div>"+(0<p[0]&&I==p[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");L+=y}G+=L}G+=e+(b.browser.msie&&
+7>parseInt(b.browser.version,10)&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='<div class="ui-datepicker-title">',u="";if(g||!q)u+='<span class="ui-datepicker-month">'+p[b]+"</span>";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('<select class="ui-datepicker-month" onchange="DP_jQuery_'+
+h+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+h+".datepicker._clickMonthYear('#"+a.id+"');\">"),v=0;12>v;v++)if((!p||v>=d.getMonth())&&(!s||v<=e.getMonth()))u+='<option value="'+v+'"'+(v==b?' selected="selected"':"")+">"+n[v]+"</option>";u+="</select>"}w||(r+=u+(g||!q||!o?"&#xa0;":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+='<span class="ui-datepicker-year">'+c+"</span>";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a=
+a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+h+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+h+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=n;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':
+"")+">"+b+"</option>";a.yearshtml+="</select>";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?"&#xa0;":"")+u);return r+"</div>"},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c||
+"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&b<c?c:b;return d&&c>d?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,
+b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=
+d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d,
+c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"==
+a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery);
+(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
+this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
+this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery);
+jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2],
+16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"===
+typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d?
+d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e=
+e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],
+darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],
+maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")||
+" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,
+[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c,
+remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c<b.length;c++)null!==b[c]&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)null!==b[c]&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){"toggle"==b&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case "top":c=0;break;case "middle":c=0.5;break;case "bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case "left":d=
+0;break;case "center":d=0.5;break;case "right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(a){if(a.parent().is(".ui-effects-wrapper"))return a.parent();var c={width:a.outerWidth(!0),height:a.outerHeight(!0),"float":a.css("float")},d=b("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})):
+(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0<unit[0]&&(e[c]=unit[0]*d+unit[1])});return e}});b.fn.extend({effect:function(a,
+c,d,f){var g=e.apply(this,arguments),h={options:g[1],duration:g[2],callback:g[3]},g=h.options.mode,i=b.effects[a];return b.fx.off||!i?g?this[g](h.duration,h.callback):this.each(function(){h.callback&&h.callback.call(this)}):i.call(this,h)},_show:b.fn.show,show:function(a){if(f(a))return this._show.apply(this,arguments);var b=e.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:b.fn.hide,hide:function(a){if(f(a))return this._hide.apply(this,arguments);var b=e.apply(this,
+arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:b.fn.toggle,toggle:function(a){if(f(a)||"boolean"===typeof a||b.isFunction(a))return this.__toggle.apply(this,arguments);var c=e.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(a){var c=this.css(a),d=[];b.each(["em","px","%","pt"],function(a,b){0<c.indexOf(b)&&(d=[parseFloat(c),b])});return d}});b.easing.jswing=b.easing.swing;b.extend(b.easing,{def:"easeOutQuad",swing:function(a,c,d,
+e,f){return b.easing[b.easing.def](a,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},
+easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/
+e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*
+b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);g<Math.abs(d)?(g=d,a=f/4):a=f/(2*Math.PI)*Math.asin(d/g);return-(g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f))+c},easeOutElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);g<Math.abs(d)?(g=d,a=f/4):a=f/(2*Math.PI)*
+Math.asin(d/g);return g*Math.pow(2,-10*b)*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInOutElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(2==(b/=e/2))return c+d;f||(f=e*0.3*1.5);g<Math.abs(d)?(g=d,a=f/4):a=f/(2*Math.PI)*Math.asin(d/g);return 1>b?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e,
+f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a,
+c,d,e,f){return c<f/2?0.5*b.easing.easeInBounce(a,2*c,0,e,f)+d:0.5*b.easing.easeOutBounce(a,2*c-f,0,e,f)+0.5*e+d}})}(jQuery);
+(function(b){b.effects.blind=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.direction||"vertical";b.effects.save(c,d);c.show();var e=b.effects.createWrapper(c).css({overflow:"hidden"}),f="vertical"==h?"height":"width",h="vertical"==h?e.height():e.width();"show"==g&&e.css(f,0);var i={};i[f]="show"==g?h:0;e.animate(i,a.duration,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,
+d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+(function(b){b.effects.bounce=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"effect"),h=a.options.direction||"up",e=a.options.distance||20,f=a.options.times||5,i=a.duration||250;/show|hide/.test(g)&&d.push("opacity");b.effects.save(c,d);c.show();b.effects.createWrapper(c);var j="up"==h||"down"==h?"top":"left",h="up"==h||"left"==h?"pos":"neg",e=a.options.distance||("top"==j?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/
+3);"show"==g&&c.css("opacity",0).css(j,"pos"==h?-e:e);"hide"==g&&(e/=2*f);"hide"!=g&&f--;if("show"==g){var k={opacity:1};k[j]=("pos"==h?"+=":"-=")+e;c.animate(k,i/2,a.options.easing);e/=2;f--}for(k=0;k<f;k++){var l={},m={};l[j]=("pos"==h?"-=":"+=")+e;m[j]=("pos"==h?"+=":"-=")+e;c.animate(l,i/2,a.options.easing).animate(m,i/2,a.options.easing);e="hide"==g?2*e:e/2}"hide"==g?(k={opacity:0},k[j]=("pos"==h?"-=":"+=")+e,c.animate(k,i/2,a.options.easing,function(){c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);
+a.callback&&a.callback.apply(this,arguments)})):(l={},m={},l[j]=("pos"==h?"-=":"+=")+e,m[j]=("pos"==h?"+=":"-=")+e,c.animate(l,i/2,a.options.easing).animate(m,i/2,a.options.easing,function(){b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments)}));c.queue("fx",function(){c.dequeue()});c.dequeue()})}})(jQuery);
+(function(b){b.effects.clip=function(a){return this.queue(function(){var c=b(this),d="position top bottom left right height width".split(" "),g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.direction||"vertical";b.effects.save(c,d);c.show();var e=b.effects.createWrapper(c).css({overflow:"hidden"}),e="IMG"==c[0].tagName?e:c,f="vertical"==h?"height":"width",i="vertical"==h?"top":"left",h="vertical"==h?e.height():e.width();"show"==g&&(e.css(f,0),e.css(i,h/2));var j={};j[f]="show"==g?h:0;j[i]=
+"show"==g?0:h/2;e.animate(j,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.drop=function(a){return this.queue(function(){var c=b(this),d="position top bottom left right opacity".split(" "),g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.direction||"left";b.effects.save(c,d);c.show();b.effects.createWrapper(c);var e="up"==h||"down"==h?"top":"left",h="up"==h||"left"==h?"pos":"neg",f=a.options.distance||("top"==e?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);"show"==g&&c.css("opacity",0).css(e,"pos"==h?-f:f);var i={opacity:"show"==
+g?1:0};i[e]=("show"==g?"pos"==h?"+=":"-=":"pos"==h?"-=":"+=")+f;c.animate(i,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode="toggle"==a.options.mode?b(this).is(":visible")?"hide":"show":a.options.mode;var g=b(this).show().css("visibility","hidden"),h=g.offset();h.top-=parseInt(g.css("marginTop"),10)||0;h.left-=parseInt(g.css("marginLeft"),10)||0;for(var e=g.outerWidth(!0),f=g.outerHeight(!0),i=0;i<c;i++)for(var j=
+0;j<d;j++)g.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+
+i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
+(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1],
+10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&&
+this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&&times--;for(d=0;d<times;d++)c.animate({opacity:animateTo},duration,a.options.easing),animateTo=(animateTo+1)%2;c.animate({opacity:animateTo},duration,
+a.options.easing,function(){animateTo==0&&c.hide();a.callback&&a.callback.apply(this,arguments)});c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);
+(function(b){b.effects.puff=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide"),g=parseInt(a.options.percent,10)||150,h=g/100,e={height:c.height(),width:c.width()};b.extend(a.options,{fade:!0,mode:d,percent:"hide"==d?g:100,from:"hide"==d?e:{height:e.height*h,width:e.width*h}});c.effect("scale",a.options,a.duration,a.callback);c.dequeue()})};b.effects.scale=function(a){return this.queue(function(){var c=b(this),d=b.extend(!0,{},a.options),g=b.effects.setMode(c,
+a.options.mode||"effect"),h=parseInt(a.options.percent,10)||(0==parseInt(a.options.percent,10)?0:"hide"==g?0:100),e=a.options.direction||"both",f=a.options.origin;"effect"!=g&&(d.origin=f||["middle","center"],d.restore=!0);f={height:c.height(),width:c.width()};c.from=a.options.from||("show"==g?{height:0,width:0}:f);c.to={height:f.height*("horizontal"!=e?h/100:1),width:f.width*("vertical"!=e?h/100:1)};if(a.options.fade&&("show"==g&&(c.from.opacity=0,c.to.opacity=1),"hide"==g))c.from.opacity=1,c.to.opacity=
+0;d.from=c.from;d.to=c.to;d.mode=g;c.effect("size",d,a.duration,a.callback);c.dequeue()})};b.effects.size=function(a){return this.queue(function(){var c=b(this),d="position top bottom left right width height overflow opacity".split(" "),g="position top bottom left right overflow opacity".split(" "),h=["width","height","overflow"],e=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=b.effects.setMode(c,
+a.options.mode||"effect"),k=a.options.restore||!1,l=a.options.scale||"both",m=a.options.origin,p={height:c.height(),width:c.width()};c.from=a.options.from||p;c.to=a.options.to||p;m&&(m=b.effects.getBaseline(m,p),c.from.top=(p.height-c.from.height)*m.y,c.from.left=(p.width-c.from.width)*m.x,c.to.top=(p.height-c.to.height)*m.y,c.to.left=(p.width-c.to.width)*m.x);var n=c.from.height/p.height,q=c.from.width/p.width,o=c.to.height/p.height,w=c.to.width/p.width;if("box"==l||"both"==l)if(n!=o&&(d=d.concat(f),
+c.from=b.effects.setTransition(c,f,n,c.from),c.to=b.effects.setTransition(c,f,o,c.to)),q!=w)d=d.concat(i),c.from=b.effects.setTransition(c,i,q,c.from),c.to=b.effects.setTransition(c,i,w,c.to);if(("content"==l||"both"==l)&&n!=o)d=d.concat(e),c.from=b.effects.setTransition(c,e,n,c.from),c.to=b.effects.setTransition(c,e,o,c.to);b.effects.save(c,k?d:g);c.show();b.effects.createWrapper(c);c.css("overflow","hidden").css(c.from);if("content"==l||"both"==l)f=f.concat(["marginTop","marginBottom"]).concat(e),
+i=i.concat(["marginLeft","marginRight"]),h=d.concat(f).concat(i),c.find("*[width]").each(function(){child=b(this);k&&b.effects.save(child,h);var c=child.height(),d=child.width();child.from={height:c*n,width:d*q};child.to={height:c*o,width:d*w};if(n!=o){child.from=b.effects.setTransition(child,f,n,child.from);child.to=b.effects.setTransition(child,f,o,child.to)}if(q!=w){child.from=b.effects.setTransition(child,i,q,child.from);child.to=b.effects.setTransition(child,i,w,child.to)}child.css(child.from);
+child.animate(child.to,a.duration,a.options.easing,function(){k&&b.effects.restore(child,h)})});c.animate(c.to,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity);j=="hide"&&c.hide();b.effects.restore(c,k?d:g);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.shake=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"];b.effects.setMode(c,a.options.mode||"effect");var g=a.options.direction||"left",h=a.options.distance||20,e=a.options.times||3,f=a.duration||a.options.duration||140;b.effects.save(c,d);c.show();b.effects.createWrapper(c);var i="up"==g||"down"==g?"top":"left",j="up"==g||"left"==g?"pos":"neg",g={},k={},l={};g[i]=("pos"==j?"-=":"+=")+h;k[i]=("pos"==j?"+=":"-=")+2*h;l[i]=("pos"==
+j?"-=":"+=")+2*h;c.animate(g,f,a.options.easing);for(h=1;h<e;h++)c.animate(k,f,a.options.easing).animate(l,f,a.options.easing);c.animate(k,f,a.options.easing).animate(g,f/2,a.options.easing,function(){b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments)});c.queue("fx",function(){c.dequeue()});c.dequeue()})}})(jQuery);
+(function(b){b.effects.slide=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"show"),h=a.options.direction||"left";b.effects.save(c,d);c.show();b.effects.createWrapper(c).css({overflow:"hidden"});var e="up"==h||"down"==h?"top":"left",h="up"==h||"left"==h?"pos":"neg",f=a.options.distance||("top"==e?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));"show"==g&&c.css(e,"pos"==h?isNaN(f)?"-"+f:-f:f);var i={};
+i[e]=("show"==g?"pos"==h?"+=":"-=":"pos"==h?"-=":"+=")+f;c.animate(i,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(b){b.effects.transfer=function(a){return this.queue(function(){var c=b(this),d=b(a.options.to),g=d.offset(),d={top:g.top,left:g.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=b('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+/*
+ * jQuery Highlight plugin
+ * Based on highlight v3 by Johann Burkard
+ * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
+ * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html
+ * Licensed under MIT license.
+ */
+jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d<a.childNodes.length;d++)d+=jQuery.highlight(a.childNodes[d],c,b,e);return 0}});
+jQuery.fn.unhighlight=function(a){var c={className:"highlight",element:"span"};jQuery.extend(c,a);return this.find(c.element+"."+c.className).each(function(){var b=this.parentNode;b.replaceChild(this.firstChild,this);b.normalize()}).end()};
+jQuery.fn.highlight=function(a,c){var b={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(b,c);if(a.constructor===String)a=[a];a=jQuery.grep(a,function(f){return f!=""});if(a.length==0)return this;var e=b.caseSensitive?"":"i",d="("+a.join("|")+")";if(b.wordsOnly)d="\\b"+d+"\\b";var g=RegExp(d,e);return this.each(function(){jQuery.highlight(this,g,b.element,b.className)})};
diff --git a/webhelp/template/common/jquery/layout/jquery.layout.js b/webhelp/template/common/jquery/layout/jquery.layout.js
new file mode 100644
index 0000000..14e30a7
--- /dev/null
+++ b/webhelp/template/common/jquery/layout/jquery.layout.js
@@ -0,0 +1,5449 @@
+/**
+ * @preserve jquery.layout 1.3.0 - Release Candidate 30.51
+ * $Date: 2012-05-12 08:00:00 (Sat, 12 May 2012) $
+ * $Rev: 303005 $
+ *
+ * Copyright (c) 2012
+ * Fabrizio Balliano (http://www.fabrizioballiano.net)
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * Changelog: http://layout.jquery-dev.net/changelog.cfm#1.3.0.rc30.5
+ *
+ * Docs: http://layout.jquery-dev.net/documentation.html
+ * Tips: http://layout.jquery-dev.net/tips.html
+ * Help: http://groups.google.com/group/jquery-ui-layout
+ */
+
+/* JavaDoc Info: http://code.google.com/closure/compiler/docs/js-for-compiler.html
+ * {!Object} non-nullable type (never NULL)
+ * {?string} nullable type (sometimes NULL) - default for {Object}
+ * {number=} optional parameter
+ * {*} ALL types
+ */
+
+// NOTE: For best readability, view with a fixed-width font and tabs equal to 4-chars
+
+;(function ($) {
+
+// alias Math methods - used a lot!
+var min = Math.min
+, max = Math.max
+, round = Math.floor
+;
+function isStr (v) { return $.type(v) === "string"; }
+
+function runPluginCallbacks (Instance, a_fn) {
+ if ($.isArray(a_fn))
+ for (var i=0, c=a_fn.length; i<c; i++) {
+ var fn = a_fn[i];
+ try {
+ if (isStr(fn)) // 'name' of a function
+ fn = eval(fn);
+ if ($.isFunction(fn))
+ fn( Instance );
+ } catch (ex) {}
+ }
+};
+
+
+
+/*
+ * GENERIC $.layout METHODS - used by all layouts
+ */
+$.layout = {
+
+ version: "1.3.rc30.51"
+, revision: 0.033005 // 1.3.0 final = 1.0300 - major(n+).minor(nn)+patch(nn+)
+
+ // LANGUAGE CUSTOMIZATION
+, language: {
+ // Tips and messages for resizers, togglers, custom buttons, etc.
+ Open: "Open" // eg: "Open Pane"
+ , Close: "Close"
+ , Resize: "Resize"
+ , Slide: "Slide Open"
+ , Pin: "Pin"
+ , Unpin: "Un-Pin"
+ , noRoomToOpenTip: "Not enough room to show this pane."
+ , minSizeWarning: "Panel has reached its minimum size"
+ , maxSizeWarning: "Panel has reached its maximum size"
+ // Developer error messages
+ , pane: "pane" // description of "layout pane element"
+ , selector: "selector" // description of "jQuery-selector"
+ , errButton: "Error Adding Button \n\nInvalid "
+ , errContainerMissing: "UI Layout Initialization Error\n\nThe specified layout-container does not exist."
+ , errCenterPaneMissing: "UI Layout Initialization Error\n\nThe center-pane element does not exist.\n\nThe center-pane is a required element."
+ , errContainerHeight: "UI Layout Initialization Warning\n\nThe layout-container \"CONTAINER\" has no height.\n\nTherefore the layout is 0-height and hence 'invisible'!"
+ }
+
+ // can update code here if $.browser is phased out
+, browser: {
+ mozilla: !!$.browser.mozilla
+ , webkit: !!$.browser.webkit || !!$.browser.safari // webkit = jQ 1.4
+ , msie: !!$.browser.msie
+ , isIE6: !!$.browser.msie && $.browser.version == 6
+ , version: $.browser.version // not used in Layout core, but may be used by plugins
+ }
+
+ // *PREDEFINED* EFFECTS & DEFAULTS
+ // MUST list effect here - OR MUST set an fxSettings option (can be an empty hash: {})
+, effects: {
+
+ // Pane Open/Close Animations
+ slide: {
+ all: { duration: "fast" } // eg: duration: 1000, easing: "easeOutBounce"
+ , north: { direction: "up" }
+ , south: { direction: "down" }
+ , east: { direction: "right"}
+ , west: { direction: "left" }
+ }
+ , drop: {
+ all: { duration: "slow" }
+ , north: { direction: "up" }
+ , south: { direction: "down" }
+ , east: { direction: "right"}
+ , west: { direction: "left" }
+ }
+ , scale: {
+ all: { duration: "fast" }
+ }
+ // these are not recommended, but can be used
+ , blind: {}
+ , clip: {}
+ , explode: {}
+ , fade: {}
+ , fold: {}
+ , puff: {}
+
+ // Pane Resize Animations
+ , size: {
+ all: { easing: "swing" }
+ }
+ }
+
+ // INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
+, config: {
+ optionRootKeys: "effects,panes,north,south,west,east,center".split(",")
+ , allPanes: "north,south,west,east,center".split(",")
+ , borderPanes: "north,south,west,east".split(",")
+ , oppositeEdge: {
+ north: "south"
+ , south: "north"
+ , east: "west"
+ , west: "east"
+ }
+ // offscreen data
+ , offscreenCSS: { left: "-99999px", right: "auto" } // used by hide/close if useOffscreenClose=true
+ , offscreenReset: "offscreenReset" // key used for data
+ // CSS used in multiple places
+ , hidden: { visibility: "hidden" }
+ , visible: { visibility: "visible" }
+ // layout element settings
+ , resizers: {
+ cssReq: {
+ position: "absolute"
+ , padding: 0
+ , margin: 0
+ , fontSize: "1px"
+ , textAlign: "left" // to counter-act "center" alignment!
+ , overflow: "hidden" // prevent toggler-button from overflowing
+ // SEE $.layout.defaults.zIndexes.resizer_normal
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ background: "#DDD"
+ , border: "none"
+ }
+ }
+ , togglers: {
+ cssReq: {
+ position: "absolute"
+ , display: "block"
+ , padding: 0
+ , margin: 0
+ , overflow: "hidden"
+ , textAlign: "center"
+ , fontSize: "1px"
+ , cursor: "pointer"
+ , zIndex: 1
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ background: "#AAA"
+ }
+ }
+ , content: {
+ cssReq: {
+ position: "relative" /* contain floated or positioned elements */
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ overflow: "auto"
+ , padding: "10px"
+ }
+ , cssDemoPane: { // DEMO CSS - REMOVE scrolling from 'pane' when it has a content-div
+ overflow: "hidden"
+ , padding: 0
+ }
+ }
+ , panes: { // defaults for ALL panes - overridden by 'per-pane settings' below
+ cssReq: {
+ position: "absolute"
+ , margin: 0
+ // $.layout.defaults.zIndexes.pane_normal
+ }
+ , cssDemo: { // DEMO CSS - applied if: options.PANE.applyDemoStyles=true
+ padding: "10px"
+ , background: "#FFF"
+ , border: "1px solid #BBB"
+ , overflow: "auto"
+ }
+ }
+ , north: {
+ side: "Top"
+ , sizeType: "Height"
+ , dir: "horz"
+ , cssReq: {
+ top: 0
+ , bottom: "auto"
+ , left: 0
+ , right: 0
+ , width: "auto"
+ // height: DYNAMIC
+ }
+ }
+ , south: {
+ side: "Bottom"
+ , sizeType: "Height"
+ , dir: "horz"
+ , cssReq: {
+ top: "auto"
+ , bottom: 0
+ , left: 0
+ , right: 0
+ , width: "auto"
+ // height: DYNAMIC
+ }
+ }
+ , east: {
+ side: "Right"
+ , sizeType: "Width"
+ , dir: "vert"
+ , cssReq: {
+ left: "auto"
+ , right: 0
+ , top: "auto" // DYNAMIC
+ , bottom: "auto" // DYNAMIC
+ , height: "auto"
+ // width: DYNAMIC
+ }
+ }
+ , west: {
+ side: "Left"
+ , sizeType: "Width"
+ , dir: "vert"
+ , cssReq: {
+ left: 0
+ , right: "auto"
+ , top: "auto" // DYNAMIC
+ , bottom: "auto" // DYNAMIC
+ , height: "auto"
+ // width: DYNAMIC
+ }
+ }
+ , center: {
+ dir: "center"
+ , cssReq: {
+ left: "auto" // DYNAMIC
+ , right: "auto" // DYNAMIC
+ , top: "auto" // DYNAMIC
+ , bottom: "auto" // DYNAMIC
+ , height: "auto"
+ , width: "auto"
+ }
+ }
+ }
+
+ // CALLBACK FUNCTION NAMESPACE - used to store reusable callback functions
+, callbacks: {}
+
+, getParentPaneElem: function (el) {
+ // must pass either a container or pane element
+ var $el = $(el)
+ , layout = $el.data("layout") || $el.data("parentLayout");
+ if (layout) {
+ var $cont = layout.container;
+ // see if this container is directly-nested inside an outer-pane
+ if ($cont.data("layoutPane")) return $cont;
+ var $pane = $cont.closest("."+ $.layout.defaults.panes.paneClass);
+ // if a pane was found, return it
+ if ($pane.data("layoutPane")) return $pane;
+ }
+ return null;
+ }
+
+, getParentPaneInstance: function (el) {
+ // must pass either a container or pane element
+ var $pane = $.layout.getParentPaneElem(el);
+ return $pane ? $pane.data("layoutPane") : null;
+ }
+
+, getParentLayoutInstance: function (el) {
+ // must pass either a container or pane element
+ var $pane = $.layout.getParentPaneElem(el);
+ return $pane ? $pane.data("parentLayout") : null;
+ }
+
+, getEventObject: function (evt) {
+ return typeof evt === "object" && evt.stopPropagation ? evt : null;
+ }
+, parsePaneName: function (evt_or_pane) {
+ // getEventObject() automatically calls .stopPropagation(), WHICH MUST BE DONE!
+ var evt = $.layout.getEventObject( evt_or_pane );
+ if (evt) {
+ // ALWAYS stop propagation of events triggered in Layout!
+ evt.stopPropagation();
+ return $(this).data("layoutEdge");
+ }
+ else
+ return evt_or_pane;
+ }
+
+
+ // LAYOUT-PLUGIN REGISTRATION
+ // more plugins can added beyond this default list
+, plugins: {
+ draggable: !!$.fn.draggable // resizing
+ , effects: {
+ core: !!$.effects // animimations (specific effects tested by initOptions)
+ , slide: $.effects && $.effects.slide // default effect
+ }
+ }
+
+// arrays of plugin or other methods to be triggered for events in *each layout* - will be passed 'Instance'
+, onCreate: [] // runs when layout is just starting to be created - right after options are set
+, onLoad: [] // runs after layout container and global events init, but before initPanes is called
+, onReady: [] // runs after initialization *completes* - ie, after initPanes completes successfully
+, onDestroy: [] // runs after layout is destroyed
+, onUnload: [] // runs after layout is destroyed OR when page unloads
+, afterOpen: [] // runs after setAsOpen() completes
+, afterClose: [] // runs after setAsClosed() completes
+
+ /*
+ * GENERIC UTILITY METHODS
+ */
+
+ // calculate and return the scrollbar width, as an integer
+, scrollbarWidth: function () { return window.scrollbarWidth || $.layout.getScrollbarSize('width'); }
+, scrollbarHeight: function () { return window.scrollbarHeight || $.layout.getScrollbarSize('height'); }
+, getScrollbarSize: function (dim) {
+ var $c = $('<div style="position: absolute; top: -10000px; left: -10000px; width: 100px; height: 100px; overflow: scroll;"></div>').appendTo("body");
+ var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight };
+ $c.remove();
+ window.scrollbarWidth = d.width;
+ window.scrollbarHeight = d.height;
+ return dim.match(/^(width|height)$/) ? d[dim] : d;
+ }
+
+
+ /**
+ * Returns hash container 'display' and 'visibility'
+ *
+ * @see $.swap() - swaps CSS, runs callback, resets CSS
+ */
+, showInvisibly: function ($E, force) {
+ if (!$E) return {};
+ if (!$E.jquery) $E = $($E);
+ var CSS = {
+ display: $E.css('display')
+ , visibility: $E.css('visibility')
+ };
+ if (force || CSS.display === "none") { // only if not *already hidden*
+ $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured
+ return CSS;
+ }
+ else return {};
+ }
+
+ /**
+ * Returns data for setting size of an element (container or a pane).
+ *
+ * @see _create(), onWindowResize() for container, plus others for pane
+ * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc
+ */
+, getElementDimensions: function ($E) {
+ var
+ d = {} // dimensions hash
+ , x = d.css = {} // CSS hash
+ , i = {} // TEMP insets
+ , b, p // TEMP border, padding
+ , N = $.layout.cssNum
+ , off = $E.offset()
+ ;
+ d.offsetLeft = off.left;
+ d.offsetTop = off.top;
+
+ $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge
+ b = x["border" + e] = $.layout.borderWidth($E, e);
+ p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e);
+ i[e] = b + p; // total offset of content from outer side
+ d["inset"+ e] = p;
+ });
+
+ d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize
+ d.offsetHeight = $E.innerHeight(); // ditto
+ d.outerWidth = $E.outerWidth();
+ d.outerHeight = $E.outerHeight();
+ d.innerWidth = max(0, d.outerWidth - i.Left - i.Right);
+ d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom);
+
+ x.width = $E.width();
+ x.height = $E.height();
+ x.top = N($E,"top",true);
+ x.bottom = N($E,"bottom",true);
+ x.left = N($E,"left",true);
+ x.right = N($E,"right",true);
+
+ //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0;
+
+ return d;
+ }
+
+, getElementCSS: function ($E, list) {
+ var
+ CSS = {}
+ , style = $E[0].style
+ , props = list.split(",")
+ , sides = "Top,Bottom,Left,Right".split(",")
+ , attrs = "Color,Style,Width".split(",")
+ , p, s, a, i, j, k
+ ;
+ for (i=0; i < props.length; i++) {
+ p = props[i];
+ if (p.match(/(border|padding|margin)$/))
+ for (j=0; j < 4; j++) {
+ s = sides[j];
+ if (p === "border")
+ for (k=0; k < 3; k++) {
+ a = attrs[k];
+ CSS[p+s+a] = style[p+s+a];
+ }
+ else
+ CSS[p+s] = style[p+s];
+ }
+ else
+ CSS[p] = style[p];
+ };
+ return CSS
+ }
+
+ /**
+ * Return the innerWidth for the current browser/doctype
+ *
+ * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+ * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
+ * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized
+ * @return {number} Returns the innerWidth of the elem by subtracting padding and borders
+ */
+, cssWidth: function ($E, outerWidth) {
+ var
+ b = $.layout.borderWidth
+ , n = $.layout.cssNum
+ ;
+ // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed
+ if (outerWidth <= 0) return 0;
+
+ if (!$.support.boxModel) return outerWidth;
+
+ // strip border and padding from outerWidth to get CSS Width
+ var W = outerWidth
+ - b($E, "Left")
+ - b($E, "Right")
+ - n($E, "paddingLeft")
+ - n($E, "paddingRight")
+ ;
+
+ return max(0,W);
+ }
+
+ /**
+ * Return the innerHeight for the current browser/doctype
+ *
+ * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles()
+ * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
+ * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized
+ * @return {number} Returns the innerHeight of the elem by subtracting padding and borders
+ */
+, cssHeight: function ($E, outerHeight) {
+ var
+ b = $.layout.borderWidth
+ , n = $.layout.cssNum
+ ;
+ // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed
+ if (outerHeight <= 0) return 0;
+
+ if (!$.support.boxModel) return outerHeight;
+
+ // strip border and padding from outerHeight to get CSS Height
+ var H = outerHeight
+ - b($E, "Top")
+ - b($E, "Bottom")
+ - n($E, "paddingTop")
+ - n($E, "paddingBottom")
+ ;
+
+ return max(0,H);
+ }
+
+ /**
+ * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist
+ *
+ * @see Called by many methods
+ * @param {Array.<Object>} $E Must pass a jQuery object - first element is processed
+ * @param {string} prop The name of the CSS property, eg: top, width, etc.
+ * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0
+ * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width)
+ */
+, cssNum: function ($E, prop, allowAuto) {
+ if (!$E.jquery) $E = $($E);
+ var CSS = $.layout.showInvisibly($E)
+ , p = $.curCSS($E[0], prop, true)
+ , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0);
+ $E.css( CSS ); // RESET
+ return v;
+ }
+
+, borderWidth: function (el, side) {
+ if (el.jquery) el = el[0];
+ var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left
+ return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0);
+ }
+
+ /**
+ * Mouse-tracking utility - FUTURE REFERENCE
+ *
+ * init: if (!window.mouse) {
+ * window.mouse = { x: 0, y: 0 };
+ * $(document).mousemove( $.layout.trackMouse );
+ * }
+ *
+ * @param {Object} evt
+ *
+, trackMouse: function (evt) {
+ window.mouse = { x: evt.clientX, y: evt.clientY };
+ }
+ */
+
+ /**
+ * SUBROUTINE for preventPrematureSlideClose option
+ *
+ * @param {Object} evt
+ * @param {Object=} el
+ */
+, isMouseOverElem: function (evt, el) {
+ var
+ $E = $(el || this)
+ , d = $E.offset()
+ , T = d.top
+ , L = d.left
+ , R = L + $E.outerWidth()
+ , B = T + $E.outerHeight()
+ , x = evt.pageX // evt.clientX ?
+ , y = evt.pageY // evt.clientY ?
+ ;
+ // if X & Y are < 0, probably means is over an open SELECT
+ return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B));
+ }
+
+ /**
+ * Message/Logging Utility
+ *
+ * @example $.layout.msg("My message"); // log text
+ * @example $.layout.msg("My message", true); // alert text
+ * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title
+ * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR-
+ * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data
+ *
+ * @param {(Object|string)} info String message OR Hash/Array
+ * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped
+ * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped
+ * @param {Object=} [debutOpts={}] Extra options for debug output
+ */
+, msg: function (info, popup, debugTitle, debugOpts) {
+ if ($.isPlainObject(info) && window.debugData) {
+ if (typeof popup === "string") {
+ debugOpts = debugTitle;
+ debugTitle = popup;
+ }
+ else if (typeof debugTitle === "object") {
+ debugOpts = debugTitle;
+ debugTitle = null;
+ }
+ var t = debugTitle || "log( <object> )"
+ , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts);
+ if (popup === true || o.display)
+ debugData( info, t, o );
+ else if (window.console)
+ console.log(debugData( info, t, o ));
+ }
+ else if (popup)
+ alert(info);
+ else if (window.console)
+ console.log(info);
+ else {
+ var id = "#layoutLogger"
+ , $l = $(id);
+ if (!$l.length)
+ $l = createLog();
+ $l.children("ul").append('<li style="padding: 4px 10px; margin: 0; border-top: 1px solid #CCC;">'+ info.replace(/\</g,"&lt;").replace(/\>/g,"&gt;") +'</li>');
+ }
+
+ function createLog () {
+ var pos = $.support.fixedPosition ? 'fixed' : 'absolute'
+ , $e = $('<div id="layoutLogger" style="position: '+ pos +'; top: 5px; z-index: 999999; max-width: 25%; overflow: hidden; border: 1px solid #000; border-radius: 5px; background: #FBFBFB; box-shadow: 0 2px 10px rgba(0,0,0,0.3);">'
+ + '<div style="font-size: 13px; font-weight: bold; padding: 5px 10px; background: #F6F6F6; border-radius: 5px 5px 0 0; cursor: move;">'
+ + '<span style="float: right; padding-left: 7px; cursor: pointer;" title="Remove Console" onclick="$(this).closest(\'#layoutLogger\').remove()">X</span>Layout console.log</div>'
+ + '<ul style="font-size: 13px; font-weight: none; list-style: none; margin: 0; padding: 0 0 2px;"></ul>'
+ + '</div>'
+ ).appendTo("body");
+ $e.css('left', $(window).width() - $e.outerWidth() - 5)
+ if ($.ui.draggable) $e.draggable({ handle: ':first-child' });
+ return $e;
+ };
+ }
+
+};
+
+var lang = $.layout.language; // alias used in defaults...
+
+// DEFAULT OPTIONS - CHANGE IF DESIRED
+$.layout.defaults = {
+/*
+ * LAYOUT & LAYOUT-CONTAINER OPTIONS
+ * - none of these options are applicable to individual panes
+ */
+ name: "" // Not required, but useful for buttons and used for the state-cookie
+, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested
+, containerClass: "ui-layout-container" // layout-container element
+, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark)
+, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event
+, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky
+, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized
+, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific
+, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific
+, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements
+, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized
+, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload
+, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload
+, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them
+, initPanes: true // false = DO NOT initialize the panes onLoad - will init later
+, showErrorMessages: true // enables fatal error messages to warn developers of common errors
+, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code!
+// Changing this zIndex value will cause other zIndex values to automatically change
+, zIndex: null // the PANE zIndex - resizers and masks will be +1
+// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships
+, zIndexes: { // set _default_ z-index values here...
+ pane_normal: 0 // normal z-index for panes
+ , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing
+ , resizer_normal: 2 // normal z-index for resizer-bars
+ , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open'
+ , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer
+ , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged'
+ }
+/*
+ * PANE DEFAULT SETTINGS
+ * - settings under the 'panes' key become the default settings for *all panes*
+ * - ALL pane-options can also be set specifically for each panes, which will override these 'default values'
+ */
+, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings'
+ applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity
+ , closable: true // pane can open & close
+ , resizable: true // when open, pane can be resized
+ , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out
+ , initClosed: false // true = init pane as 'closed'
+ , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing
+ // SELECTORS
+ //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane
+ , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane!
+ , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content'
+ , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector)
+ // GENERIC ROOT-CLASSES - for auto-generated classNames
+ , paneClass: "ui-layout-pane" // Layout Pane
+ , resizerClass: "ui-layout-resizer" // Resizer Bar
+ , togglerClass: "ui-layout-toggler" // Toggler Button
+ , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin'
+ // ELEMENT SIZE & SPACING
+ //, size: 100 // MUST be pane-specific -initial size of pane
+ , minSize: 0 // when manually resizing a pane
+ , maxSize: 0 // ditto, 0 = no limit
+ , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open'
+ , spacing_closed: 6 // ditto - when pane is 'closed'
+ , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides
+ , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden'
+ , togglerAlign_open: "center" // top/left, bottom/right, center, OR...
+ , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right
+ , togglerTip_open: lang.Close // Toggler tool-tip (title)
+ , togglerTip_closed: lang.Open // ditto
+ , togglerContent_open: "" // text or HTML to put INSIDE the toggler
+ , togglerContent_closed: "" // ditto
+ // RESIZING OPTIONS
+ , resizerDblClickToggle: true //
+ , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes
+ , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed
+ , resizerDragOpacity: 1 // option for ui.draggable
+ //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar
+ , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES
+ , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask
+ , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes
+ , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20]
+ , livePaneResizing: false // true = LIVE Resizing as resizer is dragged
+ , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged
+ , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance
+ // TIPS & MESSAGES - also see lang object
+ , noRoomToOpenTip: lang.noRoomToOpenTip
+ , resizerTip: lang.Resize // Resizer tool-tip (title)
+ , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed
+ , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding'
+ , slideTrigger_open: "click" // click, dblclick, mouseenter
+ , slideTrigger_close: "mouseleave"// click, mouseleave
+ , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open
+ , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!)
+ , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show?
+ , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening
+ , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
+ // HOT-KEYS & MISC
+ , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver
+ , enableCursorHotkey: true // enabled 'cursor' hotkeys
+ //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character
+ , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT'
+ // PANE ANIMATION
+ // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed
+ , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size'
+ , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration
+ , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 }
+ , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation
+ , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called
+ /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set:
+ fxName_open: "slide" // 'Open' pane animation
+ fnName_close: "slide" // 'Close' pane animation
+ fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true
+ fxSpeed_open: null
+ fxSpeed_close: null
+ fxSpeed_size: null
+ fxSettings_open: {}
+ fxSettings_close: {}
+ fxSettings_size: {}
+ */
+ // CHILD/NESTED LAYOUTS
+ , childOptions: null // Layout-options for nested/child layout - even {} is valid as options
+ , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization
+ , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed
+ , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized
+ // PANE CALLBACKS
+ , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes
+ , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true
+ , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start
+ , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end
+ , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start
+ , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end
+ , onopen_start: null // CALLBACK when pane STARTS to Open
+ , onopen_end: null // CALLBACK when pane ENDS being Opened
+ , onclose_start: null // CALLBACK when pane STARTS to Close
+ , onclose_end: null // CALLBACK when pane ENDS being Closed
+ , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON***
+ , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON***
+ , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS
+ , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS
+ , onswap_start: null // CALLBACK when pane STARTS to Swap
+ , onswap_end: null // CALLBACK when pane ENDS being Swapped
+ , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized
+ , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized
+ }
+/*
+ * PANE-SPECIFIC SETTINGS
+ * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes'
+ * - all options under the 'panes' key can also be set specifically for any pane
+ * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane
+ */
+, north: {
+ paneSelector: ".ui-layout-north"
+ , size: "auto" // eg: "auto", "30%", .30, 200
+ , resizerCursor: "n-resize" // custom = url(myCursor.cur)
+ , customHotkey: "" // EITHER a charCode (43) OR a character ("o")
+ }
+, south: {
+ paneSelector: ".ui-layout-south"
+ , size: "auto"
+ , resizerCursor: "s-resize"
+ , customHotkey: ""
+ }
+, east: {
+ paneSelector: ".ui-layout-east"
+ , size: 200
+ , resizerCursor: "e-resize"
+ , customHotkey: ""
+ }
+, west: {
+ paneSelector: ".ui-layout-west"
+ , size: 200
+ , resizerCursor: "w-resize"
+ , customHotkey: ""
+ }
+, center: {
+ paneSelector: ".ui-layout-center"
+ , minWidth: 0
+ , minHeight: 0
+ }
+};
+
+$.layout.optionsMap = {
+ // layout/global options - NOT pane-options
+ layout: ("stateManagement,effects,zIndexes,"
+ + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages,"
+ + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay,"
+ + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",")
+// borderPanes: [ ALL options that are NOT specified as 'layout' ]
+ // default.panes options that apply to the center-pane (most options apply _only_ to border-panes)
+, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad,"
+ + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing,"
+ + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout,"
+ + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",")
+ // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key
+, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",")
+};
+
+/**
+ * Processes options passed in converts flat-format data into subkey (JSON) format
+ * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName
+ * Plugins may also call this method so they can transform their own data
+ *
+ * @param {!Object} hash Data/options passed by user - may be a single level or nested levels
+ * @return {Object} Returns hash of minWidth & minHeight
+ */
+$.layout.transformData = function (hash) {
+ var json = { panes: {}, center: {} } // init return object
+ , data, branch, optKey, keys, key, val, i, c;
+
+ if (typeof hash !== "object") return json; // no options passed
+
+ // convert all 'flat-keys' to 'sub-key' format
+ for (optKey in hash) {
+ branch = json;
+ data = $.layout.optionsMap.layout;
+ val = hash[ optKey ];
+ keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration
+ c = keys.length - 1;
+ // convert underscore-delimited to subkeys
+ for (i=0; i <= c; i++) {
+ key = keys[i];
+ if (i === c)
+ branch[key] = val;
+ else if (!branch[key])
+ branch[key] = {}; // create the subkey
+ // recurse to sub-key for next loop - if not done
+ branch = branch[key];
+ }
+ }
+
+ return json;
+}
+
+// INTERNAL CONFIG DATA - DO NOT CHANGE THIS!
+$.layout.backwardCompatibility = {
+ // data used by renameOldOptions()
+ map: {
+ // OLD Option Name: NEW Option Name
+ applyDefaultStyles: "applyDemoStyles"
+ , resizeNestedLayout: "resizeChildLayout"
+ , resizeWhileDragging: "livePaneResizing"
+ , resizeContentWhileDragging: "liveContentResizing"
+ , triggerEventsWhileDragging: "triggerEventsDuringLiveResize"
+ , maskIframesOnResize: "maskContents"
+ , useStateCookie: "stateManagement.enabled"
+ , "cookie.autoLoad": "stateManagement.autoLoad"
+ , "cookie.autoSave": "stateManagement.autoSave"
+ , "cookie.keys": "stateManagement.stateKeys"
+ , "cookie.name": "stateManagement.cookie.name"
+ , "cookie.domain": "stateManagement.cookie.domain"
+ , "cookie.path": "stateManagement.cookie.path"
+ , "cookie.expires": "stateManagement.cookie.expires"
+ , "cookie.secure": "stateManagement.cookie.secure"
+ }
+ /**
+ * @param {Object} opts
+ */
+, renameOptions: function (opts) {
+ var map = $.layout.backwardCompatibility.map
+ , oldData, newData, value
+ ;
+ for (var itemPath in map) {
+ oldData = getBranch( itemPath );
+ value = oldData.branch[ oldData.key ]
+ if (value !== undefined) {
+ newData = getBranch( map[itemPath], true )
+ newData.branch[ newData.key ] = value;
+ delete oldData.branch[ oldData.key ];
+ }
+ }
+
+ /**
+ * @param {string} path
+ * @param {boolean=} [create=false] Create path if does not exist
+ */
+ function getBranch (path, create) {
+ var a = path.split(".") // split keys into array
+ , c = a.length - 1
+ , D = { branch: opts, key: a[c] } // init branch at top & set key (last item)
+ , i = 0, k, undef;
+ for (; i<c; i++) { // skip the last key (data)
+ k = a[i];
+ if (D.branch[ k ] == undefined) { // child-key does not exist
+ if (create) {
+ D.branch = D.branch[ k ] = {}; // create child-branch
+ }
+ else // can't go any farther
+ D.branch = {}; // branch is undefined
+ }
+ else
+ D.branch = D.branch[ k ]; // get child-branch
+ }
+ return D;
+ };
+ }
+ /**
+ * @param {Object} opts
+ */
+, renameAllOptions: function (opts) {
+ var ren = $.layout.backwardCompatibility.renameOptions;
+ // rename root (layout) options
+ ren( opts );
+ // rename 'defaults' to 'panes'
+ if (opts.defaults) {
+ if (typeof opts.panes !== "object")
+ opts.panes = {};
+ $.extend(true, opts.panes, opts.defaults);
+ delete opts.defaults;
+ }
+ // rename options in the the options.panes key
+ if (opts.panes) ren( opts.panes );
+ // rename options inside *each pane key*, eg: options.west
+ $.each($.layout.config.allPanes, function (i, pane) {
+ if (opts[pane]) ren( opts[pane] );
+ });
+ return opts;
+ }
+};
+
+
+
+/* ============================================================
+ * BEGIN WIDGET: $( selector ).layout( {options} );
+ * ============================================================
+ */
+$.fn.layout = function (opts) {
+ var
+
+ // local aliases to global data
+ browser = $.layout.browser
+, lang = $.layout.language // internal alias
+, _c = $.layout.config
+
+ // local aliases to utlity methods
+, cssW = $.layout.cssWidth
+, cssH = $.layout.cssHeight
+, elDims = $.layout.getElementDimensions
+, elCSS = $.layout.getElementCSS
+, evtObj = $.layout.getEventObject
+, evtPane = $.layout.parsePaneName
+
+/**
+ * options - populated by initOptions()
+ */
+, options = $.extend(true, {}, $.layout.defaults)
+, effects = options.effects = $.extend(true, {}, $.layout.effects)
+
+/**
+ * layout-state object
+ */
+, state = {
+ // generate unique ID to use for event.namespace so can unbind only events added by 'this layout'
+ id: "layout"+ $.now() // code uses alias: sID
+ , initialized: false
+ , container: {} // init all keys
+ , north: {}
+ , south: {}
+ , east: {}
+ , west: {}
+ , center: {}
+ }
+
+/**
+ * parent/child-layout pointers
+ */
+//, hasParentLayout = false - exists ONLY inside Instance so can be set externally
+, children = {
+ north: null
+ , south: null
+ , east: null
+ , west: null
+ , center: null
+ }
+
+/*
+ * ###########################
+ * INTERNAL HELPER FUNCTIONS
+ * ###########################
+ */
+
+ /**
+ * Manages all internal timers
+ */
+, timer = {
+ data: {}
+ , set: function (s, fn, ms) { timer.clear(s); timer.data[s] = setTimeout(fn, ms); }
+ , clear: function (s) { var t=timer.data; if (t[s]) {clearTimeout(t[s]); delete t[s];} }
+ }
+
+, _log = function (msg, popup) {
+ $.layout.msg( options.name +' / '+ msg, (popup && options.showErrorMessages) );
+ }
+
+ /**
+ * Executes a Callback function after a trigger event, like resize, open or close
+ *
+ * @param {string} evtName Name of the layout callback, eg "onresize_start"
+ * @param {?string} pane This is passed only so we can pass the 'pane object' to the callback
+ * @param {?boolean} skipBoundEvents Accepts a function name, OR a comma-delimited array: [0]=function name, [1]=argument
+ */
+, _runCallbacks = function (evtName, pane, skipBoundEvents) {
+ var o = pane ? options[pane] : options
+ // names like onopen and onopen_end separate are interchangeable in options...
+ , lng = evtName + (evtName.match(/_/) ? "" : "_end")
+ , shrt = lng.match(/_end$/) ? lng.substr(0, lng.length - 4) : ""
+ , fn = o[lng]
+ , retVal = "NC" // NC = No Callback
+ , args = []
+ ;
+ if (!fn && shrt)
+ fn = o[shrt];
+
+ // first trigger the callback set in the options
+ if (fn) {
+ //try {
+ // convert function name (string) to function object
+ if (isStr( fn )) {
+ if (fn.match(/,/)) {
+ // function name cannot contain a comma,
+ // so must be a function name AND a parameter to pass
+ args = fn.split(",")
+ , fn = eval(args[0]);
+ }
+ else // just the name of an external function?
+ fn = eval(fn);
+ }
+ // execute the callback, if exists
+ if ($.isFunction( fn )) {
+ if (args.length)
+ retVal = fn(args[1]); // pass the argument parsed from 'list'
+ else if (pane && $Ps[pane])
+ // pass data: pane-name, pane-element, pane-state, pane-options, and layout-name
+ retVal = fn( pane, $Ps[pane], state[pane], options[pane], options.name );
+ else // must be a layout/container callback - pass suitable info
+ retVal = fn( Instance, state, options, options.name );
+ }
+ //}
+ //catch (ex) {}
+ }
+
+ // trigger additional events bound directly to the pane
+ if (!skipBoundEvents && retVal !== false) {
+ if (pane) { // PANE events can be bound to each pane-elements
+ $Ps[pane].triggerHandler('layoutpane'+ lng, [ pane, $Ps[pane], state[pane], options[pane], options.name ]);
+ if (shrt)
+ $Ps[pane].triggerHandler('layoutpane'+ shrt, [ pane, $Ps[pane], state[pane], options[pane], options.name ]);
+ }
+ else // LAYOUT events can be bound to the container-element
+ $N.triggerHandler('layout'+ lng, [ pane, $Ps[pane], state[pane], options[pane], options.name ]);
+ }
+
+ // ALWAYS resizeChildLayout after a resize event - even during initialization
+ if (evtName === "onresize_end" || evtName === "onsizecontent_end")
+ resizeChildLayout(pane);
+
+ return retVal;
+ }
+
+
+ /**
+ * cure iframe display issues in IE & other browsers
+ */
+, _fixIframe = function (pane) {
+ if (browser.mozilla) return; // skip FireFox - it auto-refreshes iframes onShow
+ var $P = $Ps[pane];
+ // if the 'pane' is an iframe, do it
+ if (state[pane].tagName === "IFRAME")
+ $P.css(_c.hidden).css(_c.visible);
+ else // ditto for any iframes INSIDE the pane
+ $P.find('IFRAME').css(_c.hidden).css(_c.visible);
+ }
+
+ /**
+ * @param {string} pane Can accept ONLY a 'pane' (east, west, etc)
+ * @param {number=} outerSize (optional) Can pass a width, allowing calculations BEFORE element is resized
+ * @return {number} Returns the innerHeight/Width of el by subtracting padding and borders
+ */
+, cssSize = function (pane, outerSize) {
+ var fn = _c[pane].dir=="horz" ? cssH : cssW;
+ return fn($Ps[pane], outerSize);
+ }
+
+ /**
+ * @param {string} pane Can accept ONLY a 'pane' (east, west, etc)
+ * @return {Object} Returns hash of minWidth & minHeight
+ */
+, cssMinDims = function (pane) {
+ // minWidth/Height means CSS width/height = 1px
+ var $P = $Ps[pane]
+ , dir = _c[pane].dir
+ , d = {
+ minWidth: 1001 - cssW($P, 1000)
+ , minHeight: 1001 - cssH($P, 1000)
+ }
+ ;
+ if (dir === "horz") d.minSize = d.minHeight;
+ if (dir === "vert") d.minSize = d.minWidth;
+ return d;
+ }
+
+ // TODO: see if these methods can be made more useful...
+ // TODO: *maybe* return cssW/H from these so caller can use this info
+
+ /**
+ * @param {(string|!Object)} el
+ * @param {number=} outerWidth
+ * @param {boolean=} [autoHide=false]
+ */
+, setOuterWidth = function (el, outerWidth, autoHide) {
+ var $E = el, w;
+ if (isStr(el)) $E = $Ps[el]; // west
+ else if (!el.jquery) $E = $(el);
+ w = cssW($E, outerWidth);
+ $E.css({ width: w });
+ if (w > 0) {
+ if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) {
+ $E.show().data('autoHidden', false);
+ if (!browser.mozilla) // FireFox refreshes iframes - IE does not
+ // make hidden, then visible to 'refresh' display after animation
+ $E.css(_c.hidden).css(_c.visible);
+ }
+ }
+ else if (autoHide && !$E.data('autoHidden'))
+ $E.hide().data('autoHidden', true);
+ }
+
+ /**
+ * @param {(string|!Object)} el
+ * @param {number=} outerHeight
+ * @param {boolean=} [autoHide=false]
+ */
+, setOuterHeight = function (el, outerHeight, autoHide) {
+ var $E = el, h;
+ if (isStr(el)) $E = $Ps[el]; // west
+ else if (!el.jquery) $E = $(el);
+ h = cssH($E, outerHeight);
+ $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent
+ if (h > 0 && $E.innerWidth() > 0) {
+ if (autoHide && $E.data('autoHidden')) {
+ $E.show().data('autoHidden', false);
+ if (!browser.mozilla) // FireFox refreshes iframes - IE does not
+ $E.css(_c.hidden).css(_c.visible);
+ }
+ }
+ else if (autoHide && !$E.data('autoHidden'))
+ $E.hide().data('autoHidden', true);
+ }
+
+ /**
+ * @param {(string|!Object)} el
+ * @param {number=} outerSize
+ * @param {boolean=} [autoHide=false]
+ */
+, setOuterSize = function (el, outerSize, autoHide) {
+ if (_c[pane].dir=="horz") // pane = north or south
+ setOuterHeight(el, outerSize, autoHide);
+ else // pane = east or west
+ setOuterWidth(el, outerSize, autoHide);
+ }
+
+
+ /**
+ * Converts any 'size' params to a pixel/integer size, if not already
+ * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated
+ *
+ /**
+ * @param {string} pane
+ * @param {(string|number)=} size
+ * @param {string=} [dir]
+ * @return {number}
+ */
+, _parseSize = function (pane, size, dir) {
+ if (!dir) dir = _c[pane].dir;
+
+ if (isStr(size) && size.match(/%/))
+ size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal
+
+ if (size === 0)
+ return 0;
+ else if (size >= 1)
+ return parseInt(size, 10);
+
+ var o = options, avail = 0;
+ if (dir=="horz") // north or south or center.minHeight
+ avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0);
+ else if (dir=="vert") // east or west or center.minWidth
+ avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0);
+
+ if (size === -1) // -1 == 100%
+ return avail;
+ else if (size > 0) // percentage, eg: .25
+ return round(avail * size);
+ else if (pane=="center")
+ return 0;
+ else { // size < 0 || size=='auto' || size==Missing || size==Invalid
+ // auto-size the pane
+ var dim = (dir === "horz" ? "height" : "width")
+ , $P = $Ps[pane]
+ , $C = dim === 'height' ? $Cs[pane] : false
+ , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden
+ , szP = $P.css(dim) // SAVE current pane size
+ , szC = $C ? $C.css(dim) : 0 // SAVE current content size
+ ;
+ $P.css(dim, "auto");
+ if ($C) $C.css(dim, "auto");
+ size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE
+ $P.css(dim, szP).css(vis); // RESET size & visibility
+ if ($C) $C.css(dim, szC);
+ return size;
+ }
+ }
+
+ /**
+ * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added
+ *
+ * @param {(string|!Object)} pane
+ * @param {boolean=} [inclSpace=false]
+ * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser
+ */
+, getPaneSize = function (pane, inclSpace) {
+ var
+ $P = $Ps[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , oSp = (inclSpace ? o.spacing_open : 0)
+ , cSp = (inclSpace ? o.spacing_closed : 0)
+ ;
+ if (!$P || s.isHidden)
+ return 0;
+ else if (s.isClosed || (s.isSliding && inclSpace))
+ return cSp;
+ else if (_c[pane].dir === "horz")
+ return $P.outerHeight() + oSp;
+ else // dir === "vert"
+ return $P.outerWidth() + oSp;
+ }
+
+ /**
+ * Calculate min/max pane dimensions and limits for resizing
+ *
+ * @param {string} pane
+ * @param {boolean=} [slide=false]
+ */
+, setSizeLimits = function (pane, slide) {
+ if (!isInitialized()) return;
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , dir = c.dir
+ , side = c.side.toLowerCase()
+ , type = c.sizeType.toLowerCase()
+ , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param
+ , $P = $Ps[pane]
+ , paneSpacing = o.spacing_open
+ // measure the pane on the *opposite side* from this pane
+ , altPane = _c.oppositeEdge[pane]
+ , altS = state[altPane]
+ , $altP = $Ps[altPane]
+ , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth()))
+ , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0)
+ // limitSize prevents this pane from 'overlapping' opposite pane
+ , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth)
+ , minCenterDims = cssMinDims("center")
+ , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth)
+ // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them
+ , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing)))
+ , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize )
+ , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize )
+ , r = s.resizerPosition = {} // used to set resizing limits
+ , top = sC.insetTop
+ , left = sC.insetLeft
+ , W = sC.innerWidth
+ , H = sC.innerHeight
+ , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east
+ ;
+ switch (pane) {
+ case "north": r.min = top + minSize;
+ r.max = top + maxSize;
+ break;
+ case "west": r.min = left + minSize;
+ r.max = left + maxSize;
+ break;
+ case "south": r.min = top + H - maxSize - rW;
+ r.max = top + H - minSize - rW;
+ break;
+ case "east": r.min = left + W - maxSize - rW;
+ r.max = left + W - minSize - rW;
+ break;
+ };
+ }
+
+ /**
+ * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes
+ *
+ * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height
+ */
+, calcNewCenterPaneDims = function () {
+ var d = {
+ top: getPaneSize("north", true) // true = include 'spacing' value for pane
+ , bottom: getPaneSize("south", true)
+ , left: getPaneSize("west", true)
+ , right: getPaneSize("east", true)
+ , width: 0
+ , height: 0
+ };
+
+ // NOTE: sC = state.container
+ // calc center-pane outer dimensions
+ d.width = sC.innerWidth - d.left - d.right; // outerWidth
+ d.height = sC.innerHeight - d.bottom - d.top; // outerHeight
+ // add the 'container border/padding' to get final positions relative to the container
+ d.top += sC.insetTop;
+ d.bottom += sC.insetBottom;
+ d.left += sC.insetLeft;
+ d.right += sC.insetRight;
+
+ return d;
+ }
+
+
+ /**
+ * @param {!Object} el
+ * @param {boolean=} [allStates=false]
+ */
+, getHoverClasses = function (el, allStates) {
+ var
+ $El = $(el)
+ , type = $El.data("layoutRole")
+ , pane = $El.data("layoutEdge")
+ , o = options[pane]
+ , root = o[type +"Class"]
+ , _pane = "-"+ pane // eg: "-west"
+ , _open = "-open"
+ , _closed = "-closed"
+ , _slide = "-sliding"
+ , _hover = "-hover " // NOTE the trailing space
+ , _state = $El.hasClass(root+_closed) ? _closed : _open
+ , _alt = _state === _closed ? _open : _closed
+ , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover)
+ ;
+ if (allStates) // when 'removing' classes, also remove alternate-state classes
+ classes += (root+_alt+_hover) + (root+_pane+_alt+_hover);
+
+ if (type=="resizer" && $El.hasClass(root+_slide))
+ classes += (root+_slide+_hover) + (root+_pane+_slide+_hover);
+
+ return $.trim(classes);
+ }
+, addHover = function (evt, el) {
+ var $E = $(el || this);
+ if (evt && $E.data("layoutRole") === "toggler")
+ evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar
+ $E.addClass( getHoverClasses($E) );
+ }
+, removeHover = function (evt, el) {
+ var $E = $(el || this);
+ $E.removeClass( getHoverClasses($E, true) );
+ }
+
+, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter
+ if ($.fn.disableSelection)
+ $("body").disableSelection();
+ }
+, onResizerLeave = function (evt, el) {
+ var
+ e = el || this // el is only passed when called by the timer
+ , pane = $(e).data("layoutEdge")
+ , name = pane +"ResizerLeave"
+ ;
+ timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set
+ timer.clear(name); // cancel enableSelection timer - may re/set below
+ // this method calls itself on a timer because it needs to allow
+ // enough time for dragging to kick-in and set the isResizing flag
+ // dragging has a 100ms delay set, so this delay must be >100
+ if (!el) // 1st call - mouseleave event
+ timer.set(name, function(){ onResizerLeave(evt, e); }, 200);
+ // if user is resizing, then dragStop will enableSelection(), so can skip it here
+ else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer
+ $("body").enableSelection();
+ }
+
+/*
+ * ###########################
+ * INITIALIZATION METHODS
+ * ###########################
+ */
+
+ /**
+ * Initialize the layout - called automatically whenever an instance of layout is created
+ *
+ * @see none - triggered onInit
+ * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort
+ */
+, _create = function () {
+ // initialize config/options
+ initOptions();
+ var o = options;
+
+ // TEMP state so isInitialized returns true during init process
+ state.creatingLayout = true;
+
+ // init plugins for this layout, if there are any (eg: stateManagement)
+ runPluginCallbacks( Instance, $.layout.onCreate );
+
+ // options & state have been initialized, so now run beforeLoad callback
+ // onload will CANCEL layout creation if it returns false
+ if (false === _runCallbacks("onload_start"))
+ return 'cancel';
+
+ // initialize the container element
+ _initContainer();
+
+ // bind hotkey function - keyDown - if required
+ initHotkeys();
+
+ // bind window.onunload
+ $(window).bind("unload."+ sID, unload);
+
+ // init plugins for this layout, if there are any (eg: customButtons)
+ runPluginCallbacks( Instance, $.layout.onLoad );
+
+ // if layout elements are hidden, then layout WILL NOT complete initialization!
+ // initLayoutElements will set initialized=true and run the onload callback IF successful
+ if (o.initPanes) _initLayoutElements();
+
+ delete state.creatingLayout;
+
+ return state.initialized;
+ }
+
+ /**
+ * Initialize the layout IF not already
+ *
+ * @see All methods in Instance run this test
+ * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet)
+ */
+, isInitialized = function () {
+ if (state.initialized || state.creatingLayout) return true; // already initialized
+ else return _initLayoutElements(); // try to init panes NOW
+ }
+
+ /**
+ * Initialize the layout - called automatically whenever an instance of layout is created
+ *
+ * @see _create() & isInitialized
+ * @return An object pointer to the instance created
+ */
+, _initLayoutElements = function (retry) {
+ // initialize config/options
+ var o = options;
+
+ // CANNOT init panes inside a hidden container!
+ if (!$N.is(":visible")) {
+ // handle Chrome bug where popup window 'has no height'
+ // if layout is BODY element, try again in 50ms
+ // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html
+ if ( !retry && browser.webkit && $N[0].tagName === "BODY" )
+ setTimeout(function(){ _initLayoutElements(true); }, 50);
+ return false;
+ }
+
+ // a center pane is required, so make sure it exists
+ if (!getPane("center").length) {
+ if (options.showErrorMessages)
+ _log( lang.errCenterPaneMissing, true );
+ return false;
+ }
+
+ // TEMP state so isInitialized returns true during init process
+ state.creatingLayout = true;
+
+ // update Container dims
+ $.extend(sC, elDims( $N ));
+
+ // initialize all layout elements
+ initPanes(); // size & position panes - calls initHandles() - which calls initResizable()
+
+ if (o.scrollToBookmarkOnLoad) {
+ var l = self.location;
+ if (l.hash) l.replace( l.hash ); // scrollTo Bookmark
+ }
+
+ // check to see if this layout 'nested' inside a pane
+ if (Instance.hasParentLayout)
+ o.resizeWithWindow = false;
+ // bind resizeAll() for 'this layout instance' to window.resize event
+ else if (o.resizeWithWindow)
+ $(window).bind("resize."+ sID, windowResize);
+
+ delete state.creatingLayout;
+ state.initialized = true;
+
+ // init plugins for this layout, if there are any
+ runPluginCallbacks( Instance, $.layout.onReady );
+
+ // now run the onload callback, if exists
+ _runCallbacks("onload_end");
+
+ return true; // elements initialized successfully
+ }
+
+ /**
+ * Initialize nested layouts - called when _initLayoutElements completes
+ *
+ * NOT CURRENTLY USED
+ *
+ * @see _initLayoutElements
+ * @return An object pointer to the instance created
+ */
+, _initChildLayouts = function () {
+ $.each(_c.allPanes, function (idx, pane) {
+ if (options[pane].initChildLayout)
+ createChildLayout( pane );
+ });
+ }
+
+ /**
+ * Initialize nested layouts for a specific pane - can optionally pass layout-options
+ *
+ * @see _initChildLayouts
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions
+ * @return An object pointer to the layout instance created - or null
+ */
+, createChildLayout = function (evt_or_pane, opts) {
+ var pane = evtPane.call(this, evt_or_pane)
+ , $P = $Ps[pane]
+ , C = children
+ ;
+ if ($P) {
+ var $C = $Cs[pane]
+ , o = opts || options[pane].childOptions
+ , d = "layout"
+ // determine which element is supposed to be the 'child container'
+ // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane
+ , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P)
+ , containerFound = $Cont.length
+ // see if a child-layout ALREADY exists on this element
+ , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null
+ ;
+ // if no layout exists, but childOptions are set, try to create the layout now
+ if (!child && containerFound && o)
+ child = C[pane] = $Cont.eq(0).layout(o) || null;
+ if (child)
+ child.hasParentLayout = true; // set parent-flag in child
+ }
+ Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null
+ }
+
+, windowResize = function () {
+ var delay = Number(options.resizeWithWindowDelay);
+ if (delay < 10) delay = 100; // MUST have a delay!
+ // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway
+ timer.clear("winResize"); // if already running
+ timer.set("winResize", function(){
+ timer.clear("winResize");
+ timer.clear("winResizeRepeater");
+ var dims = elDims( $N );
+ // only trigger resizeAll() if container has changed size
+ if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight)
+ resizeAll();
+ }, delay);
+ // ALSO set fixed-delay timer, if not already running
+ if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater();
+ }
+
+, setWindowResizeRepeater = function () {
+ var delay = Number(options.resizeWithWindowMaxDelay);
+ if (delay > 0)
+ timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay);
+ }
+
+, unload = function () {
+ var o = options;
+
+ _runCallbacks("onunload_start");
+
+ // trigger plugin callabacks for this layout (eg: stateManagement)
+ runPluginCallbacks( Instance, $.layout.onUnload );
+
+ _runCallbacks("onunload_end");
+ }
+
+ /**
+ * Validate and initialize container CSS and events
+ *
+ * @see _create()
+ */
+, _initContainer = function () {
+ var
+ N = $N[0]
+ , tag = sC.tagName = N.tagName
+ , id = sC.id = N.id
+ , cls = sC.className = N.className
+ , o = options
+ , name = o.name
+ , fullPage= (tag === "BODY")
+ , props = "overflow,position,margin,padding,border"
+ , css = "layoutCSS"
+ , CSS = {}
+ , hid = "hidden" // used A LOT!
+ // see if this container is a 'pane' inside an outer-layout
+ , parent = $N.data("parentLayout") // parent-layout Instance
+ , pane = $N.data("layoutEdge") // pane-name in parent-layout
+ , isChild = parent && pane
+ ;
+ // sC -> state.container
+ sC.selector = $N.selector.split(".slice")[0];
+ sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages
+
+ $N .data({
+ layout: Instance
+ , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID
+ })
+ .addClass(o.containerClass)
+ ;
+ var layoutMethods = {
+ destroy: ''
+ , initPanes: ''
+ , resizeAll: 'resizeAll'
+ , resize: 'resizeAll'
+ }
+ , name;
+ // loop hash and bind all methods - include layoutID namespacing
+ for (name in layoutMethods) {
+ $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]);
+ }
+
+ // if this container is another layout's 'pane', then set child/parent pointers
+ if (isChild) {
+ // update parent flag
+ Instance.hasParentLayout = true;
+ // set pointers to THIS child-layout (Instance) in parent-layout
+ // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE
+ parent[pane].child = parent.children[pane] = $N.data("layout");
+ }
+
+ // SAVE original container CSS for use in destroy()
+ if (!$N.data(css)) {
+ // handle props like overflow different for BODY & HTML - has 'system default' values
+ if (fullPage) {
+ CSS = $.extend( elCSS($N, props), {
+ height: $N.css("height")
+ , overflow: $N.css("overflow")
+ , overflowX: $N.css("overflowX")
+ , overflowY: $N.css("overflowY")
+ });
+ // ALSO SAVE <HTML> CSS
+ var $H = $("html");
+ $H.data(css, {
+ height: "auto" // FF would return a fixed px-size!
+ , overflow: $H.css("overflow")
+ , overflowX: $H.css("overflowX")
+ , overflowY: $H.css("overflowY")
+ });
+ }
+ else // handle props normally for non-body elements
+ CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY");
+
+ $N.data(css, CSS);
+ }
+
+ try { // format html/body if this is a full page layout
+ if (fullPage) {
+ $("html").css({
+ height: "100%"
+ , overflow: hid
+ , overflowX: hid
+ , overflowY: hid
+ });
+ $("body").css({
+ position: "relative"
+ , height: "100%"
+ , overflow: hid
+ , overflowX: hid
+ , overflowY: hid
+ , margin: 0
+ , padding: 0 // TODO: test whether body-padding could be handled?
+ , border: "none" // a body-border creates problems because it cannot be measured!
+ });
+
+ // set current layout-container dimensions
+ $.extend(sC, elDims( $N ));
+ }
+ else { // set required CSS for overflow and position
+ // ENSURE container will not 'scroll'
+ CSS = { overflow: hid, overflowX: hid, overflowY: hid }
+ var
+ p = $N.css("position")
+ , h = $N.css("height")
+ ;
+ // if this is a NESTED layout, then container/outer-pane ALREADY has position and height
+ if (!isChild) {
+ if (!p || !p.match(/fixed|absolute|relative/))
+ CSS.position = "relative"; // container MUST have a 'position'
+ /*
+ if (!h || h=="auto")
+ CSS.height = "100%"; // container MUST have a 'height'
+ */
+ }
+ $N.css( CSS );
+
+ // set current layout-container dimensions
+ if ( $N.is(":visible") ) {
+ $.extend(sC, elDims( $N ));
+ if (o.showErrorMessages && sC.innerHeight < 1)
+ _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true );
+ }
+ }
+ } catch (ex) {}
+ }
+
+ /**
+ * Bind layout hotkeys - if options enabled
+ *
+ * @see _create() and addPane()
+ * @param {string=} [panes=""] The edge(s) to process
+ */
+, initHotkeys = function (panes) {
+ panes = panes ? panes.split(",") : _c.borderPanes;
+ // bind keyDown to capture hotkeys, if option enabled for ANY pane
+ $.each(panes, function (i, pane) {
+ var o = options[pane];
+ if (o.enableCursorHotkey || o.customHotkey) {
+ $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE
+ return false; // BREAK - binding was done
+ }
+ });
+ }
+
+ /**
+ * Build final OPTIONS data
+ *
+ * @see _create()
+ */
+, initOptions = function () {
+ var data, d, pane, key, val, i, c, o;
+
+ // reprocess user's layout-options to have correct options sub-key structure
+ opts = $.layout.transformData( opts ); // panes = default subkey
+
+ // auto-rename old options for backward compatibility
+ opts = $.layout.backwardCompatibility.renameAllOptions( opts );
+
+ // if user-options has 'panes' key (pane-defaults), process it...
+ if (!$.isEmptyObject(opts.panes)) {
+ // REMOVE any pane-defaults that MUST be set per-pane
+ data = $.layout.optionsMap.noDefault;
+ for (i=0, c=data.length; i<c; i++) {
+ key = data[i];
+ delete opts.panes[key]; // OK if does not exist
+ }
+ // REMOVE any layout-options specified under opts.panes
+ data = $.layout.optionsMap.layout;
+ for (i=0, c=data.length; i<c; i++) {
+ key = data[i];
+ delete opts.panes[key]; // OK if does not exist
+ }
+ }
+
+ // MOVE any NON-layout-options to opts.panes
+ data = $.layout.optionsMap.layout;
+ var rootKeys = $.layout.config.optionRootKeys;
+ for (key in opts) {
+ val = opts[key];
+ if ($.inArray(key, rootKeys) < 0 && $.inArray(key, data) < 0) {
+ if (!opts.panes[key])
+ opts.panes[key] = $.isPlainObject(val) ? $.extend(true, {}, val) : val;
+ delete opts[key]
+ }
+ }
+
+ // START by updating ALL options from opts
+ $.extend(true, options, opts);
+
+ // CREATE final options (and config) for EACH pane
+ $.each(_c.allPanes, function (i, pane) {
+
+ // apply 'pane-defaults' to CONFIG.[PANE]
+ _c[pane] = $.extend( true, {}, _c.panes, _c[pane] );
+
+ d = options.panes;
+ o = options[pane];
+
+ // center-pane uses SOME keys in defaults.panes branch
+ if (pane === 'center') {
+ // ONLY copy keys from opts.panes listed in: $.layout.optionsMap.center
+ data = $.layout.optionsMap.center; // list of 'center-pane keys'
+ for (i=0, c=data.length; i<c; i++) { // loop the list...
+ key = data[i];
+ // only need to use pane-default if pane-specific value not set
+ if (!opts.center[key] && (opts.panes[key] || !o[key]))
+ o[key] = d[key]; // pane-default
+ }
+ }
+ else {
+ // border-panes use ALL keys in defaults.panes branch
+ o = options[pane] = $.extend({}, d, o); // re-apply pane-specific opts AFTER pane-defaults
+ createFxOptions( pane );
+ // ensure all border-pane-specific base-classes exist
+ if (!o.resizerClass) o.resizerClass = "ui-layout-resizer";
+ if (!o.togglerClass) o.togglerClass = "ui-layout-toggler";
+ }
+ // ensure we have base pane-class (ALL panes)
+ if (!o.paneClass) o.paneClass = "ui-layout-pane";
+ });
+
+ // update options.zIndexes if a zIndex-option specified
+ var zo = opts.zIndex
+ , z = options.zIndexes;
+ if (zo > 0) {
+ z.pane_normal = zo;
+ z.content_mask = max(zo+1, z.content_mask); // MIN = +1
+ z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2
+ }
+
+ function createFxOptions ( pane ) {
+ var o = options[pane]
+ , d = options.panes;
+ // ensure fxSettings key to avoid errors
+ if (!o.fxSettings) o.fxSettings = {};
+ if (!d.fxSettings) d.fxSettings = {};
+
+ $.each(["_open","_close","_size"], function (i,n) {
+ var
+ sName = "fxName"+ n
+ , sSpeed = "fxSpeed"+ n
+ , sSettings = "fxSettings"+ n
+ // recalculate fxName according to specificity rules
+ , fxName = o[sName] =
+ o[sName] // options.west.fxName_open
+ || d[sName] // options.panes.fxName_open
+ || o.fxName // options.west.fxName
+ || d.fxName // options.panes.fxName
+ || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0
+ ;
+ // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects
+ if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName])
+ fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName
+
+ // set vars for effects subkeys to simplify logic
+ var fx = options.effects[fxName] || {} // effects.slide
+ , fx_all = fx.all || null // effects.slide.all
+ , fx_pane = fx[pane] || null // effects.slide.west
+ ;
+ // create fxSpeed[_open|_close|_size]
+ o[sSpeed] =
+ o[sSpeed] // options.west.fxSpeed_open
+ || d[sSpeed] // options.west.fxSpeed_open
+ || o.fxSpeed // options.west.fxSpeed
+ || d.fxSpeed // options.panes.fxSpeed
+ || null // DEFAULT - let fxSetting.duration control speed
+ ;
+ // create fxSettings[_open|_close|_size]
+ o[sSettings] = $.extend(
+ {}
+ , fx_all // effects.slide.all
+ , fx_pane // effects.slide.west
+ , d.fxSettings // options.panes.fxSettings
+ , o.fxSettings // options.west.fxSettings
+ , d[sSettings] // options.panes.fxSettings_open
+ , o[sSettings] // options.west.fxSettings_open
+ );
+ });
+
+ // DONE creating action-specific-settings for this pane,
+ // so DELETE generic options - are no longer meaningful
+ delete o.fxName;
+ delete o.fxSpeed;
+ delete o.fxSettings;
+ }
+
+ // DELETE 'panes' key now that we are done - values were copied to EACH pane
+ delete options.panes;
+ }
+
+ /**
+ * Initialize module objects, styling, size and position for all panes
+ *
+ * @see _initElements()
+ * @param {string} pane The pane to process
+ */
+, getPane = function (pane) {
+ var sel = options[pane].paneSelector
+ if (sel.substr(0,1)==="#") // ID selector
+ // NOTE: elements selected 'by ID' DO NOT have to be 'children'
+ return $N.find(sel).eq(0);
+ else { // class or other selector
+ var $P = $N.children(sel).eq(0);
+ // look for the pane nested inside a 'form' element
+ return $P.length ? $P : $N.children("form:first").children(sel).eq(0);
+ }
+ }
+
+, initPanes = function () {
+ // NOTE: do north & south FIRST so we can measure their height - do center LAST
+ $.each(_c.allPanes, function (idx, pane) {
+ addPane( pane, true );
+ });
+
+ // init the pane-handles NOW in case we have to hide or close the pane below
+ initHandles();
+
+ // now that all panes have been initialized and initially-sized,
+ // make sure there is really enough space available for each pane
+ $.each(_c.borderPanes, function (i, pane) {
+ if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN
+ setSizeLimits(pane);
+ makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit()
+ }
+ });
+ // size center-pane AGAIN in case we 'closed' a border-pane in loop above
+ sizeMidPanes("center");
+
+ // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing!
+ // Before RC30.3, there was a 10ms delay here, but that caused layout
+ // to load asynchrously, which is BAD, so try skipping delay for now
+
+ // process pane contents and callbacks, and init/resize child-layout if exists
+ $.each(_c.allPanes, function (i, pane) {
+ var o = options[pane];
+ if ($Ps[pane]) {
+ if (state[pane].isVisible) { // pane is OPEN
+ sizeContent(pane);
+ // trigger pane.onResize if triggerEventsOnLoad = true
+ if (o.triggerEventsOnLoad)
+ _runCallbacks("onresize_end", pane);
+ else // automatic if onresize called, otherwise call it specifically
+ // resize child - IF inner-layout already exists (created before this layout)
+ resizeChildLayout(pane);
+ }
+ // init childLayout - even if pane is not visible
+ if (o.initChildLayout && o.childOptions)
+ createChildLayout(pane);
+ }
+ });
+ }
+
+ /**
+ * Add a pane to the layout - subroutine of initPanes()
+ *
+ * @see initPanes()
+ * @param {string} pane The pane to process
+ * @param {boolean=} [force=false] Size content after init
+ */
+, addPane = function (pane, force) {
+ if (!force && !isInitialized()) return;
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , fx = s.fx
+ , dir = c.dir
+ , spacing = o.spacing_open || 0
+ , isCenter = (pane === "center")
+ , CSS = {}
+ , $P = $Ps[pane]
+ , size, minSize, maxSize
+ ;
+ // if pane-pointer already exists, remove the old one first
+ if ($P)
+ removePane( pane, false, true, false );
+ else
+ $Cs[pane] = false; // init
+
+ $P = $Ps[pane] = getPane(pane);
+ if (!$P.length) {
+ $Ps[pane] = false; // logic
+ return;
+ }
+
+ // SAVE original Pane CSS
+ if (!$P.data("layoutCSS")) {
+ var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border";
+ $P.data("layoutCSS", elCSS($P, props));
+ }
+
+ // create alias for pane data in Instance - initHandles will add more
+ Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] };
+
+ // add classes, attributes & events
+ $P .data({
+ parentLayout: Instance // pointer to Layout Instance
+ , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ , layoutRole: "pane"
+ })
+ .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal)
+ .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles
+ .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector'
+ .bind("mouseenter."+ sID, addHover )
+ .bind("mouseleave."+ sID, removeHover )
+ ;
+ var paneMethods = {
+ hide: ''
+ , show: ''
+ , toggle: ''
+ , close: ''
+ , open: ''
+ , slideOpen: ''
+ , slideClose: ''
+ , slideToggle: ''
+ , size: 'manualSizePane'
+ , sizePane: 'manualSizePane'
+ , sizeContent: ''
+ , sizeHandles: ''
+ , enableClosable: ''
+ , disableClosable: ''
+ , enableSlideable: ''
+ , disableSlideable: ''
+ , enableResizable: ''
+ , disableResizable: ''
+ , swapPanes: 'swapPanes'
+ , swap: 'swapPanes'
+ , move: 'swapPanes'
+ , removePane: 'removePane'
+ , remove: 'removePane'
+ , createChildLayout: ''
+ , resizeChildLayout: ''
+ , resizeAll: 'resizeAll'
+ , resizeLayout: 'resizeAll'
+ }
+ , name;
+ // loop hash and bind all methods - include layoutID namespacing
+ for (name in paneMethods) {
+ $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]);
+ }
+
+ // see if this pane has a 'scrolling-content element'
+ initContent(pane, false); // false = do NOT sizeContent() - called later
+
+ if (!isCenter) {
+ // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden)
+ // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size'
+ size = s.size = _parseSize(pane, o.size);
+ minSize = _parseSize(pane,o.minSize) || 1;
+ maxSize = _parseSize(pane,o.maxSize) || 100000;
+ if (size > 0) size = max(min(size, maxSize), minSize);
+
+ // state for border-panes
+ s.isClosed = false; // true = pane is closed
+ s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes
+ s.isResizing= false; // true = pane is in process of being resized
+ s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible!
+
+ // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close
+ if (!s.pins) s.pins = [];
+ }
+ // states common to ALL panes
+ s.tagName = $P[0].tagName;
+ s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going)
+ s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically
+ s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic
+
+ // set css-position to account for container borders & padding
+ switch (pane) {
+ case "north": CSS.top = sC.insetTop;
+ CSS.left = sC.insetLeft;
+ CSS.right = sC.insetRight;
+ break;
+ case "south": CSS.bottom = sC.insetBottom;
+ CSS.left = sC.insetLeft;
+ CSS.right = sC.insetRight;
+ break;
+ case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes()
+ break;
+ case "east": CSS.right = sC.insetRight; // ditto
+ break;
+ case "center": // top, left, width & height set by sizeMidPanes()
+ }
+
+ if (dir === "horz") // north or south pane
+ CSS.height = cssH($P, size);
+ else if (dir === "vert") // east or west pane
+ CSS.width = cssW($P, size);
+ //else if (isCenter) {}
+
+ $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes
+ if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback
+
+ // close or hide the pane if specified in settings
+ if (o.initClosed && o.closable && !o.initHidden)
+ close(pane, true, true); // true, true = force, noAnimation
+ else if (o.initHidden || o.initClosed)
+ hide(pane); // will be completely invisible - no resizer or spacing
+ else if (!s.noRoom)
+ // make the pane visible - in case was initially hidden
+ $P.css("display","block");
+ // ELSE setAsOpen() - called later by initHandles()
+
+ // RESET visibility now - pane will appear IF display:block
+ $P.css("visibility","visible");
+
+ // check option for auto-handling of pop-ups & drop-downs
+ if (o.showOverflowOnHover)
+ $P.hover( allowOverflow, resetOverflow );
+
+ // if manually adding a pane AFTER layout initialization, then...
+ if (state.initialized) {
+ initHandles( pane );
+ initHotkeys( pane );
+ resizeAll(); // will sizeContent if pane is visible
+ if (s.isVisible) { // pane is OPEN
+ if (o.triggerEventsOnLoad)
+ _runCallbacks("onresize_end", pane);
+ else // automatic if onresize called, otherwise call it specifically
+ // resize child - IF inner-layout already exists (created before this layout)
+ resizeChildLayout(pane); // a previously existing childLayout
+ }
+ if (o.initChildLayout && o.childOptions)
+ createChildLayout(pane);
+ }
+ }
+
+ /**
+ * Initialize module objects, styling, size and position for all resize bars and toggler buttons
+ *
+ * @see _create()
+ * @param {string=} [panes=""] The edge(s) to process
+ */
+, initHandles = function (panes) {
+ panes = panes ? panes.split(",") : _c.borderPanes;
+
+ // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV
+ $.each(panes, function (i, pane) {
+ var $P = $Ps[pane];
+ $Rs[pane] = false; // INIT
+ $Ts[pane] = false;
+ if (!$P) return; // pane does not exist - skip
+
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , rClass = o.resizerClass
+ , tClass = o.togglerClass
+ , side = c.side.toLowerCase()
+ , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed)
+ , _pane = "-"+ pane // used for classNames
+ , _state = (s.isVisible ? "-open" : "-closed") // used for classNames
+ , I = Instance[pane]
+ // INIT RESIZER BAR
+ , $R = I.resizer = $Rs[pane] = $("<div></div>")
+ // INIT TOGGLER BUTTON
+ , $T = I.toggler = (o.closable ? $Ts[pane] = $("<div></div>") : false)
+ ;
+
+ //if (s.isVisible && o.resizable) ... handled by initResizable
+ if (!s.isVisible && o.slidable)
+ $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor);
+
+ $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer"
+ .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : ""))
+ .data({
+ parentLayout: Instance
+ , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ , layoutRole: "resizer"
+ })
+ .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal)
+ .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles
+ .addClass(rClass +" "+ rClass+_pane)
+ .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead
+ .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter
+ .appendTo($N) // append DIV to container
+ ;
+
+ if ($T) {
+ $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler"
+ .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : ""))
+ .data({
+ parentLayout: Instance
+ , layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ , layoutRole: "toggler"
+ })
+ .css(_c.togglers.cssReq) // add base/required styles
+ .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles
+ .addClass(tClass +" "+ tClass+_pane)
+ .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead
+ .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer
+ .appendTo($R) // append SPAN to resizer DIV
+ ;
+ // ADD INNER-SPANS TO TOGGLER
+ if (o.togglerContent_open) // ui-layout-open
+ $("<span>"+ o.togglerContent_open +"</span>")
+ .data({
+ layoutEdge: pane
+ , layoutRole: "togglerContent"
+ })
+ .data("layoutRole", "togglerContent")
+ .data("layoutEdge", pane)
+ .addClass("content content-open")
+ .css("display","none")
+ .appendTo( $T )
+ //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead!
+ ;
+ if (o.togglerContent_closed) // ui-layout-closed
+ $("<span>"+ o.togglerContent_closed +"</span>")
+ .data({
+ layoutEdge: pane
+ , layoutRole: "togglerContent"
+ })
+ .addClass("content content-closed")
+ .css("display","none")
+ .appendTo( $T )
+ //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead!
+ ;
+ // ADD TOGGLER.click/.hover
+ enableClosable(pane);
+ }
+
+ // add Draggable events
+ initResizable(pane);
+
+ // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open"
+ if (s.isVisible)
+ setAsOpen(pane); // onOpen will be called, but NOT onResize
+ else {
+ setAsClosed(pane); // onClose will be called
+ bindStartSlidingEvent(pane, true); // will enable events IF option is set
+ }
+
+ });
+
+ // SET ALL HANDLE DIMENSIONS
+ sizeHandles();
+ }
+
+
+ /**
+ * Initialize scrolling ui-layout-content div - if exists
+ *
+ * @see initPane() - or externally after an Ajax injection
+ * @param {string} [pane] The pane to process
+ * @param {boolean=} [resize=true] Size content after init
+ */
+, initContent = function (pane, resize) {
+ if (!isInitialized()) return;
+ var
+ o = options[pane]
+ , sel = o.contentSelector
+ , I = Instance[pane]
+ , $P = $Ps[pane]
+ , $C
+ ;
+ if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent)
+ ? $P.find(sel).eq(0) // match 1-element only
+ : $P.children(sel).eq(0)
+ ;
+ if ($C && $C.length) {
+ $C.data("layoutRole", "content");
+ // SAVE original Pane CSS
+ if (!$C.data("layoutCSS"))
+ $C.data("layoutCSS", elCSS($C, "height"));
+ $C.css( _c.content.cssReq );
+ if (o.applyDemoStyles) {
+ $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div
+ $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane
+ }
+ state[pane].content = {}; // init content state
+ if (resize !== false) sizeContent(pane);
+ // sizeContent() is called AFTER init of all elements
+ }
+ else
+ I.content = $Cs[pane] = false;
+ }
+
+
+ /**
+ * Add resize-bars to all panes that specify it in options
+ * -dependancy: $.fn.resizable - will skip if not found
+ *
+ * @see _create()
+ * @param {string=} [panes=""] The edge(s) to process
+ */
+, initResizable = function (panes) {
+ var draggingAvailable = $.layout.plugins.draggable
+ , side // set in start()
+ ;
+ panes = panes ? panes.split(",") : _c.borderPanes;
+
+ $.each(panes, function (idx, pane) {
+ var o = options[pane];
+ if (!draggingAvailable || !$Ps[pane] || !o.resizable) {
+ o.resizable = false;
+ return true; // skip to next
+ }
+
+ var s = state[pane]
+ , z = options.zIndexes
+ , c = _c[pane]
+ , side = c.dir=="horz" ? "top" : "left"
+ , opEdge = _c.oppositeEdge[pane]
+ , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "")
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , base = o.resizerClass
+ , lastPos = 0 // used when live-resizing
+ , r, live // set in start because may change
+ // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process
+ , resizerClass = base+"-drag" // resizer-drag
+ , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag
+ // 'helper' class is applied to the CLONED resizer-bar while it is being dragged
+ , helperClass = base+"-dragging" // resizer-dragging
+ , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging
+ , helperLimitClass = base+"-dragging-limit" // resizer-drag
+ , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag
+ , helperClassesSet = false // logic var
+ ;
+
+ if (!s.isClosed)
+ $R.attr("title", o.resizerTip)
+ .css("cursor", o.resizerCursor); // n-resize, s-resize, etc
+
+ $R.draggable({
+ containment: $N[0] // limit resizing to layout container
+ , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis
+ , delay: 0
+ , distance: 1
+ , grid: o.resizingGrid
+ // basic format for helper - style it using class: .ui-draggable-dragging
+ , helper: "clone"
+ , opacity: o.resizerDragOpacity
+ , addClasses: false // avoid ui-state-disabled class when disabled
+ //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed
+ , zIndex: z.resizer_drag
+
+ , start: function (e, ui) {
+ // REFRESH options & state pointers in case we used swapPanes
+ o = options[pane];
+ s = state[pane];
+ // re-read options
+ live = o.livePaneResizing;
+
+ // ondrag_start callback - will CANCEL hide if returns false
+ // TODO: dragging CANNOT be cancelled like this, so see if there is a way?
+ if (false === _runCallbacks("ondrag_start", pane)) return false;
+
+ s.isResizing = true; // prevent pane from closing while resizing
+ timer.clear(pane+"_closeSlider"); // just in case already triggered
+
+ // SET RESIZER LIMITS - used in drag()
+ setSizeLimits(pane); // update pane/resizer state
+ r = s.resizerPosition;
+ lastPos = ui.position[ side ]
+
+ $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes
+ helperClassesSet = false; // reset logic var - see drag()
+
+ // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver)
+ $('body').disableSelection();
+
+ // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS
+ showMasks( masks );
+ }
+
+ , drag: function (e, ui) {
+ if (!helperClassesSet) { // can only add classes after clone has been added to the DOM
+ //$(".ui-draggable-dragging")
+ ui.helper
+ .addClass( helperClass +" "+ helperPaneClass ) // add helper classes
+ .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue
+ .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar
+ ;
+ helperClassesSet = true;
+ // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane!
+ if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding);
+ }
+ // CONTAIN RESIZER-BAR TO RESIZING LIMITS
+ var limit = 0;
+ if (ui.position[side] < r.min) {
+ ui.position[side] = r.min;
+ limit = -1;
+ }
+ else if (ui.position[side] > r.max) {
+ ui.position[side] = r.max;
+ limit = 1;
+ }
+ // ADD/REMOVE dragging-limit CLASS
+ if (limit) {
+ ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit
+ window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning;
+ }
+ else {
+ ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit
+ window.defaultStatus = "";
+ }
+ // DYNAMICALLY RESIZE PANES IF OPTION ENABLED
+ // won't trigger unless resizer has actually moved!
+ if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) {
+ lastPos = ui.position[side];
+ resizePanes(e, ui, pane)
+ }
+ }
+
+ , stop: function (e, ui) {
+ $('body').enableSelection(); // RE-ENABLE TEXT SELECTION
+ window.defaultStatus = ""; // clear 'resizing limit' message from statusbar
+ $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer
+ s.isResizing = false;
+ resizePanes(e, ui, pane, true, masks); // true = resizingDone
+ }
+
+ });
+ });
+
+ /**
+ * resizePanes
+ *
+ * Sub-routine called from stop() - and drag() if livePaneResizing
+ *
+ * @param {!Object} evt
+ * @param {!Object} ui
+ * @param {string} pane
+ * @param {boolean=} [resizingDone=false]
+ */
+ var resizePanes = function (evt, ui, pane, resizingDone, masks) {
+ var dragPos = ui.position
+ , c = _c[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , resizerPos
+ ;
+ switch (pane) {
+ case "north": resizerPos = dragPos.top; break;
+ case "west": resizerPos = dragPos.left; break;
+ case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break;
+ case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break;
+ };
+ // remove container margin from resizer position to get the pane size
+ var newSize = resizerPos - sC["inset"+ c.side];
+
+ // Disable OR Resize Mask(s) created in drag.start
+ if (!resizingDone) {
+ // ensure we meet liveResizingTolerance criteria
+ if (Math.abs(newSize - s.size) < o.liveResizingTolerance)
+ return; // SKIP resize this time
+ // resize the pane
+ manualSizePane(pane, newSize, false, true); // true = noAnimation
+ sizeMasks(); // resize all visible masks
+ }
+ else { // resizingDone
+ // ondrag_end callback
+ if (false !== _runCallbacks("ondrag_end", pane))
+ manualSizePane(pane, newSize, false, true); // true = noAnimation
+ hideMasks(); // hide all masks, which include panes with 'content/iframe-masks'
+ if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane
+ showMasks( masks, true ); // true = onlyForObjects
+ }
+ };
+ }
+
+ /**
+ * sizeMask
+ *
+ * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane
+ * Called when mask created, and during livePaneResizing
+ */
+, sizeMask = function () {
+ var $M = $(this)
+ , pane = $M.data("layoutMask") // eg: "west"
+ , s = state[pane]
+ ;
+ // only masks over an IFRAME-pane need manual resizing
+ if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes
+ $M.css({
+ top: s.offsetTop
+ , left: s.offsetLeft
+ , width: s.outerWidth
+ , height: s.outerHeight
+ });
+ /* ALT Method...
+ var $P = $Ps[pane];
+ $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight });
+ */
+ }
+, sizeMasks = function () {
+ $Ms.each( sizeMask ); // resize all 'visible' masks
+ }
+
+, showMasks = function (panes, onlyForObjects) {
+ var a = panes ? panes.split(",") : $.layout.config.allPanes
+ , z = options.zIndexes
+ , o, s;
+ $.each(a, function(i,p){
+ s = state[p];
+ o = options[p];
+ if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) {
+ getMasks(p).each(function(){
+ sizeMask.call(this);
+ this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1
+ this.style.display = "block";
+ });
+ }
+ });
+ }
+
+, hideMasks = function () {
+ // ensure no pane is resizing - could be a timing issue
+ var skip;
+ $.each( $.layout.config.borderPanes, function(i,p){
+ if (state[p].isResizing) {
+ skip = true;
+ return false; // BREAK
+ }
+ });
+ if (!skip)
+ $Ms.hide(); // hide ALL masks
+ }
+
+, getMasks = function (pane) {
+ var $Masks = $([])
+ , $M, i = 0, c = $Ms.length
+ ;
+ for (; i<c; i++) {
+ $M = $Ms.eq(i);
+ if ($M.data("layoutMask") === pane)
+ $Masks = $Masks.add( $M );
+ }
+ if ($Masks.length)
+ return $Masks;
+ else
+ return createMasks(pane);
+ }
+
+ /**
+ * createMasks
+ *
+ * Generates both DIV (ALWAYS used) and IFRAME (optional) elements as masks
+ * An IFRAME mask is created *under* the DIV when maskObjects=true, because a DIV cannot mask an applet
+ */
+, createMasks = function (pane) {
+ var
+ $P = $Ps[pane]
+ , s = state[pane]
+ , o = options[pane]
+ , z = options.zIndexes
+ //, objMask = o.maskObjects && s.tagName != "IFRAME" // check for option
+ , $Masks = $([])
+ , isIframe, el, $M, css, i
+ ;
+ if (!o.maskContents && !o.maskObjects) return $Masks;
+ // if o.maskObjects=true, then loop TWICE to create BOTH kinds of mask, else only create a DIV
+ for (i=0; i < (o.maskObjects ? 2 : 1); i++) {
+ isIframe = o.maskObjects && i==0;
+ el = document.createElement( isIframe ? "iframe" : "div" );
+ $M = $(el).data("layoutMask", pane); // add data to relate mask to pane
+ el.className = "ui-layout-mask ui-layout-mask-"+ pane; // for user styling
+ css = el.style;
+ // styles common to both DIVs and IFRAMES
+ css.display = "block";
+ css.position = "absolute";
+ if (isIframe) { // IFRAME-only props
+ el.frameborder = 0;
+ el.src = "about:blank";
+ css.opacity = 0;
+ css.filter = "Alpha(Opacity='0')";
+ css.border = 0;
+ }
+ // if pane is an IFRAME, then must mask the pane itself
+ if (s.tagName == "IFRAME") {
+ // NOTE sizing done by a subroutine so can be called during live-resizing
+ css.zIndex = z.pane_normal+1; // 1-higher than pane
+ $N.append( el ); // append to LAYOUT CONTAINER
+ }
+ // otherwise put masks *inside the pane* to mask its contents
+ else {
+ $M.addClass("ui-layout-mask-inside-pane");
+ css.zIndex = o.maskZindex || z.content_mask; // usually 1, but customizable
+ css.top = 0;
+ css.left = 0;
+ css.width = "100%";
+ css.height = "100%";
+ $P.append( el ); // append INSIDE pane element
+ }
+ // add to return object
+ $Masks = $Masks.add( el );
+ // add Mask to cached array so can be resized & reused
+ $Ms = $Ms.add( el );
+ }
+ return $Masks;
+ }
+
+
+ /**
+ * Destroy this layout and reset all elements
+ *
+ * @param {boolean=} [destroyChildren=false] Destory Child-Layouts first?
+ */
+, destroy = function (destroyChildren) {
+ // UNBIND layout events and remove global object
+ $(window).unbind("."+ sID); // resize & unload
+ $(document).unbind("."+ sID); // keyDown (hotkeys)
+
+ // need to look for parent layout BEFORE we remove the container data, else skips a level
+ //var parentPane = Instance.hasParentLayout ? $.layout.getParentPaneInstance( $N ) : null;
+
+ // reset layout-container
+ $N .clearQueue()
+ .removeData("layout")
+ .removeData("layoutContainer")
+ .removeClass(options.containerClass)
+ .unbind("."+ sID) // remove ALL Layout events
+ ;
+
+ // remove all mask elements that have been created
+ $Ms.remove();
+
+ // loop all panes to remove layout classes, attributes and bindings
+ $.each(_c.allPanes, function (i, pane) {
+ removePane( pane, false, true, destroyChildren ); // true = skipResize
+ });
+
+ // do NOT reset container CSS if is a 'pane' (or 'content') in an outer-layout - ie, THIS layout is 'nested'
+ var css = "layoutCSS";
+ if ($N.data(css) && !$N.data("layoutRole")) // RESET CSS
+ $N.css( $N.data(css) ).removeData(css);
+
+ // for full-page layouts, also reset the <HTML> CSS
+ if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET <HTML> CSS
+ $N.css( $N.data(css) ).removeData(css);
+
+ // trigger plugins for this layout, if there are any
+ runPluginCallbacks( Instance, $.layout.onDestroy );
+
+ // trigger state-management and onunload callback
+ unload();
+
+ // clear the Instance of everything except for container & options (so could recreate)
+ // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options );
+ for (n in Instance)
+ if (!n.match(/^(container|options)$/)) delete Instance[ n ];
+ // add a 'destroyed' flag to make it easy to check
+ Instance.destroyed = true;
+
+ // if this is a child layout, CLEAR the child-pointer in the parent
+ /* for now the pointer REMAINS, but with only container, options and destroyed keys
+ if (parentPane) {
+ var layout = parentPane.pane.data("parentLayout");
+ parentPane.child = layout.children[ parentPane.name ] = null;
+ }
+ */
+
+ return Instance; // for coding convenience
+ }
+
+ /**
+ * Remove a pane from the layout - subroutine of destroy()
+ *
+ * @see destroy()
+ * @param {string} pane The pane to process
+ * @param {boolean=} [remove=false] Remove the DOM element?
+ * @param {boolean=} [skipResize=false] Skip calling resizeAll()?
+ */
+, removePane = function (evt_or_pane, remove, skipResize, destroyChild) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $P = $Ps[pane]
+ , $C = $Cs[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ ;
+ //alert( '$P.length = '+ $P.length );
+ // NOTE: elements can still exist even after remove()
+ // so check for missing data(), which is cleared by removed()
+ if ($P && $.isEmptyObject( $P.data() )) $P = false;
+ if ($C && $.isEmptyObject( $C.data() )) $C = false;
+ if ($R && $.isEmptyObject( $R.data() )) $R = false;
+ if ($T && $.isEmptyObject( $T.data() )) $T = false;
+
+ if ($P) $P.stop(true, true);
+
+ // check for a child layout
+ var o = options[pane]
+ , s = state[pane]
+ , d = "layout"
+ , css = "layoutCSS"
+ , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null
+ , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout
+ ;
+
+ // FIRST destroy the child-layout(s)
+ if (destroy && child && !child.destroyed) {
+ child.destroy(true); // tell child-layout to destroy ALL its child-layouts too
+ if (child.destroyed) // destroy was successful
+ child = null; // clear pointer for logic below
+ }
+
+ if ($P && remove && !child)
+ $P.remove();
+ else if ($P && $P[0]) {
+ // create list of ALL pane-classes that need to be removed
+ var root = o.paneClass // default="ui-layout-pane"
+ , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west"
+ , _open = "-open"
+ , _sliding= "-sliding"
+ , _closed = "-closed"
+ , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes
+ pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes
+ ;
+ $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes
+ // remove all Layout classes from pane-element
+ $P .removeClass( classes.join(" ") ) // remove ALL pane-classes
+ .removeData("parentLayout")
+ .removeData("layoutPane")
+ .removeData("layoutRole")
+ .removeData("layoutEdge")
+ .removeData("autoHidden") // in case set
+ .unbind("."+ sID) // remove ALL Layout events
+ // TODO: remove these extra unbind commands when jQuery is fixed
+ //.unbind("mouseenter"+ sID)
+ //.unbind("mouseleave"+ sID)
+ ;
+ // do NOT reset CSS if this pane/content is STILL the container of a nested layout!
+ // the nested layout will reset its 'container' CSS when/if it is destroyed
+ if ($C && $C.data(d)) {
+ // a content-div may not have a specific width, so give it one to contain the Layout
+ $C.width( $C.width() );
+ child.resizeAll(); // now resize the Layout
+ }
+ else if ($C)
+ $C.css( $C.data(css) ).removeData(css).removeData("layoutRole");
+ // remove pane AFTER content in case there was a nested layout
+ if (!$P.data(d))
+ $P.css( $P.data(css) ).removeData(css);
+ }
+
+ // REMOVE pane resizer and toggler elements
+ if ($T) $T.remove();
+ if ($R) $R.remove();
+
+ // CLEAR all pointers and state data
+ Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false;
+ s = { removed: true };
+
+ if (!skipResize)
+ resizeAll();
+ }
+
+
+/*
+ * ###########################
+ * ACTION METHODS
+ * ###########################
+ */
+
+, _hidePane = function (pane) {
+ var $P = $Ps[pane]
+ , o = options[pane]
+ , s = $P[0].style
+ ;
+ if (o.useOffscreenClose) {
+ if (!$P.data(_c.offscreenReset))
+ $P.data(_c.offscreenReset, { left: s.left, right: s.right });
+ $P.css( _c.offscreenCSS );
+ }
+ else
+ $P.hide().removeData(_c.offscreenReset);
+ }
+
+, _showPane = function (pane) {
+ var $P = $Ps[pane]
+ , o = options[pane]
+ , off = _c.offscreenCSS
+ , old = $P.data(_c.offscreenReset)
+ , s = $P[0].style
+ ;
+ $P .show() // ALWAYS show, just in case
+ .removeData(_c.offscreenReset);
+ if (o.useOffscreenClose && old) {
+ if (s.left == off.left)
+ s.left = old.left;
+ if (s.right == off.right)
+ s.right = old.right;
+ }
+ }
+
+
+ /**
+ * Completely 'hides' a pane, including its spacing - as if it does not exist
+ * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it
+ *
+ * @param {string} pane The pane being hidden, ie: north, south, east, or west
+ * @param {boolean=} [noAnimation=false]
+ */
+, hide = function (evt_or_pane, noAnimation) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ ;
+ if (!$P || s.isHidden) return; // pane does not exist OR is already hidden
+
+ // onhide_start callback - will CANCEL hide if returns false
+ if (state.initialized && false === _runCallbacks("onhide_start", pane)) return;
+
+ s.isSliding = false; // just in case
+
+ // now hide the elements
+ if ($R) $R.hide(); // hide resizer-bar
+ if (!state.initialized || s.isClosed) {
+ s.isClosed = true; // to trigger open-animation on show()
+ s.isHidden = true;
+ s.isVisible = false;
+ if (!state.initialized)
+ _hidePane(pane); // no animation when loading page
+ sizeMidPanes(_c[pane].dir === "horz" ? "" : "center");
+ if (state.initialized || o.triggerEventsOnLoad)
+ _runCallbacks("onhide_end", pane);
+ }
+ else {
+ s.isHiding = true; // used by onclose
+ close(pane, false, noAnimation); // adjust all panes to fit
+ }
+ }
+
+ /**
+ * Show a hidden pane - show as 'closed' by default unless openPane = true
+ *
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ * @param {boolean=} [openPane=false]
+ * @param {boolean=} [noAnimation=false]
+ * @param {boolean=} [noAlert=false]
+ */
+, show = function (evt_or_pane, openPane, noAnimation, noAlert) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ ;
+ if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden
+
+ // onshow_start callback - will CANCEL show if returns false
+ if (false === _runCallbacks("onshow_start", pane)) return;
+
+ s.isSliding = false; // just in case
+ s.isShowing = true; // used by onopen/onclose
+ //s.isHidden = false; - will be set by open/close - if not cancelled
+
+ // now show the elements
+ //if ($R) $R.show(); - will be shown by open/close
+ if (openPane === false)
+ close(pane, true); // true = force
+ else
+ open(pane, false, noAnimation, noAlert); // adjust all panes to fit
+ }
+
+
+ /**
+ * Toggles a pane open/closed by calling either open or close
+ *
+ * @param {string} pane The pane being toggled, ie: north, south, east, or west
+ * @param {boolean=} [slide=false]
+ */
+, toggle = function (evt_or_pane, slide) {
+ if (!isInitialized()) return;
+ var evt = evtObj(evt_or_pane)
+ , pane = evtPane.call(this, evt_or_pane)
+ , s = state[pane]
+ ;
+ if (evt) // called from to $R.dblclick OR triggerPaneEvent
+ evt.stopImmediatePropagation();
+ if (s.isHidden)
+ show(pane); // will call 'open' after unhiding it
+ else if (s.isClosed)
+ open(pane, !!slide);
+ else
+ close(pane);
+ }
+
+
+ /**
+ * Utility method used during init or other auto-processes
+ *
+ * @param {string} pane The pane being closed
+ * @param {boolean=} [setHandles=false]
+ */
+, _closePane = function (pane, setHandles) {
+ var
+ $P = $Ps[pane]
+ , s = state[pane]
+ ;
+ _hidePane(pane);
+ s.isClosed = true;
+ s.isVisible = false;
+ // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force
+ }
+
+ /**
+ * Close the specified pane (animation optional), and resize all other panes as needed
+ *
+ * @param {string} pane The pane being closed, ie: north, south, east, or west
+ * @param {boolean=} [force=false]
+ * @param {boolean=} [noAnimation=false]
+ * @param {boolean=} [skipCallback=false]
+ */
+, close = function (evt_or_pane, force, noAnimation, skipCallback) {
+ var pane = evtPane.call(this, evt_or_pane);
+ // if pane has been initialized, but NOT the complete layout, close pane instantly
+ if (!state.initialized && $Ps[pane]) {
+ _closePane(pane); // INIT pane as closed
+ return;
+ }
+ if (!isInitialized()) return;
+
+ var
+ $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , doFX, isShowing, isHiding, wasSliding;
+
+ // QUEUE in case another action/animation is in progress
+ $N.queue(function( queueNext ){
+
+ if ( !$P
+ || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ???
+ || (!force && s.isClosed && !s.isShowing) // already closed
+ ) return queueNext();
+
+ // onclose_start callback - will CANCEL hide if returns false
+ // SKIP if just 'showing' a hidden pane as 'closed'
+ var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane);
+
+ // transfer logic vars to temp vars
+ isShowing = s.isShowing;
+ isHiding = s.isHiding;
+ wasSliding = s.isSliding;
+ // now clear the logic vars (REQUIRED before aborting)
+ delete s.isShowing;
+ delete s.isHiding;
+
+ if (abort) return queueNext();
+
+ doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none");
+ s.isMoving = true;
+ s.isClosed = true;
+ s.isVisible = false;
+ // update isHidden BEFORE sizing panes
+ if (isHiding) s.isHidden = true;
+ else if (isShowing) s.isHidden = false;
+
+ if (s.isSliding) // pane is being closed, so UNBIND trigger events
+ bindStopSlidingEvents(pane, false); // will set isSliding=false
+ else // resize panes adjacent to this one
+ sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback
+
+ // if this pane has a resizer bar, move it NOW - before animation
+ setAsClosed(pane);
+
+ // CLOSE THE PANE
+ if (doFX) { // animate the close
+ // mask panes with objects
+ var masks = "center"+ (c.dir=="horz" ? ",west,east" : "");
+ showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true
+ lockPaneForFX(pane, true); // need to set left/top so animation will work
+ $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () {
+ lockPaneForFX(pane, false); // undo
+ if (s.isClosed) close_2();
+ queueNext();
+ });
+ }
+ else { // hide the pane without animation
+ _hidePane(pane);
+ close_2();
+ queueNext();
+ };
+ });
+
+ // SUBROUTINE
+ function close_2 () {
+ s.isMoving = false;
+ bindStartSlidingEvent(pane, true); // will enable if o.slidable = true
+
+ // if opposite-pane was autoClosed, see if it can be autoOpened now
+ var altPane = _c.oppositeEdge[pane];
+ if (state[ altPane ].noRoom) {
+ setSizeLimits( altPane );
+ makePaneFit( altPane );
+ }
+
+ // hide any masks shown while closing
+ hideMasks();
+
+ if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) {
+ // onclose callback - UNLESS just 'showing' a hidden pane as 'closed'
+ if (!isShowing) _runCallbacks("onclose_end", pane);
+ // onhide OR onshow callback
+ if (isShowing) _runCallbacks("onshow_end", pane);
+ if (isHiding) _runCallbacks("onhide_end", pane);
+ }
+ }
+ }
+
+ /**
+ * @param {string} pane The pane just closed, ie: north, south, east, or west
+ */
+, setAsClosed = function (pane) {
+ var
+ $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , side = _c[pane].side.toLowerCase()
+ , inset = "inset"+ _c[pane].side
+ , rClass = o.resizerClass
+ , tClass = o.togglerClass
+ , _pane = "-"+ pane // used for classNames
+ , _open = "-open"
+ , _sliding= "-sliding"
+ , _closed = "-closed"
+ ;
+ $R
+ .css(side, sC[inset]) // move the resizer
+ .removeClass( rClass+_open +" "+ rClass+_pane+_open )
+ .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+ .addClass( rClass+_closed +" "+ rClass+_pane+_closed )
+ .unbind("dblclick."+ sID)
+ ;
+ // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent?
+ if (o.resizable && $.layout.plugins.draggable)
+ $R
+ .draggable("disable")
+ .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here
+ .css("cursor", "default")
+ .attr("title","")
+ ;
+
+ // if pane has a toggler button, adjust that too
+ if ($T) {
+ $T
+ .removeClass( tClass+_open +" "+ tClass+_pane+_open )
+ .addClass( tClass+_closed +" "+ tClass+_pane+_closed )
+ .attr("title", o.togglerTip_closed) // may be blank
+ ;
+ // toggler-content - if exists
+ $T.children(".content-open").hide();
+ $T.children(".content-closed").css("display","block");
+ }
+
+ // sync any 'pin buttons'
+ syncPinBtns(pane, false);
+
+ if (state.initialized) {
+ // resize 'length' and position togglers for adjacent panes
+ sizeHandles();
+ }
+ }
+
+ /**
+ * Open the specified pane (animation optional), and resize all other panes as needed
+ *
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ * @param {boolean=} [slide=false]
+ * @param {boolean=} [noAnimation=false]
+ * @param {boolean=} [noAlert=false]
+ */
+, open = function (evt_or_pane, slide, noAnimation, noAlert) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , doFX, isShowing
+ ;
+ // QUEUE in case another action/animation is in progress
+ $N.queue(function( queueNext ){
+
+ if ( !$P
+ || (!o.resizable && !o.closable && !s.isShowing) // invalid request
+ || (s.isVisible && !s.isSliding) // already open
+ ) return queueNext();
+
+ // pane can ALSO be unhidden by just calling show(), so handle this scenario
+ if (s.isHidden && !s.isShowing) {
+ queueNext(); // call before show() because it needs the queue free
+ show(pane, true);
+ return;
+ }
+
+ if (o.autoResize && s.size != o.size) // resize pane to original size set in options
+ sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation
+ else
+ // make sure there is enough space available to open the pane
+ setSizeLimits(pane, slide);
+
+ // onopen_start callback - will CANCEL open if returns false
+ var cbReturn = _runCallbacks("onopen_start", pane);
+
+ if (cbReturn === "abort")
+ return queueNext();
+
+ // update pane-state again in case options were changed in onopen_start
+ if (cbReturn !== "NC") // NC = "No Callback"
+ setSizeLimits(pane, slide);
+
+ if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN!
+ syncPinBtns(pane, false); // make sure pin-buttons are reset
+ if (!noAlert && o.noRoomToOpenTip)
+ alert(o.noRoomToOpenTip);
+ return queueNext(); // ABORT
+ }
+
+ if (slide) // START Sliding - will set isSliding=true
+ bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
+ else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead
+ bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false
+ else if (o.slidable)
+ bindStartSlidingEvent(pane, false); // UNBIND trigger events
+
+ s.noRoom = false; // will be reset by makePaneFit if 'noRoom'
+ makePaneFit(pane);
+
+ // transfer logic var to temp var
+ isShowing = s.isShowing;
+ // now clear the logic var
+ delete s.isShowing;
+
+ doFX = !noAnimation && s.isClosed && (o.fxName_open != "none");
+ s.isMoving = true;
+ s.isVisible = true;
+ s.isClosed = false;
+ // update isHidden BEFORE sizing panes - WHY??? Old?
+ if (isShowing) s.isHidden = false;
+
+ if (doFX) { // ANIMATE
+ // mask panes with objects
+ var masks = "center"+ (c.dir=="horz" ? ",west,east" : "");
+ if (s.isSliding) masks += ","+ _c.oppositeEdge[pane];
+ showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true
+ lockPaneForFX(pane, true); // need to set left/top so animation will work
+ $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() {
+ lockPaneForFX(pane, false); // undo
+ if (s.isVisible) open_2(); // continue
+ queueNext();
+ });
+ }
+ else { // no animation
+ _showPane(pane);// just show pane and...
+ open_2(); // continue
+ queueNext();
+ };
+ });
+
+ // SUBROUTINE
+ function open_2 () {
+ s.isMoving = false;
+
+ // cure iframe display issues
+ _fixIframe(pane);
+
+ // NOTE: if isSliding, then other panes are NOT 'resized'
+ if (!s.isSliding) { // resize all panes adjacent to this one
+ hideMasks(); // remove any masks shown while opening
+ sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback
+ }
+
+ // set classes, position handles and execute callbacks...
+ setAsOpen(pane);
+ };
+
+ }
+
+ /**
+ * @param {string} pane The pane just opened, ie: north, south, east, or west
+ * @param {boolean=} [skipCallback=false]
+ */
+, setAsOpen = function (pane, skipCallback) {
+ var
+ $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , side = _c[pane].side.toLowerCase()
+ , inset = "inset"+ _c[pane].side
+ , rClass = o.resizerClass
+ , tClass = o.togglerClass
+ , _pane = "-"+ pane // used for classNames
+ , _open = "-open"
+ , _closed = "-closed"
+ , _sliding= "-sliding"
+ ;
+ $R
+ .css(side, sC[inset] + getPaneSize(pane)) // move the resizer
+ .removeClass( rClass+_closed +" "+ rClass+_pane+_closed )
+ .addClass( rClass+_open +" "+ rClass+_pane+_open )
+ ;
+ if (s.isSliding)
+ $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+ else // in case 'was sliding'
+ $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding )
+
+ if (o.resizerDblClickToggle)
+ $R.bind("dblclick", toggle );
+ removeHover( 0, $R ); // remove hover classes
+ if (o.resizable && $.layout.plugins.draggable)
+ $R .draggable("enable")
+ .css("cursor", o.resizerCursor)
+ .attr("title", o.resizerTip);
+ else if (!s.isSliding)
+ $R.css("cursor", "default"); // n-resize, s-resize, etc
+
+ // if pane also has a toggler button, adjust that too
+ if ($T) {
+ $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed )
+ .addClass( tClass+_open +" "+ tClass+_pane+_open )
+ .attr("title", o.togglerTip_open); // may be blank
+ removeHover( 0, $T ); // remove hover classes
+ // toggler-content - if exists
+ $T.children(".content-closed").hide();
+ $T.children(".content-open").css("display","block");
+ }
+
+ // sync any 'pin buttons'
+ syncPinBtns(pane, !s.isSliding);
+
+ // update pane-state dimensions - BEFORE resizing content
+ $.extend(s, elDims($P));
+
+ if (state.initialized) {
+ // resize resizer & toggler sizes for all panes
+ sizeHandles();
+ // resize content every time pane opens - to be sure
+ sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving'
+ }
+
+ if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) {
+ // onopen callback
+ _runCallbacks("onopen_end", pane);
+ // onshow callback - TODO: should this be here?
+ if (s.isShowing) _runCallbacks("onshow_end", pane);
+
+ // ALSO call onresize because layout-size *may* have changed while pane was closed
+ if (state.initialized)
+ _runCallbacks("onresize_end", pane);
+ }
+
+ // TODO: Somehow sizePane("north") is being called after this point???
+ }
+
+
+ /**
+ * slideOpen / slideClose / slideToggle
+ *
+ * Pass-though methods for sliding
+ */
+, slideOpen = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var evt = evtObj(evt_or_pane)
+ , pane = evtPane.call(this, evt_or_pane)
+ , s = state[pane]
+ , delay = options[pane].slideDelay_open
+ ;
+ // prevent event from triggering on NEW resizer binding created below
+ if (evt) evt.stopImmediatePropagation();
+
+ if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0)
+ // trigger = mouseenter - use a delay
+ timer.set(pane+"_openSlider", open_NOW, delay);
+ else
+ open_NOW(); // will unbind events if is already open
+
+ /**
+ * SUBROUTINE for timed open
+ */
+ function open_NOW () {
+ if (!s.isClosed) // skip if no longer closed!
+ bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane
+ else if (!s.isMoving)
+ open(pane, true); // true = slide - open() will handle binding
+ };
+ }
+
+, slideClose = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var evt = evtObj(evt_or_pane)
+ , pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override
+ ;
+ if (s.isClosed || s.isResizing)
+ return; // skip if already closed OR in process of resizing
+ else if (o.slideTrigger_close === "click")
+ close_NOW(); // close immediately onClick
+ else if (o.preventQuickSlideClose && s.isMoving)
+ return; // handle Chrome quick-close on slide-open
+ else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane]))
+ return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE
+ else if (evt) // trigger = mouseleave - use a delay
+ // 1 sec delay if 'opening', else .3 sec
+ timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay));
+ else // called programically
+ close_NOW();
+
+ /**
+ * SUBROUTINE for timed close
+ */
+ function close_NOW () {
+ if (s.isClosed) // skip 'close' if already closed!
+ bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here?
+ else if (!s.isMoving)
+ close(pane); // close will handle unbinding
+ };
+ }
+
+ /**
+ * @param {string} pane The pane being opened, ie: north, south, east, or west
+ */
+, slideToggle = function (evt_or_pane) {
+ var pane = evtPane.call(this, evt_or_pane);
+ toggle(pane, true);
+ }
+
+
+ /**
+ * Must set left/top on East/South panes so animation will work properly
+ *
+ * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored!
+ * @param {boolean} doLock true = set left/top, false = remove
+ */
+, lockPaneForFX = function (pane, doLock) {
+ var $P = $Ps[pane]
+ , s = state[pane]
+ , o = options[pane]
+ , z = options.zIndexes
+ ;
+ if (doLock) {
+ $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation
+ if (pane=="south")
+ $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() });
+ else if (pane=="east")
+ $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() });
+ }
+ else { // animation DONE - RESET CSS
+ // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome
+ $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) });
+ if (pane=="south")
+ $P.css({ top: "auto" });
+ // if pane is positioned 'off-screen', then DO NOT screw with it!
+ else if (pane=="east" && !$P.css("left").match(/\-99999/))
+ $P.css({ left: "auto" });
+ // fix anti-aliasing in IE - only needed for animations that change opacity
+ if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1)
+ $P[0].style.removeAttribute('filter');
+ }
+ }
+
+
+ /**
+ * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger
+ *
+ * @see open(), close()
+ * @param {string} pane The pane to enable/disable, 'north', 'south', etc.
+ * @param {boolean} enable Enable or Disable sliding?
+ */
+, bindStartSlidingEvent = function (pane, enable) {
+ var o = options[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , evtName = o.slideTrigger_open.toLowerCase()
+ ;
+ if (!$R || (enable && !o.slidable)) return;
+
+ // make sure we have a valid event
+ if (evtName.match(/mouseover/))
+ evtName = o.slideTrigger_open = "mouseenter";
+ else if (!evtName.match(/click|dblclick|mouseenter/))
+ evtName = o.slideTrigger_open = "click";
+
+ $R
+ // add or remove event
+ [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen)
+ // set the appropriate cursor & title/tip
+ .css("cursor", enable ? o.sliderCursor : "default")
+ .attr("title", enable ? o.sliderTip : "")
+ ;
+ }
+
+ /**
+ * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed
+ * Also increases zIndex when pane is sliding open
+ * See bindStartSlidingEvent for code to control 'slide open'
+ *
+ * @see slideOpen(), slideClose()
+ * @param {string} pane The pane to process, 'north', 'south', etc.
+ * @param {boolean} enable Enable or Disable events?
+ */
+, bindStopSlidingEvents = function (pane, enable) {
+ var o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , z = options.zIndexes
+ , evtName = o.slideTrigger_close.toLowerCase()
+ , action = (enable ? "bind" : "unbind")
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ ;
+ s.isSliding = enable; // logic
+ timer.clear(pane+"_closeSlider"); // just in case
+
+ // remove 'slideOpen' event from resizer
+ // ALSO will raise the zIndex of the pane & resizer
+ if (enable) bindStartSlidingEvent(pane, false);
+
+ // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not
+ $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal);
+ $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1
+
+ // make sure we have a valid event
+ if (!evtName.match(/click|mouseleave/))
+ evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout'
+
+ // add/remove slide triggers
+ $R[action](evtName, slideClose); // base event on resize
+ // need extra events for mouseleave
+ if (evtName === "mouseleave") {
+ // also close on pane.mouseleave
+ $P[action]("mouseleave."+ sID, slideClose);
+ // cancel timer when mouse moves between 'pane' and 'resizer'
+ $R[action]("mouseenter."+ sID, cancelMouseOut);
+ $P[action]("mouseenter."+ sID, cancelMouseOut);
+ }
+
+ if (!enable)
+ timer.clear(pane+"_closeSlider");
+ else if (evtName === "click" && !o.resizable) {
+ // IF pane is not resizable (which already has a cursor and tip)
+ // then set the a cursor & title/tip on resizer when sliding
+ $R.css("cursor", enable ? o.sliderCursor : "default");
+ $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane"
+ }
+
+ // SUBROUTINE for mouseleave timer clearing
+ function cancelMouseOut (evt) {
+ timer.clear(pane+"_closeSlider");
+ evt.stopPropagation();
+ }
+ }
+
+
+ /**
+ * Hides/closes a pane if there is insufficient room - reverses this when there is room again
+ * MUST have already called setSizeLimits() before calling this method
+ *
+ * @param {string} pane The pane being resized
+ * @param {boolean=} [isOpening=false] Called from onOpen?
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [force=false]
+ */
+, makePaneFit = function (pane, isOpening, skipCallback, force) {
+ var
+ o = options[pane]
+ , s = state[pane]
+ , c = _c[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , isSidePane = c.dir==="vert"
+ , hasRoom = false
+ ;
+ // special handling for center & east/west panes
+ if (pane === "center" || (isSidePane && s.noVerticalRoom)) {
+ // see if there is enough room to display the pane
+ // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth);
+ hasRoom = (s.maxHeight >= 0);
+ if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now
+ _showPane(pane);
+ if ($R) $R.show();
+ s.isVisible = true;
+ s.noRoom = false;
+ if (isSidePane) s.noVerticalRoom = false;
+ _fixIframe(pane);
+ }
+ else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now
+ _hidePane(pane);
+ if ($R) $R.hide();
+ s.isVisible = false;
+ s.noRoom = true;
+ }
+ }
+
+ // see if there is enough room to fit the border-pane
+ if (pane === "center") {
+ // ignore center in this block
+ }
+ else if (s.minSize <= s.maxSize) { // pane CAN fit
+ hasRoom = true;
+ if (s.size > s.maxSize) // pane is too big - shrink it
+ sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation
+ else if (s.size < s.minSize) // pane is too small - enlarge it
+ sizePane(pane, s.minSize, skipCallback, force, true);
+ // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen
+ else if ($R && s.isVisible && $P.is(":visible")) {
+ // make sure resizer-bar is positioned correctly
+ // handles situation where nested layout was 'hidden' when initialized
+ var side = c.side.toLowerCase()
+ , pos = s.size + sC["inset"+ c.side]
+ ;
+ if ($.layout.cssNum($R, side) != pos) $R.css( side, pos );
+ }
+
+ // if was previously hidden due to noRoom, then RESET because NOW there is room
+ if (s.noRoom) {
+ // s.noRoom state will be set by open or show
+ if (s.wasOpen && o.closable) {
+ if (o.autoReopen)
+ open(pane, false, true, true); // true = noAnimation, true = noAlert
+ else // leave the pane closed, so just update state
+ s.noRoom = false;
+ }
+ else
+ show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert
+ }
+ }
+ else { // !hasRoom - pane CANNOT fit
+ if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now...
+ s.noRoom = true; // update state
+ s.wasOpen = !s.isClosed && !s.isSliding;
+ if (s.isClosed){} // SKIP
+ else if (o.closable) // 'close' if possible
+ close(pane, true, true); // true = force, true = noAnimation
+ else // 'hide' pane if cannot just be closed
+ hide(pane, true); // true = noAnimation
+ }
+ }
+ }
+
+
+ /**
+ * sizePane / manualSizePane
+ * sizePane is called only by internal methods whenever a pane needs to be resized
+ * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized'
+ *
+ * @param {string} pane The pane being resized
+ * @param {number} size The *desired* new size for this pane - will be validated
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [noAnimation=false]
+ */
+, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , o = options[pane]
+ , s = state[pane]
+ // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete...
+ , forceResize = o.livePaneResizing && !s.isResizing
+ ;
+ // ANY call to manualSizePane disables autoResize - ie, percentage sizing
+ o.autoResize = false;
+ // flow-through...
+ sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled
+ }
+
+ /**
+ * @param {string} pane The pane being resized
+ * @param {number} size The *desired* new size for this pane - will be validated
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [force=false] Force resizing even if does not seem necessary
+ * @param {boolean=} [noAnimation=false]
+ */
+, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event?
+ , o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , side = _c[pane].side.toLowerCase()
+ , dimName = _c[pane].sizeType.toLowerCase()
+ , inset = "inset"+ _c[pane].side
+ , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize
+ , doFX = noAnimation !== true && o.animatePaneSizing
+ , oldSize, newSize
+ ;
+ // QUEUE in case another action/animation is in progress
+ $N.queue(function( queueNext ){
+ // calculate 'current' min/max sizes
+ setSizeLimits(pane); // update pane-state
+ oldSize = s.size;
+ size = _parseSize(pane, size); // handle percentages & auto
+ size = max(size, _parseSize(pane, o.minSize));
+ size = min(size, s.maxSize);
+ if (size < s.minSize) { // not enough room for pane!
+ queueNext(); // call before makePaneFit() because it needs the queue free
+ makePaneFit(pane, false, skipCallback); // will hide or close pane
+ return;
+ }
+
+ // IF newSize is same as oldSize, then nothing to do - abort
+ if (!force && size === oldSize)
+ return queueNext();
+
+ // onresize_start callback CANNOT cancel resizing because this would break the layout!
+ if (!skipCallback && state.initialized && s.isVisible)
+ _runCallbacks("onresize_start", pane);
+
+ // resize the pane, and make sure its visible
+ newSize = cssSize(pane, size);
+
+ if (doFX && $P.is(":visible")) { // ANIMATE
+ var fx = $.layout.effects.size[pane] || $.layout.effects.size.all
+ , easing = o.fxSettings_size.easing || fx.easing
+ , z = options.zIndexes
+ , props = {};
+ props[ dimName ] = newSize +'px';
+ s.isMoving = true;
+ // overlay all elements during animation
+ $P.css({ zIndex: z.pane_animate })
+ .show().animate( props, o.fxSpeed_size, easing, function(){
+ // reset zIndex after animation
+ $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) });
+ s.isMoving = false;
+ sizePane_2(); // continue
+ queueNext();
+ });
+ }
+ else { // no animation
+ $P.css( dimName, newSize ); // resize pane
+ // if pane is visible, then
+ if ($P.is(":visible"))
+ sizePane_2(); // continue
+ else {
+ // pane is NOT VISIBLE, so just update state data...
+ // when pane is *next opened*, it will have the new size
+ s.size = size; // update state.size
+ $.extend(s, elDims($P)); // update state dimensions
+ }
+ queueNext();
+ };
+
+ });
+
+ // SUBROUTINE
+ function sizePane_2 () {
+ /* Panes are sometimes not sized precisely in some browsers!?
+ * This code will resize the pane up to 3 times to nudge the pane to the correct size
+ */
+ var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight()
+ , tries = [{
+ pane: pane
+ , count: 1
+ , target: size
+ , actual: actual
+ , correct: (size === actual)
+ , attempt: size
+ , cssSize: newSize
+ }]
+ , lastTry = tries[0]
+ , msg = 'Inaccurate size after resizing the '+ pane +'-pane.'
+ ;
+ while ( !lastTry.correct ) {
+ thisTry = { pane: pane, count: lastTry.count+1, target: size };
+
+ if (lastTry.actual > size)
+ thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size));
+ else // lastTry.actual < size
+ thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual));
+
+ thisTry.cssSize = cssSize(pane, thisTry.attempt);
+ $P.css( dimName, thisTry.cssSize );
+
+ thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight();
+ thisTry.correct = (size === thisTry.actual);
+
+ // if showDebugMessages, log attempts and alert the user of this *non-fatal error*
+ if (options.showDebugMessages) {
+ if ( tries.length === 1) {
+ _log(msg, false);
+ _log(lastTry, false);
+ }
+ _log(thisTry, false);
+ }
+
+ // after 4 tries, is as close as its gonna get!
+ if (tries.length > 3) break;
+
+ tries.push( thisTry );
+ lastTry = tries[ tries.length - 1 ];
+ }
+ // END TESTING CODE
+
+ // update pane-state dimensions
+ s.size = size;
+ $.extend(s, elDims($P));
+
+ if (s.isVisible && $P.is(":visible")) {
+ // reposition the resizer-bar
+ if ($R) $R.css( side, size + sC[inset] );
+ // resize the content-div
+ sizeContent(pane);
+ }
+
+ if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible)
+ _runCallbacks("onresize_end", pane);
+
+ // resize all the adjacent panes, and adjust their toggler buttons
+ // when skipCallback passed, it means the controlling method will handle 'other panes'
+ if (!skipCallback) {
+ // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize
+ if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force);
+ sizeHandles();
+ }
+
+ // if opposite-pane was autoClosed, see if it can be autoOpened now
+ var altPane = _c.oppositeEdge[pane];
+ if (size < oldSize && state[ altPane ].noRoom) {
+ setSizeLimits( altPane );
+ makePaneFit( altPane, false, skipCallback );
+ }
+
+ // DEBUG - ALERT user/developer so they know there was a sizing problem
+ if (options.showDebugMessages && tries.length > 1)
+ _log(msg +'\nSee the Error Console for details.', true);
+ }
+ }
+
+ /**
+ * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide()
+ * @param {string} panes The pane(s) being resized, comma-delmited string
+ * @param {boolean=} [skipCallback=false] Should the onresize callback be run?
+ * @param {boolean=} [force=false]
+ */
+, sizeMidPanes = function (panes, skipCallback, force) {
+ panes = (panes ? panes : "east,west,center").split(",");
+
+ $.each(panes, function (i, pane) {
+ if (!$Ps[pane]) return; // NO PANE - skip
+ var
+ o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , isCenter= (pane=="center")
+ , hasRoom = true
+ , CSS = {}
+ , newCenter = calcNewCenterPaneDims()
+ ;
+ // update pane-state dimensions
+ $.extend(s, elDims($P));
+
+ if (pane === "center") {
+ if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight)
+ return true; // SKIP - pane already the correct size
+ // set state for makePaneFit() logic
+ $.extend(s, cssMinDims(pane), {
+ maxWidth: newCenter.width
+ , maxHeight: newCenter.height
+ });
+ CSS = newCenter;
+ // convert OUTER width/height to CSS width/height
+ CSS.width = cssW($P, CSS.width);
+ // NEW - allow pane to extend 'below' visible area rather than hide it
+ CSS.height = cssH($P, CSS.height);
+ hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW
+ // during layout init, try to shrink east/west panes to make room for center
+ if (!state.initialized && o.minWidth > s.outerWidth) {
+ var
+ reqPx = o.minWidth - s.outerWidth
+ , minE = options.east.minSize || 0
+ , minW = options.west.minSize || 0
+ , sizeE = state.east.size
+ , sizeW = state.west.size
+ , newE = sizeE
+ , newW = sizeW
+ ;
+ if (reqPx > 0 && state.east.isVisible && sizeE > minE) {
+ newE = max( sizeE-minE, sizeE-reqPx );
+ reqPx -= sizeE-newE;
+ }
+ if (reqPx > 0 && state.west.isVisible && sizeW > minW) {
+ newW = max( sizeW-minW, sizeW-reqPx );
+ reqPx -= sizeW-newW;
+ }
+ // IF we found enough extra space, then resize the border panes as calculated
+ if (reqPx === 0) {
+ if (sizeE != minE)
+ sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done
+ if (sizeW != minW)
+ sizePane('west', newW, true, force, true);
+ // now start over!
+ sizeMidPanes('center', skipCallback, force);
+ return; // abort this loop
+ }
+ }
+ }
+ else { // for east and west, set only the height, which is same as center height
+ // set state.min/maxWidth/Height for makePaneFit() logic
+ if (s.isVisible && !s.noVerticalRoom)
+ $.extend(s, elDims($P), cssMinDims(pane))
+ if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight)
+ return true; // SKIP - pane already the correct size
+ // east/west have same top, bottom & height as center
+ CSS.top = newCenter.top;
+ CSS.bottom = newCenter.bottom;
+ // NEW - allow pane to extend 'below' visible area rather than hide it
+ CSS.height = cssH($P, newCenter.height);
+ s.maxHeight = CSS.height;
+ hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW
+ if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic
+ }
+
+ if (hasRoom) {
+ // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized
+ if (!skipCallback && state.initialized)
+ _runCallbacks("onresize_start", pane);
+
+ $P.css(CSS); // apply the CSS to pane
+ sizeHandles(pane); // also update resizer length
+ if (s.noRoom && !s.isClosed && !s.isHidden)
+ makePaneFit(pane); // will re-open/show auto-closed/hidden pane
+ if (s.isVisible) {
+ $.extend(s, elDims($P)); // update pane dimensions
+ if (state.initialized) sizeContent(pane); // also resize the contents, if exists
+ }
+ }
+ else if (!s.noRoom && s.isVisible) // no room for pane
+ makePaneFit(pane); // will hide or close pane
+
+ if (!s.isVisible)
+ return true; // DONE - next pane
+
+ /*
+ * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes
+ * Normally these panes have only 'left' & 'right' positions so pane auto-sizes
+ * ALSO required when pane is an IFRAME because will NOT default to 'full width'
+ */
+ if (pane === "center") { // finished processing midPanes
+ var b = $.layout.browser;
+ var fix = b.isIE6 || (b.msie && !$.support.boxModel);
+ if ($Ps.north && (fix || state.north.tagName=="IFRAME"))
+ $Ps.north.css("width", cssW($Ps.north, sC.innerWidth));
+ if ($Ps.south && (fix || state.south.tagName=="IFRAME"))
+ $Ps.south.css("width", cssW($Ps.south, sC.innerWidth));
+ }
+
+ // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized
+ if (!skipCallback && state.initialized)
+ _runCallbacks("onresize_end", pane);
+ });
+ }
+
+
+ /**
+ * @see window.onresize(), callbacks or custom code
+ */
+, resizeAll = function () {
+ if (!state.initialized) {
+ _initLayoutElements();
+ return; // no need to resize since we just initialized!
+ }
+ var oldW = sC.innerWidth
+ , oldH = sC.innerHeight
+ ;
+ // cannot size layout when 'container' is hidden or collapsed
+ if (!$N.is(":visible:") ) return;
+ $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions
+ if (!sC.outerHeight) return;
+
+ // onresizeall_start will CANCEL resizing if returns false
+ // state.container has already been set, so user can access this info for calcuations
+ if (false === _runCallbacks("onresizeall_start")) return false;
+
+ var // see if container is now 'smaller' than before
+ shrunkH = (sC.innerHeight < oldH)
+ , shrunkW = (sC.innerWidth < oldW)
+ , $P, o, s, dir
+ ;
+ // NOTE special order for sizing: S-N-E-W
+ $.each(["south","north","east","west"], function (i, pane) {
+ if (!$Ps[pane]) return; // no pane - SKIP
+ s = state[pane];
+ o = options[pane];
+ dir = _c[pane].dir;
+
+ if (o.autoResize && s.size != o.size) // resize pane to original size set in options
+ sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation
+ else {
+ setSizeLimits(pane);
+ makePaneFit(pane, false, true, true); // true=skipCallback/forceResize
+ }
+ });
+
+ sizeMidPanes("", true, true); // true=skipCallback, true=forceResize
+ sizeHandles(); // reposition the toggler elements
+
+ // trigger all individual pane callbacks AFTER layout has finished resizing
+ o = options; // reuse alias
+ $.each(_c.allPanes, function (i, pane) {
+ $P = $Ps[pane];
+ if (!$P) return; // SKIP
+ if (state[pane].isVisible) // undefined for non-existent panes
+ _runCallbacks("onresize_end", pane); // callback - if exists
+ });
+
+ _runCallbacks("onresizeall_end");
+ //_triggerLayoutEvent(pane, 'resizeall');
+ }
+
+ /**
+ * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll
+ *
+ * @param {string} pane The pane just resized or opened
+ */
+, resizeChildLayout = function (evt_or_pane) {
+ var pane = evtPane.call(this, evt_or_pane);
+ if (!options[pane].resizeChildLayout) return;
+ var $P = $Ps[pane]
+ , $C = $Cs[pane]
+ , d = "layout"
+ , P = Instance[pane]
+ , L = children[pane]
+ ;
+ // user may have manually set EITHER instance pointer, so handle that
+ if (P.child && !L) {
+ // have to reverse the pointers!
+ var el = P.child.container;
+ L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance
+ }
+
+ // if a layout-pointer exists, see if child has been destroyed
+ if (L && L.destroyed)
+ L = children[pane] = null; // clear child pointers
+ // no child layout pointer is set - see if there is a child layout NOW
+ if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers
+
+ // ALWAYS refresh the pane.child alias
+ P.child = children[pane];
+
+ if (L) L.resizeAll();
+ }
+
+
+ /**
+ * IF pane has a content-div, then resize all elements inside pane to fit pane-height
+ *
+ * @param {string=} [panes=""] The pane(s) being resized
+ * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured?
+ */
+, sizeContent = function (evt_or_panes, remeasure) {
+ if (!isInitialized()) return;
+
+ var panes = evtPane.call(this, evt_or_panes);
+ panes = panes ? panes.split(",") : _c.allPanes;
+
+ $.each(panes, function (idx, pane) {
+ var
+ $P = $Ps[pane]
+ , $C = $Cs[pane]
+ , o = options[pane]
+ , s = state[pane]
+ , m = s.content // m = measurements
+ ;
+ if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip
+
+ // if content-element was REMOVED, update OR remove the pointer
+ if (!$C.length) {
+ initContent(pane, false); // false = do NOT sizeContent() - already there!
+ if (!$C) return; // no replacement element found - pointer have been removed
+ }
+
+ // onsizecontent_start will CANCEL resizing if returns false
+ if (false === _runCallbacks("onsizecontent_start", pane)) return;
+
+ // skip re-measuring offsets if live-resizing
+ if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) {
+ _measure();
+ // if any footers are below pane-bottom, they may not measure correctly,
+ // so allow pane overflow and re-measure
+ if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") {
+ $P.css("overflow", "visible");
+ _measure(); // remeasure while overflowing
+ $P.css("overflow", "hidden");
+ }
+ }
+ // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders
+ var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom);
+
+ if (!$C.is(":visible") || m.height != newH) {
+ // size the Content element to fit new pane-size - will autoHide if not enough room
+ setOuterHeight($C, newH, true); // true=autoHide
+ m.height = newH; // save new height
+ };
+
+ if (state.initialized)
+ _runCallbacks("onsizecontent_end", pane);
+
+ function _below ($E) {
+ return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0));
+ };
+
+ function _measure () {
+ var
+ ignore = options[pane].contentIgnoreSelector
+ , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL
+ , $Fs_vis = $Fs.filter(':visible')
+ , $F = $Fs_vis.filter(':last')
+ ;
+ m = {
+ top: $C[0].offsetTop
+ , height: $C.outerHeight()
+ , numFooters: $Fs.length
+ , hiddenFooters: $Fs.length - $Fs_vis.length
+ , spaceBelow: 0 // correct if no content footer ($E)
+ }
+ m.spaceAbove = m.top; // just for state - not used in calc
+ m.bottom = m.top + m.height;
+ if ($F.length)
+ //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom)
+ m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F);
+ else // no footer - check marginBottom on Content element itself
+ m.spaceBelow = _below($C);
+ };
+ });
+ }
+
+
+ /**
+ * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary
+ *
+ * @see initHandles(), open(), close(), resizeAll()
+ * @param {string=} [panes=""] The pane(s) being resized
+ */
+, sizeHandles = function (evt_or_panes) {
+ var panes = evtPane.call(this, evt_or_panes)
+ panes = panes ? panes.split(",") : _c.borderPanes;
+
+ $.each(panes, function (i, pane) {
+ var
+ o = options[pane]
+ , s = state[pane]
+ , $P = $Ps[pane]
+ , $R = $Rs[pane]
+ , $T = $Ts[pane]
+ , $TC
+ ;
+ if (!$P || !$R) return;
+
+ var
+ dir = _c[pane].dir
+ , _state = (s.isClosed ? "_closed" : "_open")
+ , spacing = o["spacing"+ _state]
+ , togAlign = o["togglerAlign"+ _state]
+ , togLen = o["togglerLength"+ _state]
+ , paneLen
+ , left
+ , offset
+ , CSS = {}
+ ;
+
+ if (spacing === 0) {
+ $R.hide();
+ return;
+ }
+ else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason
+ $R.show(); // in case was previously hidden
+
+ // Resizer Bar is ALWAYS same width/height of pane it is attached to
+ if (dir === "horz") { // north/south
+ //paneLen = $P.outerWidth(); // s.outerWidth ||
+ paneLen = sC.innerWidth; // handle offscreen-panes
+ s.resizerLength = paneLen;
+ left = $.layout.cssNum($P, "left")
+ $R.css({
+ width: cssW($R, paneLen) // account for borders & padding
+ , height: cssH($R, spacing) // ditto
+ , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes
+ });
+ }
+ else { // east/west
+ paneLen = $P.outerHeight(); // s.outerHeight ||
+ s.resizerLength = paneLen;
+ $R.css({
+ height: cssH($R, paneLen) // account for borders & padding
+ , width: cssW($R, spacing) // ditto
+ , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane?
+ //, top: $.layout.cssNum($Ps["center"], "top")
+ });
+ }
+
+ // remove hover classes
+ removeHover( o, $R );
+
+ if ($T) {
+ if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) {
+ $T.hide(); // always HIDE the toggler when 'sliding'
+ return;
+ }
+ else
+ $T.show(); // in case was previously hidden
+
+ if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) {
+ togLen = paneLen;
+ offset = 0;
+ }
+ else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed
+ if (isStr(togAlign)) {
+ switch (togAlign) {
+ case "top":
+ case "left": offset = 0;
+ break;
+ case "bottom":
+ case "right": offset = paneLen - togLen;
+ break;
+ case "middle":
+ case "center":
+ default: offset = round((paneLen - togLen) / 2); // 'default' catches typos
+ }
+ }
+ else { // togAlign = number
+ var x = parseInt(togAlign, 10); //
+ if (togAlign >= 0) offset = x;
+ else offset = paneLen - togLen + x; // NOTE: x is negative!
+ }
+ }
+
+ if (dir === "horz") { // north/south
+ var width = cssW($T, togLen);
+ $T.css({
+ width: width // account for borders & padding
+ , height: cssH($T, spacing) // ditto
+ , left: offset // TODO: VERIFY that toggler positions correctly for ALL values
+ , top: 0
+ });
+ // CENTER the toggler content SPAN
+ $T.children(".content").each(function(){
+ $TC = $(this);
+ $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative
+ });
+ }
+ else { // east/west
+ var height = cssH($T, togLen);
+ $T.css({
+ height: height // account for borders & padding
+ , width: cssW($T, spacing) // ditto
+ , top: offset // POSITION the toggler
+ , left: 0
+ });
+ // CENTER the toggler content SPAN
+ $T.children(".content").each(function(){
+ $TC = $(this);
+ $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative
+ });
+ }
+
+ // remove ALL hover classes
+ removeHover( 0, $T );
+ }
+
+ // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now
+ if (!state.initialized && (o.initHidden || s.noRoom)) {
+ $R.hide();
+ if ($T) $T.hide();
+ }
+ });
+ }
+
+
+ /**
+ * @param {string} pane
+ */
+, enableClosable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $T = $Ts[pane]
+ , o = options[pane]
+ ;
+ if (!$T) return;
+ o.closable = true;
+ $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); })
+ .css("visibility", "visible")
+ .css("cursor", "pointer")
+ .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank
+ .show();
+ }
+ /**
+ * @param {string} pane
+ * @param {boolean=} [hide=false]
+ */
+, disableClosable = function (evt_or_pane, hide) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $T = $Ts[pane]
+ ;
+ if (!$T) return;
+ options[pane].closable = false;
+ // is closable is disable, then pane MUST be open!
+ if (state[pane].isClosed) open(pane, false, true);
+ $T .unbind("."+ sID)
+ .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues
+ .css("cursor", "default")
+ .attr("title", "");
+ }
+
+
+ /**
+ * @param {string} pane
+ */
+, enableSlidable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ ;
+ if (!$R || !$R.data('draggable')) return;
+ options[pane].slidable = true;
+ if (s.isClosed)
+ bindStartSlidingEvent(pane, true);
+ }
+ /**
+ * @param {string} pane
+ */
+, disableSlidable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ ;
+ if (!$R) return;
+ options[pane].slidable = false;
+ if (state[pane].isSliding)
+ close(pane, false, true);
+ else {
+ bindStartSlidingEvent(pane, false);
+ $R .css("cursor", "default")
+ .attr("title", "");
+ removeHover(null, $R[0]); // in case currently hovered
+ }
+ }
+
+
+ /**
+ * @param {string} pane
+ */
+, enableResizable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ , o = options[pane]
+ ;
+ if (!$R || !$R.data('draggable')) return;
+ o.resizable = true;
+ $R.draggable("enable");
+ if (!state[pane].isClosed)
+ $R .css("cursor", o.resizerCursor)
+ .attr("title", o.resizerTip);
+ }
+ /**
+ * @param {string} pane
+ */
+, disableResizable = function (evt_or_pane) {
+ if (!isInitialized()) return;
+ var pane = evtPane.call(this, evt_or_pane)
+ , $R = $Rs[pane]
+ ;
+ if (!$R || !$R.data('draggable')) return;
+ options[pane].resizable = false;
+ $R .draggable("disable")
+ .css("cursor", "default")
+ .attr("title", "");
+ removeHover(null, $R[0]); // in case currently hovered
+ }
+
+
+ /**
+ * Move a pane from source-side (eg, west) to target-side (eg, east)
+ * If pane exists on target-side, move that to source-side, ie, 'swap' the panes
+ *
+ * @param {string} pane1 The pane/edge being swapped
+ * @param {string} pane2 ditto
+ */
+, swapPanes = function (evt_or_pane1, pane2) {
+ if (!isInitialized()) return;
+ var pane1 = evtPane.call(this, evt_or_pane1);
+ // change state.edge NOW so callbacks can know where pane is headed...
+ state[pane1].edge = pane2;
+ state[pane2].edge = pane1;
+ // run these even if NOT state.initialized
+ if (false === _runCallbacks("onswap_start", pane1)
+ || false === _runCallbacks("onswap_start", pane2)
+ ) {
+ state[pane1].edge = pane1; // reset
+ state[pane2].edge = pane2;
+ return;
+ }
+
+ var
+ oPane1 = copy( pane1 )
+ , oPane2 = copy( pane2 )
+ , sizes = {}
+ ;
+ sizes[pane1] = oPane1 ? oPane1.state.size : 0;
+ sizes[pane2] = oPane2 ? oPane2.state.size : 0;
+
+ // clear pointers & state
+ $Ps[pane1] = false;
+ $Ps[pane2] = false;
+ state[pane1] = {};
+ state[pane2] = {};
+
+ // ALWAYS remove the resizer & toggler elements
+ if ($Ts[pane1]) $Ts[pane1].remove();
+ if ($Ts[pane2]) $Ts[pane2].remove();
+ if ($Rs[pane1]) $Rs[pane1].remove();
+ if ($Rs[pane2]) $Rs[pane2].remove();
+ $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false;
+
+ // transfer element pointers and data to NEW Layout keys
+ move( oPane1, pane2 );
+ move( oPane2, pane1 );
+
+ // cleanup objects
+ oPane1 = oPane2 = sizes = null;
+
+ // make panes 'visible' again
+ if ($Ps[pane1]) $Ps[pane1].css(_c.visible);
+ if ($Ps[pane2]) $Ps[pane2].css(_c.visible);
+
+ // fix any size discrepancies caused by swap
+ resizeAll();
+
+ // run these even if NOT state.initialized
+ _runCallbacks("onswap_end", pane1);
+ _runCallbacks("onswap_end", pane2);
+
+ return;
+
+ function copy (n) { // n = pane
+ var
+ $P = $Ps[n]
+ , $C = $Cs[n]
+ ;
+ return !$P ? false : {
+ pane: n
+ , P: $P ? $P[0] : false
+ , C: $C ? $C[0] : false
+ , state: $.extend(true, {}, state[n])
+ , options: $.extend(true, {}, options[n])
+ }
+ };
+
+ function move (oPane, pane) {
+ if (!oPane) return;
+ var
+ P = oPane.P
+ , C = oPane.C
+ , oldPane = oPane.pane
+ , c = _c[pane]
+ , side = c.side.toLowerCase()
+ , inset = "inset"+ c.side
+ // save pane-options that should be retained
+ , s = $.extend({}, state[pane])
+ , o = options[pane]
+ // RETAIN side-specific FX Settings - more below
+ , fx = { resizerCursor: o.resizerCursor }
+ , re, size, pos
+ ;
+ $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) {
+ fx[k +"_open"] = o[k +"_open"];
+ fx[k +"_close"] = o[k +"_close"];
+ fx[k +"_size"] = o[k +"_size"];
+ });
+
+ // update object pointers and attributes
+ $Ps[pane] = $(P)
+ .data({
+ layoutPane: Instance[pane] // NEW pointer to pane-alias-object
+ , layoutEdge: pane
+ })
+ .css(_c.hidden)
+ .css(c.cssReq)
+ ;
+ $Cs[pane] = C ? $(C) : false;
+
+ // set options and state
+ options[pane] = $.extend({}, oPane.options, fx);
+ state[pane] = $.extend({}, oPane.state);
+
+ // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west
+ re = new RegExp(o.paneClass +"-"+ oldPane, "g");
+ P.className = P.className.replace(re, o.paneClass +"-"+ pane);
+
+ // ALWAYS regenerate the resizer & toggler elements
+ initHandles(pane); // create the required resizer & toggler
+
+ // if moving to different orientation, then keep 'target' pane size
+ if (c.dir != _c[oldPane].dir) {
+ size = sizes[pane] || 0;
+ setSizeLimits(pane); // update pane-state
+ size = max(size, state[pane].minSize);
+ // use manualSizePane to disable autoResize - not useful after panes are swapped
+ manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation
+ }
+ else // move the resizer here
+ $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0));
+
+
+ // ADD CLASSNAMES & SLIDE-BINDINGS
+ if (oPane.state.isVisible && !s.isVisible)
+ setAsOpen(pane, true); // true = skipCallback
+ else {
+ setAsClosed(pane);
+ bindStartSlidingEvent(pane, true); // will enable events IF option is set
+ }
+
+ // DESTROY the object
+ oPane = null;
+ };
+ }
+
+
+ /**
+ * INTERNAL method to sync pin-buttons when pane is opened or closed
+ * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
+ *
+ * @see open(), setAsOpen(), setAsClosed()
+ * @param {string} pane These are the params returned to callbacks by layout()
+ * @param {boolean} doPin True means set the pin 'down', False means 'up'
+ */
+, syncPinBtns = function (pane, doPin) {
+ if ($.layout.plugins.buttons)
+ $.each(state[pane].pins, function (i, selector) {
+ $.layout.buttons.setPinState(Instance, $(selector), pane, doPin);
+ });
+ }
+
+; // END var DECLARATIONS
+
+ /**
+ * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed
+ *
+ * @see document.keydown()
+ */
+ function keyDown (evt) {
+ if (!evt) return true;
+ var code = evt.keyCode;
+ if (code < 33) return true; // ignore special keys: ENTER, TAB, etc
+
+ var
+ PANE = {
+ 38: "north" // Up Cursor - $.ui.keyCode.UP
+ , 40: "south" // Down Cursor - $.ui.keyCode.DOWN
+ , 37: "west" // Left Cursor - $.ui.keyCode.LEFT
+ , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT
+ }
+ , ALT = evt.altKey // no worky!
+ , SHIFT = evt.shiftKey
+ , CTRL = evt.ctrlKey
+ , CURSOR = (CTRL && code >= 37 && code <= 40)
+ , o, k, m, pane
+ ;
+
+ if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey
+ pane = PANE[code];
+ else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey
+ $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey
+ o = options[p];
+ k = o.customHotkey;
+ m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT"
+ if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches
+ if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches
+ pane = p;
+ return false; // BREAK
+ }
+ }
+ });
+
+ // validate pane
+ if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden)
+ return true;
+
+ toggle(pane);
+
+ evt.stopPropagation();
+ evt.returnValue = false; // CANCEL key
+ return false;
+ };
+
+
+/*
+ * ######################################
+ * UTILITY METHODS
+ * called externally or by initButtons
+ * ######################################
+ */
+
+ /**
+ * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work
+ *
+ * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event
+ */
+ function allowOverflow (el) {
+ if (!isInitialized()) return;
+ if (this && this.tagName) el = this; // BOUND to element
+ var $P;
+ if (isStr(el))
+ $P = $Ps[el];
+ else if ($(el).data("layoutRole"))
+ $P = $(el);
+ else
+ $(el).parents().each(function(){
+ if ($(this).data("layoutRole")) {
+ $P = $(this);
+ return false; // BREAK
+ }
+ });
+ if (!$P || !$P.length) return; // INVALID
+
+ var
+ pane = $P.data("layoutEdge")
+ , s = state[pane]
+ ;
+
+ // if pane is already raised, then reset it before doing it again!
+ // this would happen if allowOverflow is attached to BOTH the pane and an element
+ if (s.cssSaved)
+ resetOverflow(pane); // reset previous CSS before continuing
+
+ // if pane is raised by sliding or resizing, or its closed, then abort
+ if (s.isSliding || s.isResizing || s.isClosed) {
+ s.cssSaved = false;
+ return;
+ }
+
+ var
+ newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) }
+ , curCSS = {}
+ , of = $P.css("overflow")
+ , ofX = $P.css("overflowX")
+ , ofY = $P.css("overflowY")
+ ;
+ // determine which, if any, overflow settings need to be changed
+ if (of != "visible") {
+ curCSS.overflow = of;
+ newCSS.overflow = "visible";
+ }
+ if (ofX && !ofX.match(/visible|auto/)) {
+ curCSS.overflowX = ofX;
+ newCSS.overflowX = "visible";
+ }
+ if (ofY && !ofY.match(/visible|auto/)) {
+ curCSS.overflowY = ofX;
+ newCSS.overflowY = "visible";
+ }
+
+ // save the current overflow settings - even if blank!
+ s.cssSaved = curCSS;
+
+ // apply new CSS to raise zIndex and, if necessary, make overflow 'visible'
+ $P.css( newCSS );
+
+ // make sure the zIndex of all other panes is normal
+ $.each(_c.allPanes, function(i, p) {
+ if (p != pane) resetOverflow(p);
+ });
+
+ };
+ /**
+ * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event
+ */
+ function resetOverflow (el) {
+ if (!isInitialized()) return;
+ if (this && this.tagName) el = this; // BOUND to element
+ var $P;
+ if (isStr(el))
+ $P = $Ps[el];
+ else if ($(el).data("layoutRole"))
+ $P = $(el);
+ else
+ $(el).parents().each(function(){
+ if ($(this).data("layoutRole")) {
+ $P = $(this);
+ return false; // BREAK
+ }
+ });
+ if (!$P || !$P.length) return; // INVALID
+
+ var
+ pane = $P.data("layoutEdge")
+ , s = state[pane]
+ , CSS = s.cssSaved || {}
+ ;
+ // reset the zIndex
+ if (!s.isSliding && !s.isResizing)
+ $P.css("zIndex", options.zIndexes.pane_normal);
+
+ // reset Overflow - if necessary
+ $P.css( CSS );
+
+ // clear var
+ s.cssSaved = false;
+ };
+
+/*
+ * #####################
+ * CREATE/RETURN LAYOUT
+ * #####################
+ */
+
+ // validate that container exists
+ var $N = $(this).eq(0); // FIRST matching Container element
+ if (!$N.length) {
+ if (options.showErrorMessages)
+ _log( lang.errContainerMissing, true );
+ return null;
+ };
+
+ // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout")
+ // return the Instance-pointer if layout has already been initialized
+ if ($N.data("layoutContainer") && $N.data("layout"))
+ return $N.data("layout"); // cached pointer
+
+ // init global vars
+ var
+ $Ps = {} // Panes x5 - set in initPanes()
+ , $Cs = {} // Content x5 - set in initPanes()
+ , $Rs = {} // Resizers x4 - set in initHandles()
+ , $Ts = {} // Togglers x4 - set in initHandles()
+ , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV)
+ // aliases for code brevity
+ , sC = state.container // alias for easy access to 'container dimensions'
+ , sID = state.id // alias for unique layout ID/namespace - eg: "layout435"
+ ;
+
+ // create Instance object to expose data & option Properties, and primary action Methods
+ var Instance = {
+ // layout data
+ options: options // property - options hash
+ , state: state // property - dimensions hash
+ // object pointers
+ , container: $N // property - object pointers for layout container
+ , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center
+ , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center
+ , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north
+ , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north
+ // border-pane open/close
+ , hide: hide // method - ditto
+ , show: show // method - ditto
+ , toggle: toggle // method - pass a 'pane' ("north", "west", etc)
+ , open: open // method - ditto
+ , close: close // method - ditto
+ , slideOpen: slideOpen // method - ditto
+ , slideClose: slideClose // method - ditto
+ , slideToggle: slideToggle // method - ditto
+ // pane actions
+ , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data
+ , _sizePane: sizePane // method -intended for user by plugins only!
+ , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto'
+ , sizeContent: sizeContent // method - pass a 'pane'
+ , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them
+ // pane element methods
+ , initContent: initContent // method - ditto
+ , addPane: addPane // method - pass a 'pane'
+ , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem
+ , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions
+ // special pane option setting
+ , enableClosable: enableClosable // method - pass a 'pane'
+ , disableClosable: disableClosable // method - ditto
+ , enableSlidable: enableSlidable // method - ditto
+ , disableSlidable: disableSlidable // method - ditto
+ , enableResizable: enableResizable // method - ditto
+ , disableResizable: disableResizable// method - ditto
+ // utility methods for panes
+ , allowOverflow: allowOverflow // utility - pass calling element (this)
+ , resetOverflow: resetOverflow // utility - ditto
+ // layout control
+ , destroy: destroy // method - no parameters
+ , initPanes: isInitialized // method - no parameters
+ , resizeAll: resizeAll // method - no parameters
+ // callback triggering
+ , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west")
+ // alias collections of options, state and children - created in addPane and extended elsewhere
+ , hasParentLayout: false // set by initContainer()
+ , children: children // pointers to child-layouts, eg: Instance.children["west"]
+ , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] }
+ , south: false // ditto
+ , west: false // ditto
+ , east: false // ditto
+ , center: false // ditto
+ };
+
+ // create the border layout NOW
+ if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation
+ return null;
+ else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later
+ return Instance; // return the Instance object
+
+}
+
+
+
+
+/**
+ * jquery.layout.state 1.0
+ * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
+ *
+ * Copyright (c) 2010
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ * @dependancies: $.ui.cookie (above)
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ */
+/*
+ * State-management options stored in options.stateManagement, which includes a .cookie hash
+ * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden
+ *
+ * // STATE/COOKIE OPTIONS
+ * @example $(el).layout({
+ stateManagement: {
+ enabled: true
+ , stateKeys: "east.size,west.size,east.isClosed,west.isClosed"
+ , cookie: { name: "appLayout", path: "/" }
+ }
+ })
+ * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies
+ * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } })
+ * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" })
+ *
+ * // STATE/COOKIE METHODS
+ * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} );
+ * @example myLayout.loadCookie();
+ * @example myLayout.deleteCookie();
+ * @example var JSON = myLayout.readState(); // CURRENT Layout State
+ * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie)
+ * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash)
+ *
+ * CUSTOM STATE-MANAGEMENT (eg, saved in a database)
+ * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" );
+ * @example myLayout.loadState( JSON );
+ */
+
+/**
+ * UI COOKIE UTILITY
+ *
+ * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then...
+ * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin
+ * NOTE: This utility is REQUIRED by the layout.state plugin
+ *
+ * Cookie methods in Layout are created as part of State Management
+ */
+if (!$.ui) $.ui = {};
+$.ui.cookie = {
+
+ // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6
+ acceptsCookies: !!navigator.cookieEnabled
+
+, read: function (name) {
+ var
+ c = document.cookie
+ , cs = c ? c.split(';') : []
+ , pair // loop var
+ ;
+ for (var i=0, n=cs.length; i < n; i++) {
+ pair = $.trim(cs[i]).split('='); // name=value pair
+ if (pair[0] == name) // found the layout cookie
+ return decodeURIComponent(pair[1]);
+
+ }
+ return null;
+ }
+
+, write: function (name, val, cookieOpts) {
+ var
+ params = ''
+ , date = ''
+ , clear = false
+ , o = cookieOpts || {}
+ , x = o.expires
+ ;
+ if (x && x.toUTCString)
+ date = x;
+ else if (x === null || typeof x === 'number') {
+ date = new Date();
+ if (x > 0)
+ date.setDate(date.getDate() + x);
+ else {
+ date.setFullYear(1970);
+ clear = true;
+ }
+ }
+ if (date) params += ';expires='+ date.toUTCString();
+ if (o.path) params += ';path='+ o.path;
+ if (o.domain) params += ';domain='+ o.domain;
+ if (o.secure) params += ';secure';
+ document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie
+ }
+
+, clear: function (name) {
+ $.ui.cookie.write(name, '', {expires: -1});
+ }
+
+};
+// if cookie.jquery.js is not loaded, create an alias to replicate it
+// this may be useful to other plugins or code dependent on that plugin
+if (!$.cookie) $.cookie = function (k, v, o) {
+ var C = $.ui.cookie;
+ if (v === null)
+ C.clear(k);
+ else if (v === undefined)
+ return C.read(k);
+ else
+ C.write(k, v, o);
+};
+
+
+// tell Layout that the state plugin is available
+$.layout.plugins.stateManagement = true;
+
+// Add State-Management options to layout.defaults
+$.layout.config.optionRootKeys.push("stateManagement");
+$.layout.defaults.stateManagement = {
+ enabled: false // true = enable state-management, even if not using cookies
+, autoSave: true // Save a state-cookie when page exits?
+, autoLoad: true // Load the state-cookie when Layout inits?
+ // List state-data to save - must be pane-specific
+, stateKeys: "north.size,south.size,east.size,west.size,"+
+ "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+
+ "north.isHidden,south.isHidden,east.isHidden,west.isHidden"
+, cookie: {
+ name: "" // If not specified, will use Layout.name, else just "Layout"
+ , domain: "" // blank = current domain
+ , path: "" // blank = current page, '/' = entire website
+ , expires: "" // 'days' to keep cookie - leave blank for 'session cookie'
+ , secure: false
+ }
+};
+// Set stateManagement as a layout-option, NOT a pane-option
+$.layout.optionsMap.layout.push("stateManagement");
+
+/*
+ * State Management methods
+ */
+$.layout.state = {
+
+ /**
+ * Get the current layout state and save it to a cookie
+ *
+ * myLayout.saveCookie( keys, cookieOpts )
+ *
+ * @param {Object} inst
+ * @param {(string|Array)=} keys
+ * @param {Object=} opts
+ */
+ saveCookie: function (inst, keys, cookieOpts) {
+ var o = inst.options
+ , oS = o.stateManagement
+ , oC = $.extend(true, {}, oS.cookie, cookieOpts || null)
+ , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state
+ ;
+ $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC );
+ return $.extend(true, {}, data); // return COPY of state.stateData data
+ }
+
+ /**
+ * Remove the state cookie
+ *
+ * @param {Object} inst
+ */
+, deleteCookie: function (inst) {
+ var o = inst.options;
+ $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" );
+ }
+
+ /**
+ * Read & return data from the cookie - as JSON
+ *
+ * @param {Object} inst
+ */
+, readCookie: function (inst) {
+ var o = inst.options;
+ var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" );
+ // convert cookie string back to a hash and return it
+ return c ? $.layout.state.decodeJSON(c) : {};
+ }
+
+ /**
+ * Get data from the cookie and USE IT to loadState
+ *
+ * @param {Object} inst
+ */
+, loadCookie: function (inst) {
+ var c = $.layout.state.readCookie(inst); // READ the cookie
+ if (c) {
+ inst.state.stateData = $.extend(true, {}, c); // SET state.stateData
+ inst.loadState(c); // LOAD the retrieved state
+ }
+ return c;
+ }
+
+ /**
+ * Update layout options from the cookie, if one exists
+ *
+ * @param {Object} inst
+ * @param {Object=} stateData
+ * @param {boolean=} animate
+ */
+, loadState: function (inst, stateData, animate) {
+ stateData = $.layout.transformData( stateData ); // panes = default subkey
+ if ($.isEmptyObject( stateData )) return;
+ $.extend(true, inst.options, stateData); // update layout options
+ // if layout has already been initialized, then UPDATE layout state
+ if (inst.state.initialized) {
+ var pane, vis, o, s, h, c
+ , noAnimate = (animate===false)
+ ;
+ $.each($.layout.config.borderPanes, function (idx, pane) {
+ state = inst.state[pane];
+ o = stateData[ pane ];
+ if (typeof o != 'object') return; // no key, continue
+ s = o.size;
+ c = o.initClosed;
+ h = o.initHidden;
+ vis = state.isVisible;
+ // resize BEFORE opening
+ if (!vis)
+ inst.sizePane(pane, s, false, false);
+ if (h === true) inst.hide(pane, noAnimate);
+ else if (c === false) inst.open (pane, false, noAnimate);
+ else if (c === true) inst.close(pane, false, noAnimate);
+ else if (h === false) inst.show (pane, false, noAnimate);
+ // resize AFTER any other actions
+ if (vis)
+ inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed
+ });
+ };
+ }
+
+ /**
+ * Get the *current layout state* and return it as a hash
+ *
+ * @param {Object=} inst
+ * @param {(string|Array)=} keys
+ */
+, readState: function (inst, keys) {
+ var
+ data = {}
+ , alt = { isClosed: 'initClosed', isHidden: 'initHidden' }
+ , state = inst.state
+ , panes = $.layout.config.allPanes
+ , pair, pane, key, val
+ ;
+ if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user
+ if ($.isArray(keys)) keys = keys.join(",");
+ // convert keys to an array and change delimiters from '__' to '.'
+ keys = keys.replace(/__/g, ".").split(',');
+ // loop keys and create a data hash
+ for (var i=0, n=keys.length; i < n; i++) {
+ pair = keys[i].split(".");
+ pane = pair[0];
+ key = pair[1];
+ if ($.inArray(pane, panes) < 0) continue; // bad pane!
+ val = state[ pane ][ key ];
+ if (val == undefined) continue;
+ if (key=="isClosed" && state[pane]["isSliding"])
+ val = true; // if sliding, then *really* isClosed
+ ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val;
+ }
+ return data;
+ }
+
+ /**
+ * Stringify a JSON hash so can save in a cookie or db-field
+ */
+, encodeJSON: function (JSON) {
+ return parse(JSON);
+ function parse (h) {
+ var D=[], i=0, k, v, t; // k = key, v = value
+ for (k in h) {
+ v = h[k];
+ t = typeof v;
+ if (t == 'string') // STRING - add quotes
+ v = '"'+ v +'"';
+ else if (t == 'object') // SUB-KEY - recurse into it
+ v = parse(v);
+ D[i++] = '"'+ k +'":'+ v;
+ }
+ return '{'+ D.join(',') +'}';
+ };
+ }
+
+ /**
+ * Convert stringified JSON back to a hash object
+ * @see $.parseJSON(), adding in jQuery 1.4.1
+ */
+, decodeJSON: function (str) {
+ try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; }
+ catch (e) { return {}; }
+ }
+
+
+, _create: function (inst) {
+ var _ = $.layout.state;
+ // ADD State-Management plugin methods to inst
+ $.extend( inst, {
+ // readCookie - update options from cookie - returns hash of cookie data
+ readCookie: function () { return _.readCookie(inst); }
+ // deleteCookie
+ , deleteCookie: function () { _.deleteCookie(inst); }
+ // saveCookie - optionally pass keys-list and cookie-options (hash)
+ , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); }
+ // loadCookie - readCookie and use to loadState() - returns hash of cookie data
+ , loadCookie: function () { return _.loadCookie(inst); }
+ // loadState - pass a hash of state to use to update options
+ , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); }
+ // readState - returns hash of current layout-state
+ , readState: function (keys) { return _.readState(inst, keys); }
+ // add JSON utility methods too...
+ , encodeJSON: _.encodeJSON
+ , decodeJSON: _.decodeJSON
+ });
+
+ // init state.stateData key, even if plugin is initially disabled
+ inst.state.stateData = {};
+
+ // read and load cookie-data per options
+ var oS = inst.options.stateManagement;
+ if (oS.enabled) {
+ if (oS.autoLoad) // update the options from the cookie
+ inst.loadCookie();
+ else // don't modify options - just store cookie data in state.stateData
+ inst.state.stateData = inst.readCookie();
+ }
+ }
+
+, _unload: function (inst) {
+ var oS = inst.options.stateManagement;
+ if (oS.enabled) {
+ if (oS.autoSave) // save a state-cookie automatically
+ inst.saveCookie();
+ else // don't save a cookie, but do store state-data in state.stateData key
+ inst.state.stateData = inst.readState();
+ }
+ }
+
+};
+
+// add state initialization method to Layout's onCreate array of functions
+$.layout.onCreate.push( $.layout.state._create );
+$.layout.onUnload.push( $.layout.state._unload );
+
+
+
+
+/**
+ * jquery.layout.buttons 1.0
+ * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
+ *
+ * Copyright (c) 2010
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ *
+ * Docs: [ to come ]
+ * Tips: [ to come ]
+ */
+
+// tell Layout that the state plugin is available
+$.layout.plugins.buttons = true;
+
+// Add buttons options to layout.defaults
+$.layout.defaults.autoBindCustomButtons = false;
+// Specify autoBindCustomButtons as a layout-option, NOT a pane-option
+$.layout.optionsMap.layout.push("autoBindCustomButtons");
+
+var lang = $.layout.language;
+
+/*
+ * Button methods
+ */
+$.layout.buttons = {
+
+ /**
+ * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons
+ *
+ * @see _create()
+ *
+ * @param {Object} inst Layout Instance object
+ */
+ init: function (inst) {
+ var pre = "ui-layout-button-"
+ , layout = inst.options.name || ""
+ , name;
+ $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) {
+ $.each($.layout.config.borderPanes, function (ii, pane) {
+ $("."+pre+action+"-"+pane).each(function(){
+ // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name'
+ name = $(this).data("layoutName") || $(this).attr("layoutName");
+ if (name == undefined || name === layout)
+ inst.bindButton(this, action, pane);
+ });
+ });
+ });
+ }
+
+ /**
+ * Helper function to validate params received by addButton utilities
+ *
+ * Two classes are added to the element, based on the buttonClass...
+ * The type of button is appended to create the 2nd className:
+ * - ui-layout-button-pin // action btnClass
+ * - ui-layout-button-pin-west // action btnClass + pane
+ * - ui-layout-button-toggle
+ * - ui-layout-button-open
+ * - ui-layout-button-close
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ *
+ * @return {Array.<Object>} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null
+ */
+, get: function (inst, selector, pane, action) {
+ var $E = $(selector)
+ , o = inst.options
+ , err = o.showErrorMessages
+ ;
+ if (!$E.length) { // element not found
+ if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true);
+ }
+ else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified
+ if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true);
+ $E = $(""); // NO BUTTON
+ }
+ else { // VALID
+ var btn = o[pane].buttonClass +"-"+ action;
+ $E .addClass( btn +" "+ btn +"-"+ pane )
+ .data("layoutName", o.name); // add layout identifier - even if blank!
+ }
+ return $E;
+ }
+
+
+ /**
+ * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc.
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} action
+ * @param {string} pane
+ */
+, bind: function (inst, selector, action, pane) {
+ var _ = $.layout.buttons;
+ switch (action.toLowerCase()) {
+ case "toggle": _.addToggle (inst, selector, pane); break;
+ case "open": _.addOpen (inst, selector, pane); break;
+ case "close": _.addClose (inst, selector, pane); break;
+ case "pin": _.addPin (inst, selector, pane); break;
+ case "toggle-slide": _.addToggle (inst, selector, pane, true); break;
+ case "open-slide": _.addOpen (inst, selector, pane, true); break;
+ }
+ return inst;
+ }
+
+ /**
+ * Add a custom Toggler button for a pane
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ * @param {boolean=} slide true = slide-open, false = pin-open
+ */
+, addToggle: function (inst, selector, pane, slide) {
+ $.layout.buttons.get(inst, selector, pane, "toggle")
+ .click(function(evt){
+ inst.toggle(pane, !!slide);
+ evt.stopPropagation();
+ });
+ return inst;
+ }
+
+ /**
+ * Add a custom Open button for a pane
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ * @param {boolean=} slide true = slide-open, false = pin-open
+ */
+, addOpen: function (inst, selector, pane, slide) {
+ $.layout.buttons.get(inst, selector, pane, "open")
+ .attr("title", lang.Open)
+ .click(function (evt) {
+ inst.open(pane, !!slide);
+ evt.stopPropagation();
+ });
+ return inst;
+ }
+
+ /**
+ * Add a custom Close button for a pane
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the button is for: 'north', 'south', etc.
+ */
+, addClose: function (inst, selector, pane) {
+ $.layout.buttons.get(inst, selector, pane, "close")
+ .attr("title", lang.Close)
+ .click(function (evt) {
+ inst.close(pane);
+ evt.stopPropagation();
+ });
+ return inst;
+ }
+
+ /**
+ * Add a custom Pin button for a pane
+ *
+ * Four classes are added to the element, based on the paneClass for the associated pane...
+ * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin:
+ * - ui-layout-pane-pin
+ * - ui-layout-pane-west-pin
+ * - ui-layout-pane-pin-up
+ * - ui-layout-pane-west-pin-up
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button"
+ * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc.
+ */
+, addPin: function (inst, selector, pane) {
+ var _ = $.layout.buttons
+ , $E = _.get(inst, selector, pane, "pin");
+ if ($E.length) {
+ var s = inst.state[pane];
+ $E.click(function (evt) {
+ _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed));
+ if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open
+ else inst.close( pane ); // slide-closed
+ evt.stopPropagation();
+ });
+ // add up/down pin attributes and classes
+ _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding));
+ // add this pin to the pane data so we can 'sync it' automatically
+ // PANE.pins key is an array so we can store multiple pins for each pane
+ s.pins.push( selector ); // just save the selector string
+ }
+ return inst;
+ }
+
+ /**
+ * Change the class of the pin button to make it look 'up' or 'down'
+ *
+ * @see addPin(), syncPins()
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {Array.<Object>} $Pin The pin-span element in a jQuery wrapper
+ * @param {string} pane These are the params returned to callbacks by layout()
+ * @param {boolean} doPin true = set the pin 'down', false = set it 'up'
+ */
+, setPinState: function (inst, $Pin, pane, doPin) {
+ var updown = $Pin.attr("pin");
+ if (updown && doPin === (updown=="down")) return; // already in correct state
+ var
+ pin = inst.options[pane].buttonClass +"-pin"
+ , side = pin +"-"+ pane
+ , UP = pin +"-up "+ side +"-up"
+ , DN = pin +"-down "+side +"-down"
+ ;
+ $Pin
+ .attr("pin", doPin ? "down" : "up") // logic
+ .attr("title", doPin ? lang.Unpin : lang.Pin)
+ .removeClass( doPin ? UP : DN )
+ .addClass( doPin ? DN : UP )
+ ;
+ }
+
+ /**
+ * INTERNAL function to sync 'pin buttons' when pane is opened or closed
+ * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes
+ *
+ * @see open(), close()
+ *
+ * @param {Object} inst Layout Instance object
+ * @param {string} pane These are the params returned to callbacks by layout()
+ * @param {boolean} doPin True means set the pin 'down', False means 'up'
+ */
+, syncPinBtns: function (inst, pane, doPin) {
+ // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE
+ $.each(state[pane].pins, function (i, selector) {
+ $.layout.buttons.setPinState(inst, $(selector), pane, doPin);
+ });
+ }
+
+
+, _load: function (inst) {
+ var _ = $.layout.buttons;
+ // ADD Button methods to Layout Instance
+ // Note: sel = jQuery Selector string
+ $.extend( inst, {
+ bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); }
+ // DEPRECATED METHODS
+ , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); }
+ , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); }
+ , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); }
+ , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); }
+ });
+
+ // init state array to hold pin-buttons
+ for (var i=0; i<4; i++) {
+ var pane = $.layout.config.borderPanes[i];
+ inst.state[pane].pins = [];
+ }
+
+ // auto-init buttons onLoad if option is enabled
+ if ( inst.options.autoBindCustomButtons )
+ _.init(inst);
+ }
+
+, _unload: function (inst) {
+ // TODO: unbind all buttons???
+ }
+
+};
+
+// add initialization method to Layout's onLoad array of functions
+$.layout.onLoad.push( $.layout.buttons._load );
+//$.layout.onUnload.push( $.layout.buttons._unload );
+
+
+
+/**
+ * jquery.layout.browserZoom 1.0
+ * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $
+ *
+ * Copyright (c) 2012
+ * Kevin Dalman (http://allpro.net)
+ *
+ * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
+ * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
+ *
+ * @dependancies: UI Layout 1.3.0.rc30.1 or higher
+ *
+ * @support: http://groups.google.com/group/jquery-ui-layout
+ *
+ * @todo: Extend logic to handle other problematic zooming in browsers
+ * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event
+ */
+
+// tell Layout that the plugin is available
+$.layout.plugins.browserZoom = true;
+
+$.layout.defaults.browserZoomCheckInterval = 1000;
+$.layout.optionsMap.layout.push("browserZoomCheckInterval");
+
+/*
+ * browserZoom methods
+ */
+$.layout.browserZoom = {
+
+ _init: function (inst) {
+ // abort if browser does not need this check
+ if ($.layout.browserZoom.ratio() !== false)
+ $.layout.browserZoom._setTimer(inst);
+ }
+
+, _setTimer: function (inst) {
+ // abort if layout destroyed or browser does not need this check
+ if (inst.destroyed) return;
+ var o = inst.options
+ , s = inst.state
+ // don't need check if inst has parentLayout, but check occassionally in case parent destroyed!
+ // MINIMUM 100ms interval, for performance
+ , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 )
+ ;
+ // set the timer
+ setTimeout(function(){
+ if (inst.destroyed || !o.resizeWithWindow) return;
+ var d = $.layout.browserZoom.ratio();
+ if (d !== s.browserZoom) {
+ s.browserZoom = d;
+ inst.resizeAll();
+ }
+ // set a NEW timeout
+ $.layout.browserZoom._setTimer(inst);
+ }
+ , ms );
+ }
+
+, ratio: function () {
+ var w = window
+ , s = screen
+ , d = document
+ , dE = d.documentElement || d.body
+ , b = $.layout.browser
+ , v = b.version
+ , r, sW, cW
+ ;
+ // we can ignore all browsers that fire window.resize event onZoom
+ if ((b.msie && v > 8)
+ || !b.msie
+ ) return false; // don't need to track zoom
+
+ if (s.deviceXDPI)
+ return calc(s.deviceXDPI, s.systemXDPI);
+ // everything below is just for future reference!
+ if (b.webkit && (r = d.body.getBoundingClientRect))
+ return calc((r.left - r.right), d.body.offsetWidth);
+ if (b.webkit && (sW = w.outerWidth))
+ return calc(sW, w.innerWidth);
+ if ((sW = s.width) && (cW = dE.clientWidth))
+ return calc(sW, cW);
+ return false; // no match, so cannot - or don't need to - track zoom
+
+ function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); }
+ }
+
+};
+// add initialization method to Layout's onLoad array of functions
+$.layout.onReady.push( $.layout.browserZoom._init );
+
+
+
+})( jQuery ); \ No newline at end of file
diff --git a/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css b/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css
new file mode 100644
index 0000000..c02c76f
--- /dev/null
+++ b/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css
@@ -0,0 +1,304 @@
+/*!
+ * jQuery UI CSS Framework 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*!
+ * jQuery UI CSS Framework 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*!
+ * jQuery UI Tabs 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
diff --git a/webhelp/template/common/main.js b/webhelp/template/common/main.js
index 714cdee..5957fb4 100644
--- a/webhelp/template/common/main.js
+++ b/webhelp/template/common/main.js
@@ -75,7 +75,7 @@ $(document).ready(function() {
//$("#doSearch").button(); //add jquery button styling to 'Go' button
// When you click on a link to an anchor, scroll down
- // 105 px to cope with the fact that the banner
+ // 120 px to cope with the fact that the banner
// hides the top 95px or so of the page.
// This code deals with the problem when
// you click on a link from another page.
diff --git a/webhelp/template/common/splitterInit.js b/webhelp/template/common/splitterInit.js
new file mode 100644
index 0000000..090b814
--- /dev/null
+++ b/webhelp/template/common/splitterInit.js
@@ -0,0 +1,40 @@
+
+ var myLayout;
+
+ jQuery(document).ready(function ($) {
+
+ myLayout = $('body').layout({
+ //Defining panes
+ west__paneSelector: "#sidebar"
+ , north__paneSelector: "#header"
+ , center__paneSelector: "#content"
+
+ // some resizing/toggling settings
+ , north__resizable: false // OVERRIDE the pane-default of 'resizable=true'
+ , north__spacing_open: 0 // no resizer-bar when open (zero height)
+ , west__slideable: false
+ , west__spacing_closed: 6
+ , west__spacing_open: 4
+
+ ,
+ // some pane-size settings
+ west__minSize: 280
+ , north__minSize: 99
+
+ // some pane animation settings
+ , west__animatePaneSizing: false
+ , west__fxSpeed_size: "normal"
+ , west__fxSpeed_open: 10
+ , west__fxSettings_open: {easing: ""}
+ , west__fxName_close: "none"
+
+
+ , stateManagement__enabled: true // automatic cookie load & save enabled by default
+ , stateManagement__cookie__name: "sidebar_state"
+ });
+
+
+
+
+ });
+
diff --git a/webhelp/template/search/default.props b/webhelp/template/search/default.props
new file mode 100644
index 0000000..22edf43
--- /dev/null
+++ b/webhelp/template/search/default.props
@@ -0,0 +1 @@
+DEF01=a \ No newline at end of file
diff --git a/webhelp/template/search/en-us.props b/webhelp/template/search/en-us.props
new file mode 100644
index 0000000..da284ce
--- /dev/null
+++ b/webhelp/template/search/en-us.props
@@ -0,0 +1,45 @@
+DEF01=this
+DEF02=is
+DEF03=the
+DEF04=in
+DEF05=i
+DEF06=on
+DEF07=a
+DEF08=about
+DEF09=an
+DEF10=are
+DEF11=as
+DEF12=at
+DEF13=be
+DEF14=by
+DEF15=com
+DEF16=de
+DEF17=en
+DEF18=for
+DEF19=from
+DEF20=how
+DEF21=it
+DEF22=la
+DEF23=of
+DEF24=on
+DEF25=or
+DEF26=that
+DEF27=to
+DEF28=was
+DEF29=what
+DEF30=when
+DEF31=where
+DEF32=who
+DEF33=will
+DEF34=with
+DEF35=und
+DEF36=Next
+DEF37=Prev
+DEF38=Home
+DEF39=Motive
+DEF40=Inc
+DEF41=Copyright
+DEF42=All
+DEF43=rights
+DEF44=reserved
+DEF45=Up \ No newline at end of file
diff --git a/webhelp/template/search/es-es.props b/webhelp/template/search/es-es.props
new file mode 100644
index 0000000..fb73bdc
--- /dev/null
+++ b/webhelp/template/search/es-es.props
@@ -0,0 +1,179 @@
+DEF01=un
+DEF02=una
+DEF03=unas
+DEF04=unos
+DEF05=uno
+DEF06=sobre
+DEF07=todo
+DEF08=también
+DEF09=tras
+DEF10=otro
+DEF11=algún
+DEF12=alguno
+DEF13=alguna
+DEF14=algunos
+DEF15=algunas
+DEF16=ser
+DEF17=es
+DEF18=soy
+DEF19=eres
+DEF20=somos
+DEF21=sois
+DEF22=estoy
+DEF23=esta
+DEF24=estamos
+DEF25=estais
+DEF26=estan
+DEF27=como
+DEF28=en
+DEF29=para
+DEF30=atras
+DEF31=porque
+DEF32=por
+DEF33=estado
+DEF34=estaba
+DEF35=ante
+DEF36=antes
+DEF37=siendo
+DEF38=ambos
+DEF39=pero
+DEF40=por
+DEF41=poder
+DEF42=puede
+DEF43=puedo
+DEF44=podemos
+DEF45=podeis
+DEF46=pueden
+DEF47=fui
+DEF48=fue
+DEF49=fuimos
+DEF50=fueron
+DEF51=hacer
+DEF52=hago
+DEF53=hace
+DEF54=hacemos
+DEF55=haceis
+DEF56=hacen
+DEF57=cada
+DEF58=fin
+DEF59=incluso
+DEF60=primero
+DEF61=desde
+DEF62=conseguir
+DEF63=consigo
+DEF64=consigue
+DEF65=consigues
+DEF66=conseguimos
+DEF67=consiguen
+DEF68=ir
+DEF69=voy
+DEF70=va
+DEF71=vamos
+DEF72=vais
+DEF73=van
+DEF74=vaya
+DEF75=gueno
+DEF76=ha
+DEF77=tener
+DEF78=tengo
+DEF79=tiene
+DEF80=tenemos
+DEF81=teneis
+DEF82=tienen
+DEF83=el
+DEF84=la
+DEF85=lo
+DEF86=las
+DEF87=los
+DEF88=su
+DEF89=aqui
+DEF90=mio
+DEF91=tuyo
+DEF92=ellos
+DEF93=ellas
+DEF94=nos
+DEF95=nosotros
+DEF96=vosotros
+DEF97=vosotras
+DEF98=si
+DEF99=dentro
+DEF100=solo
+DEF101=solamente
+DEF102=saber
+DEF103=sabes
+DEF104=sabe
+DEF105=sabemos
+DEF106=sabeis
+DEF107=saben
+DEF108=ultimo
+DEF109=largo
+DEF110=bastante
+DEF111=haces
+DEF112=muchos
+DEF113=aquellos
+DEF114=aquellas
+DEF115=sus
+DEF116=entonces
+DEF117=tiempo
+DEF118=verdad
+DEF119=verdadero
+DEF120=verdadera
+DEF121=cierto
+DEF122=ciertos
+DEF123=cierta
+DEF124=ciertas
+DEF125=intentar
+DEF126=intento
+DEF127=intenta
+DEF128=intentas
+DEF129=intentamos
+DEF130=intentais
+DEF131=intentan
+DEF132=dos
+DEF133=bajo
+DEF134=arriba
+DEF135=encima
+DEF136=usar
+DEF137=uso
+DEF138=usas
+DEF139=usa
+DEF140=usamos
+DEF141=usais
+DEF142=usan
+DEF143=emplear
+DEF144=empleo
+DEF145=empleas
+DEF146=emplean
+DEF147=ampleamos
+DEF148=empleais
+DEF149=valor
+DEF150=muy
+DEF151=era
+DEF152=eras
+DEF153=eramos
+DEF154=eran
+DEF155=modo
+DEF156=bien
+DEF157=cual
+DEF158=cuando
+DEF159=donde
+DEF160=mientras
+DEF161=quien
+DEF162=con
+DEF163=entre
+DEF164=sin
+DEF165=trabajo
+DEF166=trabajar
+DEF167=trabajas
+DEF168=trabaja
+DEF169=trabajamos
+DEF170=trabajais
+DEF171=trabajan
+DEF172=podria
+DEF173=podrias
+DEF174=podriamos
+DEF175=podrian
+DEF176=podriais
+DEF177=yo
+DEF178=aquel
+DEF179=qué \ No newline at end of file
diff --git a/webhelp/template/search/ja-jp.props b/webhelp/template/search/ja-jp.props
new file mode 100644
index 0000000..2756805
--- /dev/null
+++ b/webhelp/template/search/ja-jp.props
@@ -0,0 +1 @@
+J01=\\u306B \ No newline at end of file
diff --git a/webhelp/docs/content/search/nwSearchFnt.js b/webhelp/template/search/nwSearchFnt.js
index 45b7c28..b115dbe 100644
--- a/webhelp/docs/content/search/nwSearchFnt.js
+++ b/webhelp/template/search/nwSearchFnt.js
@@ -62,8 +62,13 @@ function Verifie(searchForm) {
else {
var splitSpace = searchTextField.split(" ");
var splitWords = [];
- for (var i = 0 ; i < splitSpace.length ; i++) {
+ for (var i = 0 ; i < splitSpace.length ; i++) {
var splitDot = splitSpace[i].split(".");
+
+ if(!(splitDot.length == 1)){
+ splitWords.push(splitSpace[i]);
+ }
+
for (var i1 = 0; i1 < splitDot.length; i1++) {
var splitColon = splitDot[i1].split(":");
for (var i2 = 0; i2 < splitColon.length; i2++) {
diff --git a/webhelp/template/search/punctuation.props b/webhelp/template/search/punctuation.props
new file mode 100644
index 0000000..d3e3fcd
--- /dev/null
+++ b/webhelp/template/search/punctuation.props
@@ -0,0 +1,31 @@
+Punct01=\\u3002
+Punct02=\\u3003
+Punct03=\\u300C
+Punct04=\\u300D
+Punct05=\\u300E
+Punct06=\\u300F
+Punct07=\\u301D
+Punct08=\\u301E
+Punct09=\\u301F
+Punct10=\\u309B
+Punct11=\\u2018
+Punct12=\\u2019
+Punct13=\\u201A
+Punct14=\\u201C
+Punct15=\\u201D
+Punct16=\\u201E
+Punct17=\\u2032
+Punct18=\\u2033
+Punct19=\\u2035
+Punct20=\\u2039
+Punct21=\\u203A
+Punct22=\\u201E
+Punct23=\\u00BB
+Punct24=\\u00AB
+Punct25=©
+Punct26=’
+Punct27=\\u00A0
+Punct28=\\u2014
+
+
+
diff --git a/webhelp/template/search/stemmers/de_stemmer.js b/webhelp/template/search/stemmers/de_stemmer.js
new file mode 100644
index 0000000..7ff3822
--- /dev/null
+++ b/webhelp/template/search/stemmers/de_stemmer.js
@@ -0,0 +1,247 @@
+/*
+ * Author: Joder Illi
+ *
+ * Copyright (c) 2010, FormBlitz AG
+ * All rights reserved.
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html
+ * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php
+ *
+ * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license.
+ *
+ */
+
+//var stemmer = function Stemmer() {
+ /*
+ German includes the following accented forms,
+ ä ö ü
+ and a special letter, ß, equivalent to double s.
+ The following letters are vowels:
+ a e i o u y ä ö ü
+ */
+
+ var stemmer = function(word) {
+ /*
+ Put u and y between vowels into upper case
+ */
+ word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2');
+ word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2');
+
+ /*
+ and then do the following mappings,
+ (a) replace ß with ss,
+ (a) replace ae with ä, Not doing these, have trouble with diphtongs
+ (a) replace oe with ö, Not doing these, have trouble with diphtongs
+ (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs
+ So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found.
+ */
+ word = word.replace(/ß/g, 'ss');
+ //word = word.replace(/ae/g, 'ä');
+ //word = word.replace(/oe/g, 'ö');
+ //word = word.replace(/([^q])ue/g, '$1ü');
+
+ /*
+ R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters.
+ R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel.
+ R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel.
+ */
+
+ var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+
+ if (r1Index != -1) {
+ var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ }
+ }
+
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t.
+ Define a valid st-ending as the same list, excluding letter r.
+ */
+
+ /*
+ Do each of steps 1, 2 and 3.
+ */
+
+ /*
+ Step 1:
+ Search for the longest among the following suffixes,
+ (a) em ern er
+ (b) e en es
+ (c) s (preceded by a valid s-ending)
+ */
+ var a1Index = word.search(/(em|ern|er)$/g);
+ var b1Index = word.search(/(e|en|es)$/g);
+ var c1Index = word.search(/([bdfghklmnrt]s)$/g);
+ if (c1Index != -1) {
+ c1Index++;
+ }
+ var index1 = 10000;
+ var optionUsed1 = '';
+ if (a1Index != -1 && a1Index < index1) {
+ optionUsed1 = 'a';
+ index1 = a1Index;
+ }
+ if (b1Index != -1 && b1Index < index1) {
+ optionUsed1 = 'b';
+ index1 = b1Index;
+ }
+ if (c1Index != -1 && c1Index < index1) {
+ optionUsed1 = 'c';
+ index1 = c1Index;
+ }
+
+ /*
+ and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s.
+ (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis)
+ */
+
+ if (index1 != 10000 && r1Index != -1) {
+ if (index1 >= r1Index) {
+ word = word.substring(0, index1);
+ if (optionUsed1 == 'b') {
+ if (word.search(/niss$/) != -1) {
+ word = word.substring(0, word.length -1);
+ }
+ }
+ }
+ }
+ /*
+ Step 2:
+ Search for the longest among the following suffixes,
+ (a) en er est
+ (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters)
+ */
+
+ var a2Index = word.search(/(en|er|est)$/g);
+ var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g);
+ if (b2Index != -1) {
+ b2Index += 4;
+ }
+
+ var index2 = 10000;
+ var optionUsed2 = '';
+ if (a2Index != -1 && a2Index < index2) {
+ optionUsed2 = 'a';
+ index2 = a2Index;
+ }
+ if (b2Index != -1 && b2Index < index2) {
+ optionUsed2 = 'b';
+ index2 = b2Index;
+ }
+
+ /*
+ and delete if in R1.
+ (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters)
+ */
+
+ if (index2 != 10000 && r1Index != -1) {
+ if (index2 >= r1Index) {
+ word = word.substring(0, index2);
+ }
+ }
+
+ /*
+ Step 3: d-suffixes (*)
+ Search for the longest among the following suffixes, and perform the action indicated.
+ end ung
+ delete if in R2
+ if preceded by ig, delete if in R2 and not preceded by e
+ ig ik isch
+ delete if in R2 and not preceded by e
+ lich heit
+ delete if in R2
+ if preceded by er or en, delete if in R1
+ keit
+ delete if in R2
+ if preceded by lich or ig, delete if in R2
+ */
+
+ var a3Index = word.search(/(end|ung)$/g);
+ var b3Index = word.search(/[^e](ig|ik|isch)$/g);
+ var c3Index = word.search(/(lich|heit)$/g);
+ var d3Index = word.search(/(keit)$/g);
+ if (b3Index != -1) {
+ b3Index ++;
+ }
+
+ var index3 = 10000;
+ var optionUsed3 = '';
+ if (a3Index != -1 && a3Index < index3) {
+ optionUsed3 = 'a';
+ index3 = a3Index;
+ }
+ if (b3Index != -1 && b3Index < index3) {
+ optionUsed3 = 'b';
+ index3 = b3Index;
+ }
+ if (c3Index != -1 && c3Index < index3) {
+ optionUsed3 = 'c';
+ index3 = c3Index;
+ }
+ if (d3Index != -1 && d3Index < index3) {
+ optionUsed3 = 'd';
+ index3 = d3Index;
+ }
+
+ if (index3 != 10000 && r2Index != -1) {
+ if (index3 >= r2Index) {
+ word = word.substring(0, index3);
+ var optionIndex = -1;
+ var optionSubsrt = '';
+ if (optionUsed3 == 'a') {
+ optionIndex = word.search(/[^e](ig)$/);
+ if (optionIndex != -1) {
+ optionIndex++;
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'c') {
+ optionIndex = word.search(/(er|en)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r1Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ } else if (optionUsed3 == 'd') {
+ optionIndex = word.search(/(lich|ig)$/);
+ if (optionIndex != -1) {
+ if (optionIndex >= r2Index) {
+ word = word.substring(0, optionIndex);
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ Finally,
+ turn U and Y back into lower case, and remove the umlaut accent from a, o and u.
+ */
+ word = word.replace(/U/g, 'u');
+ word = word.replace(/Y/g, 'y');
+ word = word.replace(/ä/g, 'a');
+ word = word.replace(/ö/g, 'o');
+ word = word.replace(/ü/g, 'u');
+
+ return word;
+ };
+//} \ No newline at end of file
diff --git a/webhelp/template/content/search/stemmers/en_stemmer.js b/webhelp/template/search/stemmers/en_stemmer.js
index 2117c1b..2117c1b 100644
--- a/webhelp/template/content/search/stemmers/en_stemmer.js
+++ b/webhelp/template/search/stemmers/en_stemmer.js
diff --git a/webhelp/template/search/stemmers/fr_stemmer.js b/webhelp/template/search/stemmers/fr_stemmer.js
new file mode 100644
index 0000000..34f9743
--- /dev/null
+++ b/webhelp/template/search/stemmers/fr_stemmer.js
@@ -0,0 +1,299 @@
+/*
+ * Author: Kasun Gajasinghe
+ * E-Mail: kasunbg AT gmail DOT com
+ * Date: 09.08.2010
+ *
+ * usage: stemmer(word);
+ * ex: var stem = stemmer(foobar);
+ * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html
+ *
+ * LICENSE:
+ *
+ * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var stemmer = function(word){
+// Letters in French include the following accented forms,
+// â à ç ë é ê è ï î ô û ù
+// The following letters are vowels:
+// a e i o u y â à ë é ê è ï î ô û ù
+
+ word = word.toLowerCase();
+ var oriWord = word;
+ word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel
+ word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2');
+ word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y');
+ word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1');
+
+ var rv='';
+ var rvIndex = -1;
+ if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){
+ rv = word.substring(3);
+ rvIndex = 3;
+ } else {
+ rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/);
+ if(rvIndex != -1){
+ rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex
+ rv = word.substring(rvIndex);
+ } else {
+ rvIndex = word.length;
+ }
+ }
+
+// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel.
+// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel
+ var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ var r1 = '';
+ if (r1Index != -1) {
+ r1Index += 2;
+ r1 = word.substring(r1Index);
+ } else {
+ r1Index = word.length;
+ }
+
+ var r2Index = -1;
+ var r2 = '';
+ if (r1Index != -1) {
+ r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/);
+ if (r2Index != -1) {
+ r2Index += 2;
+ r2 = r1.substring(r2Index);
+ r2Index += r1Index;
+ } else {
+ r2 = '';
+ r2Index = word.length;
+ }
+ }
+ if (r1Index != -1 && r1Index < 3) {
+ r1Index = 3;
+ r1 = word.substring(r1Index);
+ }
+
+ /*
+ Step 1: Standard suffix removal
+ */
+ var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/);
+ var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/);
+ var a3Index = word.search(/(logie|logies)$/);
+ var a4Index = word.search(/(usion|ution|usions|utions)$/);
+ var a5Index = word.search(/(ence|ences)$/);
+ var a6Index = word.search(/(ement|ements)$/);
+ var a7Index = word.search(/(ité|ités)$/);
+ var a8Index = word.search(/(if|ive|ifs|ives)$/);
+ var a9Index = word.search(/(eaux)$/);
+ var a10Index = word.search(/(aux)$/);
+ var a11Index = word.search(/(euse|euses)$/);
+ var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/);
+ var a13Index = word.search(/(amment)$/);
+ var a14Index = word.search(/(emment)$/);
+ var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/);
+
+ if(a1Index != -1 && a1Index >= r2Index){
+ word = word.substring(0,a1Index);
+ } else if(a2Index != -1 && a2Index >= r2Index){
+ word = word.substring(0,a2Index);
+ var a2Index2 = word.search(/(ic)$/);
+ if(a2Index2 != -1 && a2Index2 >= r2Index){
+ word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(a3Index != -1 && a3Index >= r2Index){
+ word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2
+ } else if(a4Index != -1 && a4Index >= r2Index){
+ word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2
+ } else if(a5Index != -1 && a5Index >= r2Index){
+ word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2
+ } else if(a6Index != -1 && a6Index >= rvIndex){
+ word = word.substring(0,a6Index);
+ if(word.search(/(iv)$/) >= r2Index){
+ word = word.replace(/(iv)$/, '');
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ }
+ } else if(word.search(/(eus)$/) != -1){
+ var a6Index2 = word.search(/(eus)$/);
+ if(a6Index2 >=r2Index){
+ word = word.substring(0, a6Index2);
+ } else if(a6Index2 >= r1Index){
+ word = word.substring(0,a6Index2)+"eux";
+ }
+ } else if(word.search(/(abl|iqU)$/) >= r2Index){
+ word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2,
+ } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){
+ word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2,
+ }
+ } else if(a7Index != -1 && a7Index >= r2Index){
+ word = word.substring(0,a7Index); //delete if in R2
+ if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise,
+ var a7Index2 = word.search(/(abil)$/);
+ if(a7Index2 >=r2Index){
+ word = word.substring(0, a7Index2);
+ } else {
+ word = word.substring(0,a7Index2)+"abl";
+ }
+ } else if(word.search(/(ic)$/) != -1){
+ var a7Index3 = word.search(/(ic)$/);
+ if(a7Index3 != -1 && a7Index3 >= r2Index){
+ word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2,
+ } else { //else replace by iqU
+ word = word.replace(/(ic)$/,'iqU');
+ }
+ } else if(word.search(/(iv)$/) != r2Index){
+ word = word.replace(/(iv)$/,'');
+ }
+ } else if(a8Index != -1 && a8Index >= r2Index){
+ word = word.substring(0,a8Index);
+ if(word.search(/(at)$/) >= r2Index){
+ word = word.replace(/(at)$/, '');
+ if(word.search(/(ic)$/) >= r2Index){
+ word = word.replace(/(ic)$/, '');
+ } else { word = word.replace(/(ic)$/, 'iqU'); }
+ }
+ } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau')
+ } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al')
+ } else if(a11Index != -1 ){
+ var a11Index2 = word.search(/(euse|euses)$/);
+ if(a11Index2 >=r2Index){
+ word = word.substring(0, a11Index2);
+ } else if(a11Index2 >= r1Index){
+ word = word.substring(0, a11Index2)+"eux";
+ }
+ } else if(a12Index!=-1 && a12Index>=r1Index){
+ word = word.substring(0,a12Index+1); //+1- amendment to non-vowel
+ } else if(a13Index!=-1 && a13Index>=rvIndex){
+ word = word.replace(/(amment)$/,'ant');
+ } else if(a14Index!=-1 && a14Index>=rvIndex){
+ word = word.replace(/(emment)$/,'ent');
+ } else if(a15Index!=-1 && a15Index>=rvIndex){
+ word = word.substring(0,a15Index+1);
+ }
+
+ /* Step 2a: Verb suffixes beginning i*/
+ var wordStep1 = word;
+ var step2aDone = false;
+ if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){
+ step2aDone = true;
+ var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i;
+ if(word.search(b1Regex) >= rvIndex){
+ word = word.replace(b1Regex,'$1');
+ }
+ }
+
+ /* Step 2b: Other verb suffixes*/
+ if (step2aDone && wordStep1 == word) {
+ if (word.search(/(ions)$/) >= r2Index) {
+ word = word.replace(/(ions)$/, '');
+ } else {
+ var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i;
+ if (word.search(b2Regex) >= rvIndex) {
+ word = word.replace(b2Regex, '');
+ } else {
+ var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex) >= rvIndex) {
+ word = word.replace(b3Regex, '');
+ } else {
+ var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i;
+ if (word.search(b3Regex2) >= rvIndex) {
+ word = word.replace(b3Regex2, '');
+ }
+ }
+ }
+ }
+ }
+
+ if(oriWord != word.toLowerCase()){
+ /* Step 3 */
+ var rep = '';
+ if(word.search(/Y$/) != -1) {
+ word = word.replace(/Y$/, 'i');
+ } else if(word.search(/ç$/) != -1){
+ word = word.replace(/ç$/, 'c');
+ }
+ } else {
+ /* Step 4 */
+ //If the word ends s, not preceded by a, i, o, u, è or s, delete it.
+ if (word.search(/([^aiouès])s$/) >= rvIndex) {
+ word = word.replace(/([^aiouès])s$/, '$1');
+ }
+ var e1Index = word.search(/ion$/);
+ if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) {
+ word = word.substring(0, e1Index);
+ } else {
+ var e2Index = word.search(/(ier|ière|Ier|Ière)$/);
+ if (e2Index != -1 && e2Index >= rvIndex) {
+ word = word.substring(0, e2Index) + "i";
+ } else {
+ if (word.search(/e$/) >= rvIndex) {
+ word = word.replace(/e$/, ''); //delete last e
+ } else if (word.search(/guë$/) >= rvIndex) {
+ word = word.replace(/guë$/, 'gu');
+ }
+ }
+ }
+ }
+
+ /* Step 5: Undouble */
+ //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1');
+ word = word.replace(/(en|on)(n)$/,'$1');
+ word = word.replace(/(ett)$/,'et');
+ word = word.replace(/(el|eil)(l)$/,'$1');
+
+ /* Step 6: Un-accent */
+ word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1');
+ word = word.toLowerCase();
+ return word;
+};
+
+var eqOut = new Array();
+var noteqOut = new Array();
+var eqCount = 0;
+/*
+To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output.
+Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will
+compare the output with COut.
+ (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This
+ will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help.
+ */
+function testFr(){
+ var start = new Date().getTime(); //execution time
+ eqCount = 0;
+ eqOut = new Array();
+ noteqOut = new Array();
+ for(var k=0;k<voc.length;k++){
+ if(COut[k]==stemmer(voc[k])){
+ eqCount++;
+ eqOut.push("v: "+voc[k]+" c: "+COut[k]);
+ } else {
+ noteqOut.push(voc[k]+", c: "+COut[k]+" s:"+stemmer(voc[k]));
+ }
+ }
+ var end = new Date().getTime(); //execution time
+ var time = end-start;
+ alert("equal count= "+eqCount+" out of "+voc.length+" words. time= "+time+" ms");
+ //console.log("equal count= "+eqCount+" out of "+voc.length+" words. time= "+time+" ms");
+}
+
+
diff --git a/webhelp/xsl/webhelp-common.xsl b/webhelp/xsl/webhelp-common.xsl
index 7224f6e..651e638 100644
--- a/webhelp/xsl/webhelp-common.xsl
+++ b/webhelp/xsl/webhelp-common.xsl
@@ -6,7 +6,7 @@
version="1.0" xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="exsl ng db">
-<!-- ********************************************************************
+ <!-- ********************************************************************
$Id$
********************************************************************
@@ -27,10 +27,11 @@
</xsl:param>
<!-- Set some reasonable defaults for webhelp output -->
+ <xsl:param name="webhelp.common.dir">common/</xsl:param>
<xsl:param name="chunker.output.indent">yes</xsl:param>
<xsl:param name="navig.showtitles">0</xsl:param>
<xsl:param name="manifest.in.base.dir" select="0"/>
- <xsl:param name="base.dir" select="concat($webhelp.base.dir,'/content/')"/>
+ <xsl:param name="base.dir" select="concat($webhelp.base.dir,'/')"/>
<xsl:param name="suppress.navigation">0</xsl:param>
<!-- Generate the end-of-the-book index -->
<xsl:param name="generate.index" select="1"/>
@@ -84,27 +85,43 @@ set toc,title
Currently, only around 10 translations needed. -->
<!-- Moved to files under 'gentext/locale/', search for WebHelp -->
+ <xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+ <xsl:param name="document-title">
+ <xsl:apply-templates select="/*" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <title>
+ <xsl:copy-of select="$title"/> - <xsl:if test="parent::*"> - <xsl:copy-of select="$document-title"/></xsl:if>
+ </title>
+
+ </xsl:template>
<xsl:template name="system.head.content">
<xsl:param name="node" select="."/>
<xsl:text>
</xsl:text>
-<!--
-This avoids two problems in IE 8. We should someday figure out why this is happening and tweak the JavaScript so this <meta/> tag is not necessary:
-1. When you perform a search and click the Toggle Highlight button, IE 8 adds a line break before the highlighted word.
-2. If you click the show/hide toc button, the tab crashes.
-These problems go away when you add this IE=7 mode meta tag.
+ <!--
+The meta tag tells the IE rendering engine that it should use the latest, or edge, version of the IE rendering environment;It prevents IE from entring compatibility mode.
-->
- <meta http-equiv="X-UA-Compatible" content="IE=7" />
-<xsl:text>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <xsl:text>
</xsl:text>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<xsl:text>
+ <xsl:text>
</xsl:text>
- </xsl:template>
+ </xsl:template>
<!-- HTML <head> section customizations -->
<xsl:template name="user.head.content">
+ <xsl:param name="title">
+ <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+ </xsl:param>
+ <meta name="Section-title" content="{$title}"/>
+
<!-- <xsl:message>
webhelp.tree.cookie.id = <xsl:value-of select="$webhelp.tree.cookie.id"/> +++ <xsl:value-of select="count(//node())"/>
$webhelp.indexer.language = <xsl:value-of select="$webhelp.indexer.language"/> +++ <xsl:value-of select="count(//node())"/>
@@ -139,15 +156,27 @@ These problems go away when you add this IE=7 mode meta tag.
<!-- kasunbg: Order is important between the in-html-file css and the linked css files. Some css declarations in jquery-ui-1.8.2.custom.css are over-ridden.
If that's a concern, just remove the additional css contents inside these default jquery css files. I thought of keeping them intact for easier maintenance! -->
- <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/>
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" type="text/css" href="{$webhelp.common.dir}css/positioning.css"/>
<link rel="stylesheet" type="text/css" href="{$webhelp.common.dir}jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/>
<link rel="stylesheet" type="text/css" href="{$webhelp.common.dir}jquery/treeview/jquery.treeview.css"/>
<style type="text/css">
-noscript{
- font-weight:bold;
+
+#noscript{
+ font-weight:bold;
+ background-color: #55AA55;
+ font-weight: bold;
+ height: 25spx;
+ z-index: 3000;
+ top:0px;
+ width:100%;
+ position: relative;
+ border-bottom: solid 5px black;
+ text-align:center;
+ color: white;
}
+
input {
margin-bottom: 5px;
margin-top: 2px;
@@ -216,7 +245,33 @@ border: none; background: none; font-weight: none; color: none; }
.ui-tabs { padding: .2em;}
.ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;}
.ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); }
- </style>
+ /**
+ * Basic Layout Theme
+ *
+ * This theme uses the default layout class-names for all classes
+ * Add any 'custom class-names', from options: paneClass, resizerClass, togglerClass
+ */
+
+ .ui-layout-pane { /* all 'panes' */
+ background: #FFF;
+ border: 1px solid #BBB;
+ padding: 05x;
+ overflow: auto;
+ }
+
+ .ui-layout-resizer { /* all 'resizer-bars' */
+ background: #DDD;
+ top:100px
+ }
+
+ .ui-layout-toggler { /* all 'toggler-buttons' */
+ background: #AAA;
+ }
+
+ </style>
+ <xsl:comment><xsl:text>[if IE]>
+ &lt;link rel="stylesheet" type="text/css" href="../common/css/ie.css"/>
+ &lt;![endif]</xsl:text></xsl:comment>
<!--
browserDetect is an Oxygen addition to warn the user if they're using chrome from the file system.
@@ -225,10 +280,10 @@ border: none; background: none; font-weight: none; color: none; }
<script type="text/javascript" src="{$webhelp.common.dir}browserDetect.js">
<xsl:comment> </xsl:comment>
</script>
- <script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery-1.4.2.min.js">
+ <script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery-1.7.2.min.js">
<xsl:comment> </xsl:comment>
</script>
- <script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery-ui-1.8.2.custom.min.js">
+ <script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery.ui.all.js">
<xsl:comment> </xsl:comment>
</script>
<script type="text/javascript" src="{$webhelp.common.dir}jquery/jquery.cookie.js">
@@ -237,13 +292,15 @@ border: none; background: none; font-weight: none; color: none; }
<script type="text/javascript" src="{$webhelp.common.dir}jquery/treeview/jquery.treeview.min.js">
<xsl:comment> </xsl:comment>
</script>
-
- <xsl:if test="$webhelp.include.search.tab = 'true'">
- <!--Scripts/css stylesheets for Search-->
- <!-- TODO: Why THREE files? There's absolutely no need for having separate files.
- These should have been identified at the optimization phase! -->
- <script type="text/javascript" src="search/l10n.js">
- <xsl:comment></xsl:comment>
+ <script type="text/javascript" src="{$webhelp.common.dir}jquery/layout/jquery.layout.js">
+ <xsl:comment> </xsl:comment>
+ </script>
+ <xsl:if test="$webhelp.include.search.tab != '0'">
+ <!--Scripts/css stylesheets for Search-->
+ <!-- TODO: Why THREE files? There's absolutely no need for having separate files.
+ These should have been identified at the optimization phase! -->
+ <script type="text/javascript" src="search/l10n.js">
+ <xsl:comment/>
</script>
<script type="text/javascript" src="search/htmlFileInfoList.js">
<xsl:comment> </xsl:comment>
@@ -298,7 +355,7 @@ border: none; background: none; font-weight: none; color: none; }
<!--testing toc in the content page>
<xsl:call-template name="webhelptoctoc"/>
- <xsl:if test="$webhelp.include.search.tab != 'false'">
+ <xsl:if test="$webhelp.include.search.tab != '0'">
<xsl:call-template name="search"/>
</xsl:if-->
</xsl:template>
@@ -404,7 +461,6 @@ border: none; background: none; font-weight: none; color: none; }
</xsl:otherwise>
</xsl:choose>
- <xsl:call-template name="index.html"/>
<xsl:call-template name="l10n.js"/>
</xsl:template>
@@ -441,6 +497,17 @@ border: none; background: none; font-weight: none; color: none; }
</xsl:call-template>
<body>
+ <noscript>
+ <div id="noscript">
+
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="name" select="'txt_browser_not_supported'"/>
+ <xsl:with-param name="context" select="'webhelp'"/>
+ </xsl:call-template>
+
+ </div>
+ </noscript>
+
<xsl:call-template name="body.attributes"/>
<xsl:call-template name="user.header.navigation">
@@ -450,12 +517,7 @@ border: none; background: none; font-weight: none; color: none; }
</xsl:call-template>
<div id="content">
- <noscript>
- <xsl:call-template name="gentext.template">
- <xsl:with-param name="name" select="'txt_browser_not_supported'"/>
- <xsl:with-param name="context" select="'webhelp'"/>
- </xsl:call-template>
- </noscript>
+
<xsl:call-template name="user.header.content"/>
<xsl:copy-of select="$content"/>
@@ -521,7 +583,7 @@ border: none; background: none; font-weight: none; color: none; }
<table class="navLinks">
<tr>
<td>
- <a id="showHideButton" href="javascript:showHideToc();"
+ <a id="showHideButton" href="#" onclick="myLayout.toggle('west')"
class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar
</a>
</td>
@@ -585,13 +647,7 @@ border: none; background: none; font-weight: none; color: none; }
</xsl:template>
<xsl:template name="webhelpheader.logo">
- <a target="_blank">
- <xsl:attribute name="href">
- <xsl:choose>
- <xsl:when test="$branding = 'docbook'">http://docbook.org/</xsl:when>
- <xsl:otherwise>#</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
+ <a href="index.html">
<img style='margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px' align="right"
src='{$webhelp.common.dir}images/logo.png' alt="{$brandname} Documentation"/>
</a>
@@ -671,7 +727,7 @@ border: none; background: none; font-weight: none; color: none; }
</span>
</a>
</li>
- <xsl:if test="$webhelp.include.search.tab != 'false'">
+ <xsl:if test="$webhelp.include.search.tab != '0'">
<li>
<a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()">
<span class="searchTab">
@@ -697,28 +753,27 @@ border: none; background: none; font-weight: none; color: none; }
</div>
</div>
- <xsl:if test="$webhelp.include.search.tab != 'false'">
+ <xsl:if test="$webhelp.include.search.tab != '0'">
<div id="searchDiv">
<div id="search">
<form onsubmit="Verifie(searchForm);return false"
- name="searchForm"
- class="searchForm">
- <fieldset class="searchFieldSet">
- <legend>
- <xsl:call-template name="gentext.template">
+ name="searchForm" class="searchForm">
+ <div>
+
+<!-- <xsl:call-template name="gentext.template">
<xsl:with-param name="name" select="'Search'"/>
<xsl:with-param name="context" select="'webhelp'"/>
- </xsl:call-template>
- </legend>
- <center>
- <input id="textToSearch" name="textToSearch" type="search"
+ </xsl:call-template>-->
+
+
+ <input id="textToSearch" name="textToSearch" type="search" placeholder="Search"
class="searchText" tabindex="1"/>
<xsl:text disable-output-escaping="yes"> <![CDATA[&nbsp;]]> </xsl:text>
<input onclick="Verifie(searchForm)" type="button"
class="searchButton"
value="Go" id="doSearch" tabindex="1"/>
- </center>
- </fieldset>
+
+ </div>
</form>
</div>
<div id="searchResults">
@@ -799,6 +854,9 @@ border: none; background: none; font-weight: none; color: none; }
<script type="text/javascript" src="{$webhelp.common.dir}main.js">
<xsl:comment> </xsl:comment>
</script>
+ <script type="text/javascript" src="{$webhelp.common.dir}splitterInit.js">
+ <xsl:comment> </xsl:comment>
+ </script>
</xsl:template>
<!-- Generates index.html file at docs/. This is simply a redirection to content/$default.topic -->
diff --git a/xhtml-1_1/autoidx.xsl b/xhtml-1_1/autoidx.xsl
index 7215d88..7a2b7ee 100644
--- a/xhtml-1_1/autoidx.xsl
+++ b/xhtml-1_1/autoidx.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="exslt" exclude-result-prefixes="exslt" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="exslt" exclude-result-prefixes="exslt" version="1.0">
<!-- ********************************************************************
- $Id: autoidx.xsl 9376 2012-05-24 18:32:40Z bobstayton $
+ $Id: autoidx.xsl 9707 2013-01-21 17:18:44Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -21,25 +18,25 @@
<xsl:variable name="kimber.imported" select="0"/>
<xsl:variable name="kosek.imported" select="0"/>
-<xsl:key name="letter" match="indexterm" use="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1),'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+<xsl:key name="letter" match="indexterm" use="translate(substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1),'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
-<xsl:key name="primary" match="indexterm" use="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
+<xsl:key name="primary" match="indexterm" use="normalize-space(concat(primary/@sortas, &#34; &#34;, primary))"/>
-<xsl:key name="secondary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
+<xsl:key name="secondary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)))"/>
-<xsl:key name="tertiary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)))"/>
+<xsl:key name="tertiary" match="indexterm" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)))"/>
<xsl:key name="endofrange" match="indexterm[@class='endofrange']" use="@startref"/>
-<xsl:key name="primary-section" match="indexterm[not(secondary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]))"/>
+<xsl:key name="primary-section" match="indexterm[not(secondary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]))"/>
-<xsl:key name="secondary-section" match="indexterm[not(tertiary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]))"/>
+<xsl:key name="secondary-section" match="indexterm[not(tertiary) and not(see)]" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]))"/>
-<xsl:key name="tertiary-section" match="indexterm[not(see)]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]))"/>
+<xsl:key name="tertiary-section" match="indexterm[not(see)]" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)), &#34; &#34;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]))"/>
-<xsl:key name="see-also" match="indexterm[seealso]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, seealso)"/>
+<xsl:key name="see-also" match="indexterm[seealso]" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)), &#34; &#34;, seealso)"/>
-<xsl:key name="see" match="indexterm[see]" use="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, see)"/>
+<xsl:key name="see" match="indexterm[see]" use="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)), &#34; &#34;, see)"/>
<xsl:key name="sections" match="*[@id or @xml:id]" use="@id|@xml:id"/>
@@ -82,15 +79,15 @@
</xsl:if>
</xsl:variable>
- <xsl:variable name="terms" select="//indexterm [count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
+ <xsl:variable name="terms" select="//indexterm [count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1 and not(@class = 'endofrange')]"/>
- <xsl:variable name="alphabetical" select="$terms[contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1))]"/>
+ <xsl:variable name="alphabetical" select="$terms[contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1))]"/>
- <xsl:variable name="others" select="$terms[not(contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1)))]"/>
+ <xsl:variable name="others" select="$terms[not(contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1)))]"/>
<div class="index">
<xsl:if test="$others">
<xsl:choose>
- <xsl:when test="normalize-space($type) != '' and $others[@type = $type][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <xsl:when test="normalize-space($type) != '' and $others[@type = $type][count(.|key('primary', normalize-space(concat(primary/@sortas, &#34; &#34;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
<div class="indexdiv">
<h3>
<xsl:call-template name="gentext">
@@ -98,12 +95,12 @@
</xsl:call-template>
</h3>
<dl>
- <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
+ <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &#34; &#34;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</dl>
</div>
@@ -119,12 +116,12 @@
</xsl:call-template>
</h3>
<dl>
- <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
+ <xsl:apply-templates select="$others[count(.|key('primary', normalize-space(concat(primary/@sortas, &#34; &#34;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-symbol-div">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</dl>
</div>
@@ -132,12 +129,12 @@
</xsl:choose>
</xsl:if>
- <xsl:apply-templates select="$alphabetical[count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-div-basic">
+ <xsl:apply-templates select="$alphabetical[count(.|key('letter', translate(substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-div-basic">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</div>
</xsl:template>
@@ -204,9 +201,9 @@
<xsl:param name="role" select="''"/>
<xsl:param name="type" select="''"/>
- <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
- <xsl:if test="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
+ <xsl:if test="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &#34; &#34;, primary)))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]">
<div class="indexdiv">
<xsl:if test="contains(concat('Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'), $key)">
<h3>
@@ -214,12 +211,12 @@
</h3>
</xsl:if>
<dl>
- <xsl:apply-templates select="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary))) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])=1]" mode="index-primary">
+ <xsl:apply-templates select="key('letter', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))] [count(.|key('primary', normalize-space(concat(primary/@sortas, &#34; &#34;, primary))) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])=1]" mode="index-primary">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</dl>
</div>
@@ -231,14 +228,14 @@
<xsl:param name="role" select="''"/>
<xsl:param name="type" select="''"/>
- <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:variable name="key" select="translate(substring(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 1, 1), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
- <xsl:apply-templates select="key('letter', $key) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &quot; &quot;, primary)))[1]) = 1]" mode="index-primary">
+ <xsl:apply-templates select="key('letter', $key) [count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][count(.|key('primary', normalize-space(concat(primary/@sortas, &#34; &#34;, primary)))[1]) = 1]" mode="index-primary">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</xsl:template>
@@ -247,7 +244,7 @@
<xsl:param name="role" select="''"/>
<xsl:param name="type" select="''"/>
- <xsl:variable name="key" select="normalize-space(concat(primary/@sortas, &quot; &quot;, primary))"/>
+ <xsl:variable name="key" select="normalize-space(concat(primary/@sortas, &#34; &#34;, primary))"/>
<xsl:variable name="refs" select="key('primary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
<dt>
<xsl:for-each select="$refs/primary">
@@ -267,7 +264,7 @@
<xsl:value-of select="primary"/>
<xsl:choose>
<xsl:when test="$index.links.to.section = 1">
- <xsl:for-each select="$refs[@zone != '' or generate-id() = generate-id(key('primary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:for-each select="$refs[@zone != '' or generate-id() = generate-id(key('primary-section', concat($key, &#34; &#34;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
<xsl:apply-templates select="." mode="reference">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
@@ -289,7 +286,7 @@
</xsl:choose>
<xsl:if test="$refs[not(secondary)]/*[self::see]">
- <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, &quot; &quot;, &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, &#34; &#34;, &#34; &#34;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
@@ -302,19 +299,19 @@
<xsl:when test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
<dd>
<dl>
- <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, &quot; &quot;, &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, &#34; &#34;, &#34; &#34;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
<xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
- <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-secondary">
+ <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-secondary">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</dl>
</dd>
@@ -331,7 +328,7 @@
<xsl:param name="role" select="''"/>
<xsl:param name="type" select="''"/>
- <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)))"/>
+ <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)))"/>
<xsl:variable name="refs" select="key('secondary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
<dt>
<xsl:for-each select="$refs/secondary">
@@ -351,7 +348,7 @@
<xsl:value-of select="secondary"/>
<xsl:choose>
<xsl:when test="$index.links.to.section = 1">
- <xsl:for-each select="$refs[@zone != '' or generate-id() = generate-id(key('secondary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:for-each select="$refs[@zone != '' or generate-id() = generate-id(key('secondary-section', concat($key, &#34; &#34;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
<xsl:apply-templates select="." mode="reference">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
@@ -373,7 +370,7 @@
</xsl:choose>
<xsl:if test="$refs[not(tertiary)]/*[self::see]">
- <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, &#34; &#34;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
@@ -386,19 +383,19 @@
<xsl:when test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
<dd>
<dl>
- <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, &#34; &#34;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
<xsl:sort select="translate(seealso, 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
- <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-tertiary">
+ <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary))))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1]) = 1]" mode="index-tertiary">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="type" select="$type"/>
- <xsl:sort select="translate(normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
+ <xsl:sort select="translate(normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)), 'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ')"/>
</xsl:apply-templates>
</dl>
</dd>
@@ -415,7 +412,7 @@
<xsl:param name="role" select="''"/>
<xsl:param name="type" select="''"/>
- <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)))"/>
+ <xsl:variable name="key" select="concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)))"/>
<xsl:variable name="refs" select="key('tertiary', $key)[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))]"/>
<dt>
<xsl:for-each select="$refs/tertiary">
@@ -435,7 +432,7 @@
<xsl:value-of select="tertiary"/>
<xsl:choose>
<xsl:when test="$index.links.to.section = 1">
- <xsl:for-each select="$refs[@zone != '' or generate-id() = generate-id(key('tertiary-section', concat($key, &quot; &quot;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
+ <xsl:for-each select="$refs[@zone != '' or generate-id() = generate-id(key('tertiary-section', concat($key, &#34; &#34;, generate-id((ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()])))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]">
<xsl:apply-templates select="." mode="reference">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
@@ -457,7 +454,7 @@
</xsl:choose>
<xsl:if test="$refs/see">
- <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)), &#34; &#34;, see))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-see">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
@@ -470,7 +467,7 @@
<xsl:when test="$refs/seealso">
<dd>
<dl>
- <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &quot; &quot;, primary)), &quot; &quot;, normalize-space(concat(secondary/@sortas, &quot; &quot;, secondary)), &quot; &quot;, normalize-space(concat(tertiary/@sortas, &quot; &quot;, tertiary)), &quot; &quot;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
+ <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(normalize-space(concat(primary/@sortas, &#34; &#34;, primary)), &#34; &#34;, normalize-space(concat(secondary/@sortas, &#34; &#34;, secondary)), &#34; &#34;, normalize-space(concat(tertiary/@sortas, &#34; &#34;, tertiary)), &#34; &#34;, seealso))[count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))][1])]" mode="index-seealso">
<xsl:with-param name="position" select="position()"/>
<xsl:with-param name="scope" select="$scope"/>
<xsl:with-param name="role" select="$role"/>
@@ -539,7 +536,7 @@
<xsl:apply-templates select="." mode="class.attribute"/>
<xsl:variable name="title">
<xsl:choose>
- <xsl:when test="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:when test="$index.prefer.titleabbrev != 0">
<xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]" mode="titleabbrev.markup"/>
</xsl:when>
<xsl:otherwise>
@@ -732,4 +729,4 @@
</xsl:choose>
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/autotoc.xsl b/xhtml-1_1/autotoc.xsl
index 8d609a2..3e028bb 100644
--- a/xhtml-1_1/autotoc.xsl
+++ b/xhtml-1_1/autotoc.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: autotoc.xsl 9295 2012-04-19 19:05:29Z bobstayton $
+ $Id: autotoc.xsl 9692 2012-12-16 02:31:34Z dcramer $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -47,7 +44,7 @@
</xsl:when>
<xsl:otherwise>
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:call-template name="gentext">
<xsl:with-param name="key">TableofContents</xsl:with-param>
</xsl:call-template>
@@ -69,6 +66,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:call-template name="manual-toc">
<xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
</xsl:call-template>
@@ -83,6 +85,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:apply-templates select="$nodes.plus" mode="toc">
<xsl:with-param name="toc-context" select="$toc-context"/>
</xsl:apply-templates>
@@ -95,6 +102,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:apply-templates select="$nodes" mode="toc">
<xsl:with-param name="toc-context" select="$toc-context"/>
</xsl:apply-templates>
@@ -108,6 +120,14 @@
</xsl:choose>
</xsl:template>
+<xsl:template name="toc.list.attributes">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:attribute name="class">toc</xsl:attribute>
+</xsl:template>
+
<xsl:template name="make.lots">
<xsl:param name="toc.params" select="''"/>
<xsl:param name="toc"/>
@@ -540,6 +560,8 @@
<xsl:template name="manual-toc">
<xsl:param name="toc-context" select="."/>
<xsl:param name="tocentry"/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
<!-- be careful, we don't want to change the current document to the other tree! -->
@@ -567,6 +589,11 @@
<xsl:if test="$tocentry/*">
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:call-template name="manual-toc">
<xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
</xsl:call-template>
@@ -609,7 +636,7 @@
</xsl:when>
<xsl:otherwise>
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:call-template name="gentext">
<xsl:with-param name="key">
<xsl:choose>
@@ -671,4 +698,4 @@
<xsl:apply-templates select="." mode="qandatoc.mode"/>
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/block.xsl b/xhtml-1_1/block.xsl
index 41ba847..58e736e 100644
--- a/xhtml-1_1/block.xsl
+++ b/xhtml-1_1/block.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: block.xsl 9353 2012-05-12 23:24:54Z bobstayton $
+ $Id: block.xsl 9667 2012-11-26 23:10:44Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -145,7 +142,7 @@
</span>
</xsl:when>
<xsl:otherwise>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<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"/>
@@ -215,7 +212,7 @@
<xsl:otherwise>
<div class="blockquote-title">
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:apply-templates/>
</strong>
</p>
@@ -248,7 +245,7 @@
<!-- ==================================================================== -->
-<xsl:template match="abstract|sidebar">
+<xsl:template match="sidebar">
<div>
<xsl:call-template name="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
@@ -263,6 +260,21 @@
<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+<xsl:template match="abstract">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
<!-- ==================================================================== -->
<xsl:template match="msgset">
@@ -293,7 +305,7 @@
</span>
</xsl:when>
<xsl:otherwise>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ <strong><xsl:apply-templates/></strong>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -310,7 +322,7 @@
</span>
</xsl:when>
<xsl:otherwise>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ <strong><xsl:apply-templates/></strong>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -327,7 +339,7 @@
</span>
</xsl:when>
<xsl:otherwise>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong>
+ <strong><xsl:apply-templates/></strong>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -355,7 +367,7 @@
</xsl:when>
<xsl:otherwise>
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:call-template name="gentext.template">
<xsl:with-param name="context" select="'msgset'"/>
<xsl:with-param name="name" select="'MsgLevel'"/>
@@ -382,7 +394,7 @@
</xsl:when>
<xsl:otherwise>
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:call-template name="gentext.template">
<xsl:with-param name="context" select="'msgset'"/>
<xsl:with-param name="name" select="'MsgOrig'"/>
@@ -409,7 +421,7 @@
</xsl:when>
<xsl:otherwise>
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:call-template name="gentext.template">
<xsl:with-param name="context" select="'msgset'"/>
<xsl:with-param name="name" select="'MsgAud'"/>
@@ -436,7 +448,7 @@
</xsl:when>
<xsl:otherwise>
<p>
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:apply-templates/>
</strong>
</p>
@@ -466,7 +478,7 @@
</xsl:if>
<tr>
<th align="{$direction.align.start}" valign="top" colspan="3">
- <strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <strong>
<xsl:call-template name="gentext">
<xsl:with-param name="key" select="'RevHistory'"/>
</xsl:call-template>
@@ -564,4 +576,4 @@
<!-- ==================================================================== -->
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/chunk-common.xsl b/xhtml-1_1/chunk-common.xsl
index 4d59f24..2d9ca85 100644
--- a/xhtml-1_1/chunk-common.xsl
+++ b/xhtml-1_1/chunk-common.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf ng db">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf ng db">
<!-- ********************************************************************
- $Id: chunk-common.xsl 9362 2012-05-12 23:41:56Z bobstayton $
+ $Id: chunk-common.xsl 9717 2013-01-25 18:13:36Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -948,14 +945,14 @@
<!-- Was it found in the database? -->
<xsl:variable name="currentdoc.key">
<xsl:for-each select="$target.database">
- <xsl:value-of select="key('targetdoc-key', $current.docid)/@targetdoc"/>
+ <xsl:value-of select="key('targetdoc-key', $current.docid)[1]/@targetdoc"/>
</xsl:for-each>
</xsl:variable>
<xsl:choose>
<xsl:when test="$currentdoc.key != ''">
<xsl:for-each select="$target.database">
<xsl:call-template name="targetpath">
- <xsl:with-param name="dirnode" select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="dirnode" select="key('targetdoc-key', $current.docid)[1]/parent::dir"/>
<xsl:with-param name="targetdoc" select="$targetdoc"/>
</xsl:call-template>
</xsl:for-each>
@@ -980,7 +977,7 @@
<!-- In either case, add baseuri from its document entry-->
<xsl:variable name="docbaseuri">
<xsl:for-each select="$target.database">
- <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri"/>
</xsl:for-each>
</xsl:variable>
<xsl:if test="$docbaseuri != ''">
@@ -992,7 +989,7 @@
<!-- Just use any baseuri from its document entry -->
<xsl:variable name="docbaseuri">
<xsl:for-each select="$target.database">
- <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri"/>
</xsl:for-each>
</xsl:variable>
<xsl:if test="$docbaseuri != ''">
@@ -1002,21 +999,38 @@
</xsl:choose>
</xsl:variable>
- <!-- Form the href information -->
- <xsl:if test="not(contains($baseuri, ':'))">
- <!-- if not an absolute uri, add upward path from olink chunk -->
- <xsl:value-of select="$upward.from.path"/>
- </xsl:if>
+ <!-- Is this olink to be active? -->
+ <xsl:variable name="active.olink">
+ <xsl:choose>
+ <xsl:when test="$activate.external.olinks = 0">
+ <xsl:choose>
+ <xsl:when test="$current.docid = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = $current.docid">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
- <xsl:if test="$baseuri != ''">
- <xsl:value-of select="$baseuri"/>
- <xsl:if test="substring($target.href,1,1) != '#'">
- <!--xsl:text>/</xsl:text-->
+ <xsl:if test="$active.olink != 0">
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and translate(substring($baseuri, string-length($baseuri) - 3), 'PDF', 'pdf') = '.pdf' and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
</xsl:if>
- </xsl:if>
- <!-- optionally turn off frag for PDF references -->
- <xsl:if test="not($insert.olink.pdf.frag = 0 and translate(substring($baseuri, string-length($baseuri) - 3), 'PDF', 'pdf') = '.pdf' and starts-with($target.href, '#') )">
- <xsl:value-of select="$target.href"/>
</xsl:if>
</xsl:if>
</xsl:template>
@@ -1588,4 +1602,4 @@
</xsl:choose>
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/chunker.xsl b/xhtml-1_1/chunker.xsl
index 1eeb305..0eaf608 100644
--- a/xhtml-1_1/chunker.xsl
+++ b/xhtml-1_1/chunker.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:exsl="http://exslt.org/common" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="saxon lxslt redirect exsl doc" extension-element-prefixes="saxon redirect lxslt exsl">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:exsl="http://exslt.org/common" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="saxon lxslt redirect exsl doc" extension-element-prefixes="saxon redirect lxslt exsl">
<!-- ********************************************************************
- $Id: chunker.xsl 9147 2011-11-12 00:05:44Z bobstayton $
+ $Id: chunker.xsl 9656 2012-10-29 18:09:53Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -55,13 +52,13 @@
<!-- put Saxon first to work around a bug in libxslt -->
<xsl:when test="element-available('saxon:output')">
<!-- Saxon doesn't make the chunks relative -->
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:when test="element-available('exsl:document')">
<!-- EXSL document does make the chunks relative, I think -->
<xsl:choose>
<xsl:when test="count(parent::*) = 0">
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$base.name"/>
@@ -70,7 +67,7 @@
</xsl:when>
<xsl:when test="element-available('redirect:write')">
<!-- Xalan doesn't make the chunks relative -->
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">
@@ -301,7 +298,7 @@
<xsl:with-param name="method" select="$method"/>
<xsl:with-param name="encoding" select="$encoding"/>
<xsl:with-param name="indent" select="'no'"/>
- <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
<xsl:with-param name="standalone" select="'no'"/>
<xsl:with-param name="doctype-public"/>
<xsl:with-param name="doctype-system"/>
@@ -312,4 +309,4 @@
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/component.xsl b/xhtml-1_1/component.xsl
index d3670fa..40e9e1b 100644
--- a/xhtml-1_1/component.xsl
+++ b/xhtml-1_1/component.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: component.xsl 9356 2012-05-12 23:33:15Z bobstayton $
+ $Id: component.xsl 9500 2012-07-15 23:24:21Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -43,7 +43,6 @@
<xsl:element name="h{$level+1}" namespace="http://www.w3.org/1999/xhtml">
<xsl:attribute name="class">title</xsl:attribute>
- <xsl:call-template name="id.attribute"/>
<xsl:call-template name="anchor">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="conditional" select="0"/>
diff --git a/xhtml-1_1/docbook.xsl b/xhtml-1_1/docbook.xsl
index 74a98b3..1d5a3a0 100644
--- a/xhtml-1_1/docbook.xsl
+++ b/xhtml-1_1/docbook.xsl
@@ -6,7 +6,7 @@
<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -112,18 +112,69 @@
<!-- no apply-templates; make it empty -->
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -142,39 +193,25 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made" href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -309,6 +346,15 @@ var popup_</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>
diff --git a/xhtml-1_1/ebnf.xsl b/xhtml-1_1/ebnf.xsl
index a491424..8c0c9b3 100644
--- a/xhtml-1_1/ebnf.xsl
+++ b/xhtml-1_1/ebnf.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
<!-- ********************************************************************
- $Id: ebnf.xsl 9358 2012-05-12 23:37:10Z bobstayton $
+ $Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -16,7 +13,7 @@
<doc:reference xmlns="">
<referenceinfo xmlns="http://www.w3.org/1999/xhtml">
<releaseinfo role="meta">
-$Id: ebnf.xsl 9358 2012-05-12 23:37:10Z bobstayton $
+$Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
</releaseinfo>
<author><surname>Walsh</surname>
<firstname>Norman</firstname></author>
@@ -106,7 +103,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
<tr>
<td align="{$direction.align.start}" valign="top">
<xsl:text>[</xsl:text>
- <xsl:number count="production" level="any"/>
+ <xsl:apply-templates select="." mode="label.markup"/>
<xsl:text>]</xsl:text>
</td>
<td align="{$direction.align.end}" valign="top">
@@ -322,9 +319,9 @@ to be incomplete. Don't forget to read the source, too :-)</para>
</xsl:template>
<xsl:template match="constraintdef/title">
- <p><strong xmlns:xslo="http://www.w3.org/1999/XSL/Transform"><xsl:apply-templates/></strong></p>
+ <p><strong><xsl:apply-templates/></strong></p>
</xsl:template>
<!-- ==================================================================== -->
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/footnote.xsl b/xhtml-1_1/footnote.xsl
index f10a040..80d3f6e 100644
--- a/xhtml-1_1/footnote.xsl
+++ b/xhtml-1_1/footnote.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl" version="1.0">
<!-- ********************************************************************
- $Id: footnote.xsl 9361 2012-05-12 23:39:44Z bobstayton $
+ $Id: footnote.xsl 9665 2012-11-08 14:26:20Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -18,23 +15,29 @@ The footnote text is handled in name="process.footnote".
The footnote marker gets an id of @id, while the
footnote text gets an id of #ftn.@id. They cross link to each other. -->
<xsl:template match="footnote">
- <xsl:variable name="href">
- <xsl:text>#ftn.</xsl:text>
+ <xsl:variable name="name">
<xsl:call-template name="object.id">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
</xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="$name"/>
+ </xsl:variable>
<a href="{$href}">
<xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$name"/>
+ </xsl:attribute>
+ </xsl:if>
+
<sup>
<xsl:apply-templates select="." mode="class.attribute"/>
<xsl:call-template name="id.attribute">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
- <xsl:call-template name="anchor">
- <xsl:with-param name="conditional" select="0"/>
- </xsl:call-template>
<xsl:text>[</xsl:text>
<xsl:apply-templates select="." mode="footnote.number"/>
<xsl:text>]</xsl:text>
@@ -321,4 +324,4 @@ linkend/id: <xsl:value-of select="@linkend"/>
<xsl:call-template name="process.footnote"/>
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/formal.xsl b/xhtml-1_1/formal.xsl
index 5a1f197..d32839a 100644
--- a/xhtml-1_1/formal.xsl
+++ b/xhtml-1_1/formal.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: formal.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: formal.xsl 9501 2012-07-16 00:14:50Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -203,13 +203,15 @@
</xsl:when>
<xsl:otherwise>
<!-- do not use xsl:copy because of XHTML's needs -->
- <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
- <xsl:call-template name="htmlTable"/>
- </xsl:element>
+ <div>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -414,13 +416,15 @@
<xsl:call-template name="informal.object"/>
</xsl:when>
<xsl:otherwise>
- <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
- <xsl:call-template name="htmlTable"/>
- </xsl:element>
+ <div>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
diff --git a/xhtml-1_1/glossary.xsl b/xhtml-1_1/glossary.xsl
index 6805deb..ade6ae7 100644
--- a/xhtml-1_1/glossary.xsl
+++ b/xhtml-1_1/glossary.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink" version="1.0">
<!-- ********************************************************************
- $Id: glossary.xsl 9364 2012-05-12 23:43:04Z bobstayton $
+ $Id: glossary.xsl 9709 2013-01-22 18:56:09Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -283,7 +280,12 @@ GlossEntry ::=
</xsl:template>
<xsl:template match="glossentry/glossterm">
- <xsl:apply-templates/>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </span>
<xsl:if test="following-sibling::glossterm">, </xsl:if>
</xsl:template>
@@ -359,6 +361,9 @@ GlossEntry ::=
<xsl:template match="glossentry/glossdef">
<dd>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
<xsl:if test="glossseealso">
<p>
@@ -590,4 +595,4 @@ GlossEntry ::=
<!-- ==================================================================== -->
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/graphics.xsl b/xhtml-1_1/graphics.xsl
index e8f0bf9..458809f 100644
--- a/xhtml-1_1/graphics.xsl
+++ b/xhtml-1_1/graphics.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics" xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics" xmlns:xtext="xalan://com.nwalsh.xalan.Text" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink stext xtext lxslt simg ximg" extension-element-prefixes="stext xtext" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics" xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics" xmlns:xtext="xalan://com.nwalsh.xalan.Text" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink stext xtext lxslt simg ximg" extension-element-prefixes="stext xtext" version="1.0">
<!-- ********************************************************************
- $Id: graphics.xsl 9367 2012-05-12 23:46:35Z bobstayton $
+ $Id: graphics.xsl 9710 2013-01-22 19:34:18Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -39,10 +36,17 @@
<div>
<xsl:apply-templates select="." mode="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</div>
</xsl:template>
+<xsl:template match="screenshot/title">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
<xsl:template match="screeninfo">
</xsl:template>
@@ -339,7 +343,7 @@
<xsl:with-param name="em.size" select="$points.per.em"/>
</xsl:call-template>
</xsl:variable>
- <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ <xsl:value-of select="round($cwidth.in.points div 72.0 * $pixels.per.inch * $scale)"/>
</xsl:if>
</xsl:variable>
@@ -406,7 +410,7 @@
<xsl:with-param name="em.size" select="$points.per.em"/>
</xsl:call-template>
</xsl:variable>
- <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ <xsl:value-of select="round($cdepth.in.points div 72.0 * $pixels.per.inch * $scale)"/>
</xsl:if>
</xsl:variable>
@@ -595,7 +599,10 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:copy-of select="$alt"/>
</xsl:when>
<xsl:when test="ancestor::figure">
- <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ <xsl:variable name="fig.title">
+ <xsl:apply-templates select="ancestor::figure/title/node()"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($fig.title)"/>
</xsl:when>
</xsl:choose>
</xsl:with-param>
@@ -979,8 +986,12 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
</xsl:choose>
</xsl:attribute>
</xsl:if>
+
+ <xsl:call-template name="extension.process.image.attributes"/>
</xsl:template>
+<xsl:template name="extension.process.image.attributes"/>
+
<!-- ==================================================================== -->
<xsl:template match="graphic">
@@ -1185,7 +1196,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="alt">
- <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
<xsl:with-param name="longdesc">
<xsl:call-template name="write.longdesc">
@@ -1324,6 +1342,10 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<!-- ==================================================================== -->
+<xsl:template match="mediaobject/alt">
+ <xsl:apply-templates/>
+</xsl:template>
+
<xsl:template match="videoobject">
<xsl:apply-templates select="videodata"/>
</xsl:template>
@@ -1332,7 +1354,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="tag" select="'embed'"/>
<xsl:with-param name="alt">
- <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor::mediaobject/textobject/phrase)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -1347,7 +1376,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="tag" select="'embed'"/>
<xsl:with-param name="alt">
- <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor::mediaobject/textobject/phrase)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -1471,4 +1507,4 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
</xsl:choose>
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/htmltbl.xsl b/xhtml-1_1/htmltbl.xsl
index 9796e6c..1f05962 100644
--- a/xhtml-1_1/htmltbl.xsl
+++ b/xhtml-1_1/htmltbl.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: htmltbl.xsl 9140 2011-10-30 03:42:11Z bobstayton $
+ $Id: htmltbl.xsl 9501 2012-07-16 00:14:50Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -18,9 +18,6 @@
<xsl:template match="table" mode="htmlTable">
<xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
<xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
<xsl:call-template name="htmlTable"/>
</xsl:element>
</xsl:template>
diff --git a/xhtml-1_1/inline.xsl b/xhtml-1_1/inline.xsl
index bc53ba4..c13fa44 100644
--- a/xhtml-1_1/inline.xsl
+++ b/xhtml-1_1/inline.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink suwl" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink suwl" version="1.0">
<!-- ********************************************************************
- $Id: inline.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: inline.xsl 9663 2012-11-06 19:09:16Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -537,14 +534,14 @@
<xsl:template match="function/parameter" priority="2">
<xsl:call-template name="inline.italicmonoseq"/>
- <xsl:if test="following-sibling::*">
+ <xsl:if test="$function.parens != 0 and 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:if test="$function.parens != 0 and following-sibling::*">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
@@ -586,7 +583,21 @@
</xsl:template>
<xsl:template match="keycap">
- <xsl:call-template name="inline.boldseq"/>
+ <xsl:choose>
+ <xsl:when test="@function and normalize-space(.) = ''">
+ <xsl:call-template name="inline.boldseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'keycap'"/>
+ <xsl:with-param name="name" select="@function"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="keycode">
@@ -1476,4 +1487,4 @@
<!-- does nothing; this *is not* markup to force a page break. -->
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/param.xsl b/xhtml-1_1/param.xsl
index 1289a12..cd342f5 100644
--- a/xhtml-1_1/param.xsl
+++ b/xhtml-1_1/param.xsl
@@ -1,11 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<!-- This file is generated from param.xweb -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><!-- This file is generated from param.xweb --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: param.xweb 9333 2012-05-06 19:41:03Z dcramer $
+ $Id: param.xweb 9658 2012-10-29 22:28:34Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -15,6 +11,7 @@
******************************************************************** -->
<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="activate.external.olinks" select="1"/>
<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>
@@ -319,15 +316,10 @@ set toc,title
<xsl:param name="olink.base.uri"/>
<xsl:param name="olink.debug" select="0"/>
<xsl:param name="olink.doctitle">no</xsl:param>
-<xsl:param name="olink.fragid">fragid=</xsl:param>
<xsl:param name="olink.lang.fallback.sequence"/>
-<xsl:param name="olink.outline.ext">.olink</xsl:param>
<xsl:attribute-set name="olink.properties">
<xsl:attribute name="show-destination">replace</xsl:attribute>
</xsl:attribute-set>
-<xsl:param name="olink.pubid">pubid</xsl:param>
- <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
-<xsl:param name="olink.sysid">sysid</xsl:param>
<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
<xsl:param name="para.propagates.style" select="1"/>
<xsl:param name="part.autolabel">I</xsl:param>
@@ -445,4 +437,4 @@ set toc,title
<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>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml-1_1/profile-chunk-code.xsl b/xhtml-1_1/profile-chunk-code.xsl
index 90f540f..8b86447 100644
--- a/xhtml-1_1/profile-chunk-code.xsl
+++ b/xhtml-1_1/profile-chunk-code.xsl
@@ -443,7 +443,7 @@
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -455,9 +455,9 @@
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="collect.tex.math"/>
</xsl:if>
<xsl:if test="$generate.manifest != 0">
<xsl:call-template name="generate.manifest">
diff --git a/xhtml-1_1/profile-chunk.xsl b/xhtml-1_1/profile-chunk.xsl
index def7fff..1ecdd48 100644
--- a/xhtml-1_1/profile-chunk.xsl
+++ b/xhtml-1_1/profile-chunk.xsl
@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="ASCII"?>
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
<!--This file was created automatically by html2xhtml-->
<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" xmlns:exslt="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="exsl exslt">
<!-- ********************************************************************
- $Id: profile-chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -47,6 +49,6 @@
customizations that use xsl:apply-imports to wrongly
apply the chunking version instead of the original
non-chunking version to format an element. -->
-<xsl:include href="profile-chunk-code.xsl"/>
+<xsl:include href="chunk-code.xsl"/>
</xsl:stylesheet>
diff --git a/xhtml-1_1/profile-docbook.xsl b/xhtml-1_1/profile-docbook.xsl
index 0f8b1c1..4238c86 100644
--- a/xhtml-1_1/profile-docbook.xsl
+++ b/xhtml-1_1/profile-docbook.xsl
@@ -8,7 +8,7 @@
<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -114,18 +114,69 @@
<!-- no apply-templates; make it empty -->
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -144,39 +195,25 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made" href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -311,6 +348,15 @@ var popup_</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>
@@ -364,7 +410,7 @@ Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -376,9 +422,9 @@ Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="collect.tex.math"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
diff --git a/xhtml-1_1/profile-onechunk.xsl b/xhtml-1_1/profile-onechunk.xsl
index b84b3e9..d0a62ea 100644
--- a/xhtml-1_1/profile-onechunk.xsl
+++ b/xhtml-1_1/profile-onechunk.xsl
@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="ASCII"?>
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
<!--This file was created automatically by html2xhtml-->
<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:exslt="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="doc exslt">
<!-- ********************************************************************
- $Id: profile-onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ $Id: onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -15,7 +17,7 @@
<!-- ==================================================================== -->
-<xsl:import href="profile-chunk.xsl"/>
+<xsl:import href="chunk.xsl"/>
<!-- Ok, using the onechunk parameter makes this all work again. -->
<!-- It does have the disadvantage that it only works for documents that have -->
diff --git a/xhtml-1_1/verbatim.xsl b/xhtml-1_1/verbatim.xsl
index d25854d..d331aa0 100644
--- a/xhtml-1_1/verbatim.xsl
+++ b/xhtml-1_1/verbatim.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt exsl" version="1.0">
<!-- ********************************************************************
- $Id: verbatim.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: verbatim.xsl 9589 2012-09-02 20:52:15Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -358,7 +358,7 @@
</xsl:when>
<xsl:when test="$listings[1]/@continuation='continues'">
<xsl:call-template name="lastLineNumber">
- <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="listings" select="$listings[position() &gt; 1]"/>
<xsl:with-param name="number" select="$number + $lines"/>
</xsl:call-template>
</xsl:when>
diff --git a/xhtml-1_1/xref.xsl b/xhtml-1_1/xref.xsl
index de38e53..048f7e9 100644
--- a/xhtml-1_1/xref.xsl
+++ b/xhtml-1_1/xref.xsl
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="ASCII"?>
-<!--This file was created automatically by html2xhtml-->
-<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink" version="1.0">
+<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink" version="1.0">
<!-- ********************************************************************
- $Id: xref.xsl 9365 2012-05-12 23:43:49Z bobstayton $
+ $Id: xref.xsl 9713 2013-01-22 22:08:30Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -338,7 +335,7 @@
</xsl:choose>
</xsl:template>
-<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset |biblioset|blockquote|calloutlist|caution|colophon |constraintdef|formalpara|glossdiv|important|indexdiv |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain |msgrel|msgset|msgsub|note|orderedlist|partintro |productionset|qandadiv|refsynopsisdiv|segmentedlist |set|setindex|sidebar|tip|toc|variablelist|warning" mode="xref-to">
+<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset |biblioset|blockquote|calloutlist|caution|colophon |constraintdef|formalpara|glossdiv|important|indexdiv |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain |msgrel|msgset|msgsub|note|orderedlist|partintro |productionset|qandadiv|refsynopsisdiv|screenshot|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"/>
@@ -996,8 +993,6 @@
<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, '#') )">
@@ -1130,54 +1125,20 @@
</xsl:when>
- <!-- Or use old olink mechanism -->
<xsl:otherwise>
- <xsl:variable name="href">
- <xsl:choose>
- <xsl:when test="@linkmode">
- <!-- use the linkmode to get the base URI, use localinfo as fragid -->
- <xsl:variable name="modespec" select="key('id',@linkmode)"/>
- <xsl:if test="count($modespec) != 1 or local-name($modespec) != 'modespec'">
- <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
- </xsl:if>
- <xsl:value-of select="$modespec"/>
- <xsl:if test="@localinfo">
- <xsl:text>#</xsl:text>
- <xsl:value-of select="@localinfo"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@type = 'href'">
- <xsl:call-template name="olink.outline">
- <xsl:with-param name="outline.base.uri" select="unparsed-entity-uri(@targetdocent)"/>
- <xsl:with-param name="localinfo" select="@localinfo"/>
- <xsl:with-param name="return" select="'href'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$olink.resolver"/>
- <xsl:text>?</xsl:text>
- <xsl:value-of select="$olink.sysid"/>
- <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
- <!-- XSL gives no access to the public identifier (grumble...) -->
- <xsl:if test="@localinfo">
- <xsl:text>&amp;</xsl:text>
- <xsl:value-of select="$olink.fragid"/>
- <xsl:value-of select="@localinfo"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:choose>
- <xsl:when test="$href != ''">
- <a href="{$href}">
- <xsl:apply-templates select="." mode="common.html.attributes"/>
- <xsl:call-template name="id.attribute"/>
- <xsl:call-template name="olink.hottext"/>
- </a>
+ <xsl:when test="@linkmode or @targetdocent or @localinfo">
+ <!-- old olink mechanism -->
+ <xsl:message>
+ <xsl:text>ERROR: olink using obsolete attributes </xsl:text>
+ <xsl:text>@linkmode, @targetdocent, @localinfo are </xsl:text>
+ <xsl:text>not supported.</xsl:text>
+ </xsl:message>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="olink.hottext"/>
+ <xsl:message>
+ <xsl:text>ERROR: olink is missing linking attributes.</xsl:text>
+ </xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
@@ -1188,53 +1149,6 @@
<!-- no-op in HTML -->
</xsl:template>
-
-<xsl:template name="olink.outline">
- <xsl:param name="outline.base.uri"/>
- <xsl:param name="localinfo"/>
- <xsl:param name="return" select="href"/>
-
- <xsl:variable name="outline-file" select="concat($outline.base.uri, $olink.outline.ext)"/>
-
- <xsl:variable name="outline" select="document($outline-file,.)/div"/>
-
- <xsl:variable name="node-href">
- <xsl:choose>
- <xsl:when test="$localinfo != ''">
- <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
- <xsl:value-of select="$node/@href"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outline/@href"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="node-xref">
- <xsl:choose>
- <xsl:when test="$localinfo != ''">
- <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
- <xsl:copy-of select="$node/xref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outline/xref"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$return = 'href'">
- <xsl:value-of select="$node-href"/>
- </xsl:when>
- <xsl:when test="$return = 'xref'">
- <xsl:value-of select="$node-xref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$node-xref"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
<!-- ==================================================================== -->
<xsl:template name="xref.xreflabel">
@@ -1267,9 +1181,8 @@
<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 test="$purpose = 'xref'">
+ <xsl:copy-of select="$title"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$title"/>
@@ -1284,7 +1197,7 @@
<xsl:choose>
<xsl:when test="$purpose = 'xref'">
- <em xmlns:xslo="http://www.w3.org/1999/XSL/Transform">
+ <em>
<xsl:copy-of select="$title"/>
</em>
</xsl:when>
@@ -1337,4 +1250,4 @@
</xsl:template>
-</xsl:stylesheet>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/xhtml/admon.xsl b/xhtml/admon.xsl
index 78e1a67..9c1ff4d 100644
--- a/xhtml/admon.xsl
+++ b/xhtml/admon.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: admon.xsl 9352 2012-05-12 23:17:11Z bobstayton $
+ $Id: admon.xsl 9728 2013-03-08 00:16:41Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -64,7 +64,7 @@
<div>
<xsl:call-template name="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
- <xsl:if test="$admon.style != ''">
+ <xsl:if test="$admon.style != '' and $make.clean.html = 0">
<xsl:attribute name="style">
<xsl:value-of select="$admon.style"/>
</xsl:attribute>
@@ -114,7 +114,7 @@
<xsl:with-param name="inherit" select="1"/>
</xsl:call-template>
<xsl:call-template name="id.attribute"/>
- <xsl:if test="$admon.style">
+ <xsl:if test="$admon.style != '' and $make.clean.html = 0">
<xsl:attribute name="style">
<xsl:value-of select="$admon.style"/>
</xsl:attribute>
diff --git a/xhtml/autoidx.xsl b/xhtml/autoidx.xsl
index 7215d88..a6abf98 100644
--- a/xhtml/autoidx.xsl
+++ b/xhtml/autoidx.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="exslt" exclude-result-prefixes="exslt" version="1.0">
<!-- ********************************************************************
- $Id: autoidx.xsl 9376 2012-05-24 18:32:40Z bobstayton $
+ $Id: autoidx.xsl 9707 2013-01-21 17:18:44Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -539,7 +539,7 @@
<xsl:apply-templates select="." mode="class.attribute"/>
<xsl:variable name="title">
<xsl:choose>
- <xsl:when test="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]/titleabbrev and $index.prefer.titleabbrev != 0">
+ <xsl:when test="$index.prefer.titleabbrev != 0">
<xsl:apply-templates select="(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage|ancestor-or-self::topic)[last()]" mode="titleabbrev.markup"/>
</xsl:when>
<xsl:otherwise>
diff --git a/xhtml/autotoc.xsl b/xhtml/autotoc.xsl
index 8d609a2..8e55fd5 100644
--- a/xhtml/autotoc.xsl
+++ b/xhtml/autotoc.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: autotoc.xsl 9295 2012-04-19 19:05:29Z bobstayton $
+ $Id: autotoc.xsl 9692 2012-12-16 02:31:34Z dcramer $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -69,6 +69,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:call-template name="manual-toc">
<xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
</xsl:call-template>
@@ -83,6 +88,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:apply-templates select="$nodes.plus" mode="toc">
<xsl:with-param name="toc-context" select="$toc-context"/>
</xsl:apply-templates>
@@ -95,6 +105,11 @@
<div class="toc">
<xsl:copy-of select="$toc.title"/>
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:apply-templates select="$nodes" mode="toc">
<xsl:with-param name="toc-context" select="$toc-context"/>
</xsl:apply-templates>
@@ -108,6 +123,14 @@
</xsl:choose>
</xsl:template>
+<xsl:template name="toc.list.attributes">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
+
+ <xsl:attribute name="class">toc</xsl:attribute>
+</xsl:template>
+
<xsl:template name="make.lots">
<xsl:param name="toc.params" select="''"/>
<xsl:param name="toc"/>
@@ -540,6 +563,8 @@
<xsl:template name="manual-toc">
<xsl:param name="toc-context" select="."/>
<xsl:param name="tocentry"/>
+ <xsl:param name="toc.title.p" select="true()"/>
+ <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
<!-- be careful, we don't want to change the current document to the other tree! -->
@@ -567,6 +592,11 @@
<xsl:if test="$tocentry/*">
<xsl:element name="{$toc.list.type}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:call-template name="toc.list.attributes">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
<xsl:call-template name="manual-toc">
<xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
</xsl:call-template>
diff --git a/xhtml/block.xsl b/xhtml/block.xsl
index 4be274d..11351cf 100644
--- a/xhtml/block.xsl
+++ b/xhtml/block.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: block.xsl 9353 2012-05-12 23:24:54Z bobstayton $
+ $Id: block.xsl 9667 2012-11-26 23:10:44Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -248,7 +248,7 @@
<!-- ==================================================================== -->
-<xsl:template match="abstract|sidebar">
+<xsl:template match="sidebar">
<div>
<xsl:call-template name="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
@@ -263,6 +263,21 @@
<xsl:template match="sidebar/sidebarinfo|sidebar/info"/>
+<xsl:template match="abstract">
+ <div>
+ <xsl:call-template name="common.html.attributes"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="'1'"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
<!-- ==================================================================== -->
<xsl:template match="msgset">
diff --git a/xhtml/chunk-common.xsl b/xhtml/chunk-common.xsl
index ac90cd0..89e2de5 100644
--- a/xhtml/chunk-common.xsl
+++ b/xhtml/chunk-common.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl cf ng db">
<!-- ********************************************************************
- $Id: chunk-common.xsl 9362 2012-05-12 23:41:56Z bobstayton $
+ $Id: chunk-common.xsl 9717 2013-01-25 18:13:36Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -605,7 +605,7 @@
</xsl:when>
<xsl:when test="$css.decoration != 0">
<xsl:attribute name="style">
- <xsl:value-of select="concat('width:100; align:', $direction.align.start, ';')"/>
+ <xsl:value-of select="concat('width:100; text-align:', $direction.align.start, ';', 'margin-', $direction.align.start, ': 0')"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
@@ -963,14 +963,14 @@
<!-- Was it found in the database? -->
<xsl:variable name="currentdoc.key">
<xsl:for-each select="$target.database">
- <xsl:value-of select="key('targetdoc-key', $current.docid)/@targetdoc"/>
+ <xsl:value-of select="key('targetdoc-key', $current.docid)[1]/@targetdoc"/>
</xsl:for-each>
</xsl:variable>
<xsl:choose>
<xsl:when test="$currentdoc.key != ''">
<xsl:for-each select="$target.database">
<xsl:call-template name="targetpath">
- <xsl:with-param name="dirnode" select="key('targetdoc-key', $current.docid)/parent::dir"/>
+ <xsl:with-param name="dirnode" select="key('targetdoc-key', $current.docid)[1]/parent::dir"/>
<xsl:with-param name="targetdoc" select="$targetdoc"/>
</xsl:call-template>
</xsl:for-each>
@@ -995,7 +995,7 @@
<!-- In either case, add baseuri from its document entry-->
<xsl:variable name="docbaseuri">
<xsl:for-each select="$target.database">
- <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri"/>
</xsl:for-each>
</xsl:variable>
<xsl:if test="$docbaseuri != ''">
@@ -1007,7 +1007,7 @@
<!-- Just use any baseuri from its document entry -->
<xsl:variable name="docbaseuri">
<xsl:for-each select="$target.database">
- <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri"/>
+ <xsl:value-of select="key('targetdoc-key', $targetdoc)[1]/@baseuri"/>
</xsl:for-each>
</xsl:variable>
<xsl:if test="$docbaseuri != ''">
@@ -1017,21 +1017,38 @@
</xsl:choose>
</xsl:variable>
- <!-- Form the href information -->
- <xsl:if test="not(contains($baseuri, ':'))">
- <!-- if not an absolute uri, add upward path from olink chunk -->
- <xsl:value-of select="$upward.from.path"/>
- </xsl:if>
+ <!-- Is this olink to be active? -->
+ <xsl:variable name="active.olink">
+ <xsl:choose>
+ <xsl:when test="$activate.external.olinks = 0">
+ <xsl:choose>
+ <xsl:when test="$current.docid = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = ''">1</xsl:when>
+ <xsl:when test="$targetdoc = $current.docid">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
- <xsl:if test="$baseuri != ''">
- <xsl:value-of select="$baseuri"/>
- <xsl:if test="substring($target.href,1,1) != '#'">
- <!--xsl:text>/</xsl:text-->
+ <xsl:if test="$active.olink != 0">
+ <!-- Form the href information -->
+ <xsl:if test="not(contains($baseuri, ':'))">
+ <!-- if not an absolute uri, add upward path from olink chunk -->
+ <xsl:value-of select="$upward.from.path"/>
+ </xsl:if>
+
+ <xsl:if test="$baseuri != ''">
+ <xsl:value-of select="$baseuri"/>
+ <xsl:if test="substring($target.href,1,1) != '#'">
+ <!--xsl:text>/</xsl:text-->
+ </xsl:if>
+ </xsl:if>
+ <!-- optionally turn off frag for PDF references -->
+ <xsl:if test="not($insert.olink.pdf.frag = 0 and translate(substring($baseuri, string-length($baseuri) - 3), 'PDF', 'pdf') = '.pdf' and starts-with($target.href, '#') )">
+ <xsl:value-of select="$target.href"/>
</xsl:if>
- </xsl:if>
- <!-- optionally turn off frag for PDF references -->
- <xsl:if test="not($insert.olink.pdf.frag = 0 and translate(substring($baseuri, string-length($baseuri) - 3), 'PDF', 'pdf') = '.pdf' and starts-with($target.href, '#') )">
- <xsl:value-of select="$target.href"/>
</xsl:if>
</xsl:if>
</xsl:template>
diff --git a/xhtml/chunk.xsl b/xhtml/chunk.xsl
index 6b74923..b8b25cc 100644
--- a/xhtml/chunk.xsl
+++ b/xhtml/chunk.xsl
@@ -22,7 +22,7 @@
customizes any presentation templates. Then your chunking
customization should import mydocbook.xsl instead of
docbook.xsl. -->
-<xsl:import href="docbook.xsl"/>
+<xsl:import href="docbook-no-doctype.xsl"/>
<!-- chunk-common.xsl contains all the named templates for chunking.
In a customization file, you import chunk-common.xsl, then
diff --git a/xhtml/chunker.xsl b/xhtml/chunker.xsl
index e102bd6..625ef84 100644
--- a/xhtml/chunker.xsl
+++ b/xhtml/chunker.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="http://xml.apache.org/xalan/redirect" xmlns:exsl="http://exslt.org/common" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="saxon lxslt redirect exsl doc" extension-element-prefixes="saxon redirect lxslt exsl">
<!-- ********************************************************************
- $Id: chunker.xsl 9147 2011-11-12 00:05:44Z bobstayton $
+ $Id: chunker.xsl 9656 2012-10-29 18:09:53Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -55,13 +55,13 @@
<!-- put Saxon first to work around a bug in libxslt -->
<xsl:when test="element-available('saxon:output')">
<!-- Saxon doesn't make the chunks relative -->
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:when test="element-available('exsl:document')">
<!-- EXSL document does make the chunks relative, I think -->
<xsl:choose>
<xsl:when test="count(parent::*) = 0">
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$base.name"/>
@@ -70,7 +70,7 @@
</xsl:when>
<xsl:when test="element-available('redirect:write')">
<!-- Xalan doesn't make the chunks relative -->
- <xsl:value-of select="concat($chunk.base.dir,$base.name)"/>
+ <xsl:value-of select="concat($base.dir,$base.name)"/>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">
@@ -301,7 +301,7 @@
<xsl:with-param name="method" select="$method"/>
<xsl:with-param name="encoding" select="$encoding"/>
<xsl:with-param name="indent" select="'no'"/>
- <xsl:with-param name="omit-xml-declaration" select="'no'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
<xsl:with-param name="standalone" select="'no'"/>
<xsl:with-param name="doctype-public"/>
<xsl:with-param name="doctype-system"/>
diff --git a/xhtml/component.xsl b/xhtml/component.xsl
index d3670fa..40e9e1b 100644
--- a/xhtml/component.xsl
+++ b/xhtml/component.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: component.xsl 9356 2012-05-12 23:33:15Z bobstayton $
+ $Id: component.xsl 9500 2012-07-15 23:24:21Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -43,7 +43,6 @@
<xsl:element name="h{$level+1}" namespace="http://www.w3.org/1999/xhtml">
<xsl:attribute name="class">title</xsl:attribute>
- <xsl:call-template name="id.attribute"/>
<xsl:call-template name="anchor">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="conditional" select="0"/>
diff --git a/xhtml/docbook-no-doctype.xsl b/xhtml/docbook-no-doctype.xsl
new file mode 100644
index 0000000..58023b0
--- /dev/null
+++ b/xhtml/docbook-no-doctype.xsl
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common" xmlns:exslt="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="db ng exsl exslt" version="1.0">
+
+<xsl:output method="xml" encoding="UTF-8" indent="no"/>
+
+<!-- ********************************************************************
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
+ ********************************************************************
+
+ This 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"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="../lib/lib.xsl"/>
+<xsl:include href="../common/l10n.xsl"/>
+<xsl:include href="../common/common.xsl"/>
+<xsl:include href="../common/utility.xsl"/>
+<xsl:include href="../common/labels.xsl"/>
+<xsl:include href="../common/titles.xsl"/>
+<xsl:include href="../common/subtitles.xsl"/>
+<xsl:include href="../common/gentext.xsl"/>
+<xsl:include href="../common/targets.xsl"/>
+<xsl:include href="../common/olink.xsl"/>
+<xsl:include href="../common/pi.xsl"/>
+<xsl:include href="autotoc.xsl"/>
+<xsl:include href="autoidx.xsl"/>
+<xsl:include href="lists.xsl"/>
+<xsl:include href="callout.xsl"/>
+<xsl:include href="verbatim.xsl"/>
+<xsl:include href="graphics.xsl"/>
+<xsl:include href="xref.xsl"/>
+<xsl:include href="formal.xsl"/>
+<xsl:include href="table.xsl"/>
+<xsl:include href="htmltbl.xsl"/>
+<xsl:include href="sections.xsl"/>
+<xsl:include href="inline.xsl"/>
+<xsl:include href="footnote.xsl"/>
+<xsl:include href="html.xsl"/>
+<xsl:include href="info.xsl"/>
+<xsl:include href="keywords.xsl"/>
+<xsl:include href="division.xsl"/>
+<xsl:include href="toc.xsl"/>
+<xsl:include href="index.xsl"/>
+<xsl:include href="refentry.xsl"/>
+<xsl:include href="math.xsl"/>
+<xsl:include href="admon.xsl"/>
+<xsl:include href="component.xsl"/>
+<xsl:include href="biblio.xsl"/>
+<xsl:include href="biblio-iso690.xsl"/>
+<xsl:include href="glossary.xsl"/>
+<xsl:include href="block.xsl"/>
+<xsl:include href="task.xsl"/>
+<xsl:include href="qandaset.xsl"/>
+<xsl:include href="synop.xsl"/>
+<xsl:include href="titlepage.xsl"/>
+<xsl:include href="titlepage.templates.xsl"/>
+<xsl:include href="pi.xsl"/>
+<xsl:include href="ebnf.xsl"/>
+<xsl:include href="chunker.xsl"/>
+<xsl:include href="html-rtf.xsl"/>
+<xsl:include href="annotations.xsl"/>
+<xsl:include href="../common/stripns.xsl"/>
+
+<xsl:param name="stylesheet.result.type" select="'xhtml'"/>
+<xsl:param name="htmlhelp.output" select="0"/>
+
+<!-- ==================================================================== -->
+
+<xsl:key name="id" match="*" use="@id|@xml:id"/>
+<xsl:key name="gid" match="*" use="generate-id()"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*">
+ <xsl:message>
+ <xsl:text>Element </xsl:text>
+ <xsl:value-of select="local-name(.)"/>
+ <xsl:text> in namespace '</xsl:text>
+ <xsl:value-of select="namespace-uri(.)"/>
+ <xsl:text>' encountered</xsl:text>
+ <xsl:if test="parent::*">
+ <xsl:text> in </xsl:text>
+ <xsl:value-of select="name(parent::*)"/>
+ </xsl:if>
+ <xsl:text>, but no template matches.</xsl:text>
+ </xsl:message>
+
+ <span style="color: red">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:value-of select="name(.)"/>
+ <xsl:text>&gt;</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template match="text()">
+ <xsl:value-of select="."/>
+</xsl:template>
+
+<xsl:template name="body.attributes"><xslo:if xmlns:xslo="http://www.w3.org/1999/XSL/Transform" test="starts-with($writing.mode, 'rl')"><xslo:attribute name="dir">rtl</xslo:attribute></xslo:if>
+<!-- no apply-templates; make it empty except for dir for rtl-->
+</xsl:template>
+
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
+<xsl:template name="head.content">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title">
+ <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
+ </xsl:param>
+
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+
+ <xsl:if test="$html.base != ''">
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Insert links to CSS files or insert literal style elements -->
+ <xsl:call-template name="generate.css"/>
+
+ <xsl:if test="$html.stylesheet != ''">
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$html.script != ''">
+ <xsl:call-template name="output.html.scripts">
+ <xsl:with-param name="scripts" select="normalize-space($html.script)"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$link.mailto.url != ''">
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+
+ <xsl:if test="$generate.meta.abstract != 0">
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:apply-templates select="." mode="head.keywords.content"/>
+</xsl:template>
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$css.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <xsl:call-template name="make.css.link">
+ <xsl:with-param name="css.filename" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="output.html.scripts">
+ <xsl:param name="scripts" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($scripts, ' ')">
+ <xsl:variable name="script.filename" select="substring-before($scripts, ' ')"/>
+
+ <xsl:call-template name="make.script.link">
+ <xsl:with-param name="script.filename" select="$script.filename"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="output.html.scripts">
+ <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$scripts != ''">
+ <xsl:call-template name="make.script.link">
+ <xsl:with-param name="script.filename" select="$scripts"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="head.keywords.content">
+ <xsl:apply-templates select="chapterinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="appendixinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="prefaceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bookinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="setinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="articleinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="artheader/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect4info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sect5info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="sectioninfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect1info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect2info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refsect3info/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="bibliographyinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="glossaryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="indexinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="refentryinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="partinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="referenceinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="docinfo/keywordset" mode="html.header"/>
+ <xsl:apply-templates select="info/keywordset" mode="html.header"/>
+
+ <xsl:if test="$inherit.keywords != 0 and parent::*">
+ <xsl:apply-templates select="parent::*" mode="head.keywords.content"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="system.head.content">
+ <xsl:param name="node" select="."/>
+
+ <!-- FIXME: When chunking, only the annotations actually used
+ in this chunk should be referenced. I don't think it
+ does any harm to reference them all, but it adds
+ unnecessary bloat to each chunk. -->
+ <xsl:if test="$annotation.support != 0 and //annotation">
+ <xsl:call-template name="add.annotation.links"/>
+ <script type="text/javascript">
+ <xsl:text>
+// Create PopupWindow objects</xsl:text>
+ <xsl:for-each select="//annotation">
+ <xsl:text>
+var popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text> = new PopupWindow("popup-</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>");
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.offsetY = 15;
+</xsl:text>
+ <xsl:text>popup_</xsl:text>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>.autoHide();
+</xsl:text>
+ </xsl:for-each>
+ </script>
+
+ <style type="text/css">
+ <xsl:value-of select="$annotation.css"/>
+ </style>
+ </xsl:if>
+
+ <!-- system.head.content is like user.head.content, except that
+ it is called before head.content. This is important because it
+ means, for example, that <style> elements output by system.head.content
+ have a lower CSS precedence than the users stylesheet. -->
+</xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="user.preroot">
+ <!-- Pre-root output, can be used to output comments and PIs. -->
+ <!-- This must not output any element content! -->
+</xsl:template>
+
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
+<xsl:template name="user.head.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.header.navigation">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+</xsl:template>
+
+<xsl:template name="user.header.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.content">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="user.footer.navigation">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+</xsl:template>
+
+<!-- To use the same stripped nodeset everywhere, it should
+be created as a global variable here.
+Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
+<xsl:variable name="no.namespace">
+ <xsl:if test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:apply-templates select="/*" mode="stripNS"/>
+ </xsl:if>
+</xsl:variable>
+
+<xsl:template match="/">
+ <!-- * Get a title for current doc so that we let the user -->
+ <!-- * know what document we are processing at this point. -->
+ <xsl:variable name="doc.title">
+ <xsl:call-template name="get.doc.title"/>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,
+ toss the namespace and continue. Use the docbook5 namespaced
+ stylesheets for DocBook5 if you don't want to use this feature.-->
+ <!-- include extra test for Xalan quirk -->
+ <xsl:when test="$exsl.node.set.available != 0 and (*/self::ng:* or */self::db:*)">
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>stripped namespace before processing</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <!-- DEBUG: to save stripped document.
+ <xsl:message>Saving stripped document.</xsl:message>
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="'/tmp/stripped.xml'"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="exsl:node-set($no.namespace)"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ <xsl:call-template name="log.message">
+ <xsl:with-param name="level">Note</xsl:with-param>
+ <xsl:with-param name="source" select="$doc.title"/>
+ <xsl:with-param name="context-desc">
+ <xsl:text>namesp. cut</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="message">
+ <xsl:text>processing stripped document</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="exsl:node-set($no.namespace)"/>
+ </xsl:when>
+ <!-- Can't process unless namespace removed -->
+ <xsl:when test="*/self::ng:* or */self::db:*">
+ <xsl:message terminate="yes">
+ <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>
+ <xsl:text> cannot proceed.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$rootid != ''">
+ <xsl:choose>
+ <xsl:when test="count(key('id',$rootid)) = 0">
+ <xsl:message terminate="yes">
+ <xsl:text>ID '</xsl:text>
+ <xsl:value-of select="$rootid"/>
+ <xsl:text>' not found in document.</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="key('id',$rootid)" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
+ <xsl:apply-templates select="/" mode="collect.targets"/>
+ </xsl:if>
+ <xsl:if test="$collect.xref.targets != 'only'">
+ <xsl:apply-templates select="/" mode="process.root"/>
+ <xsl:if test="$tex.math.in.alt != ''">
+ <xsl:apply-templates select="/" mode="collect.tex.math"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="process.root">
+ <xsl:variable name="doc" select="self::*"/>
+
+ <xsl:call-template name="user.preroot"/>
+ <xsl:call-template name="root.messages"/>
+
+ <html>
+ <xsl:call-template name="root.attributes"/>
+ <head>
+ <xsl:call-template name="system.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:call-template name="user.head.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="."/>
+ <xsl:call-template name="user.footer.content">
+ <xsl:with-param name="node" select="$doc"/>
+ </xsl:call-template>
+ </body>
+ </html>
+ <xsl:value-of select="$html.append"/>
+
+ <!-- Generate any css files only once, not once per chunk -->
+ <xsl:call-template name="generate.css.files"/>
+</xsl:template>
+
+<xsl:template name="root.attributes">
+ <!-- customize to add attributes to <html> element -->
+</xsl:template>
+
+<xsl:template name="root.messages">
+ <!-- redefine this any way you'd like to output messages -->
+ <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+
+ <!-- The default is that we are not chunking... -->
+ <xsl:text>0</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/xhtml/docbook.xsl b/xhtml/docbook.xsl
index 6e6218a..5f3af4e 100644
--- a/xhtml/docbook.xsl
+++ b/xhtml/docbook.xsl
@@ -6,7 +6,7 @@
<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -112,18 +112,69 @@
<!-- no apply-templates; make it empty except for dir for rtl-->
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -142,39 +193,25 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made" href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -309,6 +346,15 @@ var popup_</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>
diff --git a/xhtml/ebnf.xsl b/xhtml/ebnf.xsl
index caf7c58..a6ff6d7 100644
--- a/xhtml/ebnf.xsl
+++ b/xhtml/ebnf.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="doc" version="1.0">
<!-- ********************************************************************
- $Id: ebnf.xsl 9358 2012-05-12 23:37:10Z bobstayton $
+ $Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -16,7 +16,7 @@
<doc:reference xmlns="">
<referenceinfo xmlns="http://www.w3.org/1999/xhtml">
<releaseinfo role="meta">
-$Id: ebnf.xsl 9358 2012-05-12 23:37:10Z bobstayton $
+$Id: ebnf.xsl 9664 2012-11-07 20:02:17Z bobstayton $
</releaseinfo>
<author><surname>Walsh</surname>
<firstname>Norman</firstname></author>
@@ -106,7 +106,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
<tr>
<td align="{$direction.align.start}" valign="top" width="3%">
<xsl:text>[</xsl:text>
- <xsl:number count="production" level="any"/>
+ <xsl:apply-templates select="." mode="label.markup"/>
<xsl:text>]</xsl:text>
</td>
<td align="{$direction.align.end}" valign="top" width="10%">
diff --git a/xhtml/footnote.xsl b/xhtml/footnote.xsl
index fb9696d..d1645b9 100644
--- a/xhtml/footnote.xsl
+++ b/xhtml/footnote.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="exsl" version="1.0">
<!-- ********************************************************************
- $Id: footnote.xsl 9361 2012-05-12 23:39:44Z bobstayton $
+ $Id: footnote.xsl 9665 2012-11-08 14:26:20Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -18,23 +18,29 @@ The footnote text is handled in name="process.footnote".
The footnote marker gets an id of @id, while the
footnote text gets an id of #ftn.@id. They cross link to each other. -->
<xsl:template match="footnote">
- <xsl:variable name="href">
- <xsl:text>#ftn.</xsl:text>
+ <xsl:variable name="name">
<xsl:call-template name="object.id">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
</xsl:variable>
+ <xsl:variable name="href">
+ <xsl:text>#ftn.</xsl:text>
+ <xsl:value-of select="$name"/>
+ </xsl:variable>
<a href="{$href}">
<xsl:apply-templates select="." mode="class.attribute"/>
+ <xsl:if test="$generate.id.attributes = 0">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$name"/>
+ </xsl:attribute>
+ </xsl:if>
+
<sup>
<xsl:apply-templates select="." mode="class.attribute"/>
<xsl:call-template name="id.attribute">
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
- <xsl:call-template name="anchor">
- <xsl:with-param name="conditional" select="0"/>
- </xsl:call-template>
<xsl:text>[</xsl:text>
<xsl:apply-templates select="." mode="footnote.number"/>
<xsl:text>]</xsl:text>
@@ -254,7 +260,7 @@ linkend/id: <xsl:value-of select="@linkend"/>
</xsl:when>
<xsl:when test="$css.decoration != 0">
<xsl:attribute name="style">
- <xsl:value-of select="concat('width:100; align:', $direction.align.start, ';')"/>
+ <xsl:value-of select="concat('width:100; text-align:', $direction.align.start, ';', 'margin-', $direction.align.start, ': 0')"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
diff --git a/xhtml/formal.xsl b/xhtml/formal.xsl
index 5a1f197..d32839a 100644
--- a/xhtml/formal.xsl
+++ b/xhtml/formal.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: formal.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: formal.xsl 9501 2012-07-16 00:14:50Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -203,13 +203,15 @@
</xsl:when>
<xsl:otherwise>
<!-- do not use xsl:copy because of XHTML's needs -->
- <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
- <xsl:call-template name="htmlTable"/>
- </xsl:element>
+ <div>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -414,13 +416,15 @@
<xsl:call-template name="informal.object"/>
</xsl:when>
<xsl:otherwise>
- <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
- <xsl:call-template name="htmlTable"/>
- </xsl:element>
+ <div>
+ <xsl:call-template name="generate.class.attribute"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*" mode="htmlTableAtt"/>
+ <xsl:call-template name="htmlTable"/>
+ </xsl:element>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
diff --git a/xhtml/glossary.xsl b/xhtml/glossary.xsl
index 6805deb..bb5606b 100644
--- a/xhtml/glossary.xsl
+++ b/xhtml/glossary.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink" version="1.0">
<!-- ********************************************************************
- $Id: glossary.xsl 9364 2012-05-12 23:43:04Z bobstayton $
+ $Id: glossary.xsl 9709 2013-01-22 18:56:09Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -283,7 +283,12 @@ GlossEntry ::=
</xsl:template>
<xsl:template match="glossentry/glossterm">
- <xsl:apply-templates/>
+ <span>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </span>
<xsl:if test="following-sibling::glossterm">, </xsl:if>
</xsl:template>
@@ -359,6 +364,9 @@ GlossEntry ::=
<xsl:template match="glossentry/glossdef">
<dd>
+ <xsl:apply-templates select="." mode="common.html.attributes"/>
+ <xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/>
<xsl:if test="glossseealso">
<p>
diff --git a/xhtml/graphics.xsl b/xhtml/graphics.xsl
index f510db2..b90ecd1 100644
--- a/xhtml/graphics.xsl
+++ b/xhtml/graphics.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" xmlns:simg="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.ImageIntrinsics" xmlns:ximg="xalan://com.nwalsh.xalan.ImageIntrinsics" xmlns:xtext="xalan://com.nwalsh.xalan.Text" xmlns:lxslt="http://xml.apache.org/xslt" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink stext xtext lxslt simg ximg" extension-element-prefixes="stext xtext" version="1.0">
<!-- ********************************************************************
- $Id: graphics.xsl 9367 2012-05-12 23:46:35Z bobstayton $
+ $Id: graphics.xsl 9710 2013-01-22 19:34:18Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -39,10 +39,17 @@
<div>
<xsl:apply-templates select="." mode="common.html.attributes"/>
<xsl:call-template name="id.attribute"/>
+ <xsl:call-template name="anchor"/>
<xsl:apply-templates/>
</div>
</xsl:template>
+<xsl:template match="screenshot/title">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="object" select=".."/>
+ </xsl:call-template>
+</xsl:template>
+
<xsl:template match="screeninfo">
</xsl:template>
@@ -339,7 +346,7 @@
<xsl:with-param name="em.size" select="$points.per.em"/>
</xsl:call-template>
</xsl:variable>
- <xsl:value-of select="$cwidth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ <xsl:value-of select="round($cwidth.in.points div 72.0 * $pixels.per.inch * $scale)"/>
</xsl:if>
</xsl:variable>
@@ -406,7 +413,7 @@
<xsl:with-param name="em.size" select="$points.per.em"/>
</xsl:call-template>
</xsl:variable>
- <xsl:value-of select="$cdepth.in.points div 72.0 * $pixels.per.inch * $scale"/>
+ <xsl:value-of select="round($cdepth.in.points div 72.0 * $pixels.per.inch * $scale)"/>
</xsl:if>
</xsl:variable>
@@ -595,7 +602,10 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:copy-of select="$alt"/>
</xsl:when>
<xsl:when test="ancestor::figure">
- <xsl:value-of select="normalize-space(ancestor::figure/title)"/>
+ <xsl:variable name="fig.title">
+ <xsl:apply-templates select="ancestor::figure/title/node()"/>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($fig.title)"/>
</xsl:when>
</xsl:choose>
</xsl:with-param>
@@ -979,8 +989,12 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
</xsl:choose>
</xsl:attribute>
</xsl:if>
+
+ <xsl:call-template name="extension.process.image.attributes"/>
</xsl:template>
+<xsl:template name="extension.process.image.attributes"/>
+
<!-- ==================================================================== -->
<xsl:template match="graphic">
@@ -1185,7 +1199,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="alt">
- <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$phrases[not(@role) or @role!='tex'][1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
<xsl:with-param name="longdesc">
<xsl:call-template name="write.longdesc">
@@ -1324,6 +1345,10 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<!-- ==================================================================== -->
+<xsl:template match="mediaobject/alt">
+ <xsl:apply-templates/>
+</xsl:template>
+
<xsl:template match="videoobject">
<xsl:apply-templates select="videodata"/>
</xsl:template>
@@ -1332,7 +1357,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="tag" select="'embed'"/>
<xsl:with-param name="alt">
- <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor::mediaobject/textobject/phrase)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -1347,7 +1379,14 @@ valign: <xsl:value-of select="@valign"/></xsl:message>
<xsl:call-template name="process.image">
<xsl:with-param name="tag" select="'embed'"/>
<xsl:with-param name="alt">
- <xsl:apply-templates select="(../../textobject/phrase)[1]"/>
+ <xsl:choose>
+ <xsl:when test="ancestor::mediaobject/alt">
+ <xsl:apply-templates select="ancestor::mediaobject/alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(ancestor::mediaobject/textobject/phrase)[1]"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
diff --git a/xhtml/highlight.xsl b/xhtml/highlight.xsl
index 222a055..f1d9eaa 100644
--- a/xhtml/highlight.xsl
+++ b/xhtml/highlight.xsl
@@ -3,7 +3,7 @@
<!--from the HTML stylesheets.-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslthl="http://xslthl.sf.net" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xslthl" version="1.0">
<!-- ********************************************************************
- $Id: highlight.xsl 8911 2010-09-28 17:02:06Z abdelazer $
+ $Id: highlight.xsl 9725 2013-02-28 14:49:03Z kosek $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -50,11 +50,9 @@
</span>
</xsl:template>
<xsl:template match="xslthl:html" mode="xslthl">
- <strong>
- <em style="color: red">
- <xsl:apply-templates mode="xslthl"/>
- </em>
- </strong>
+ <span class="hl-html" style="color: navy; font-weight: bold">
+ <xsl:apply-templates mode="xslthl"/>
+ </span>
</xsl:template>
<xsl:template match="xslthl:xslt" mode="xslthl">
<strong style="color: #0066FF">
diff --git a/xhtml/htmltbl.xsl b/xhtml/htmltbl.xsl
index 9796e6c..1f05962 100644
--- a/xhtml/htmltbl.xsl
+++ b/xhtml/htmltbl.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: htmltbl.xsl 9140 2011-10-30 03:42:11Z bobstayton $
+ $Id: htmltbl.xsl 9501 2012-07-16 00:14:50Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -18,9 +18,6 @@
<xsl:template match="table" mode="htmlTable">
<xsl:element name="table" namespace="http://www.w3.org/1999/xhtml">
<xsl:apply-templates select="@*" mode="htmlTableAtt"/>
- <xsl:attribute name="id">
- <xsl:call-template name="object.id"/>
- </xsl:attribute>
<xsl:call-template name="htmlTable"/>
</xsl:element>
</xsl:template>
diff --git a/xhtml/inline.xsl b/xhtml/inline.xsl
index bc53ba4..df97997 100644
--- a/xhtml/inline.xsl
+++ b/xhtml/inline.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xlink suwl" version="1.0">
<!-- ********************************************************************
- $Id: inline.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: inline.xsl 9663 2012-11-06 19:09:16Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -537,14 +537,14 @@
<xsl:template match="function/parameter" priority="2">
<xsl:call-template name="inline.italicmonoseq"/>
- <xsl:if test="following-sibling::*">
+ <xsl:if test="$function.parens != 0 and 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:if test="$function.parens != 0 and following-sibling::*">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
@@ -586,7 +586,21 @@
</xsl:template>
<xsl:template match="keycap">
- <xsl:call-template name="inline.boldseq"/>
+ <xsl:choose>
+ <xsl:when test="@function and normalize-space(.) = ''">
+ <xsl:call-template name="inline.boldseq">
+ <xsl:with-param name="content">
+ <xsl:call-template name="gentext.template">
+ <xsl:with-param name="context" select="'keycap'"/>
+ <xsl:with-param name="name" select="@function"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.boldseq"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="keycode">
diff --git a/xhtml/param.xsl b/xhtml/param.xsl
index 5e3e22e..5fb1c70 100644
--- a/xhtml/param.xsl
+++ b/xhtml/param.xsl
@@ -5,7 +5,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<!-- ********************************************************************
- $Id: param.xweb 9333 2012-05-06 19:41:03Z dcramer $
+ $Id: param.xweb 9658 2012-10-29 22:28:34Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -15,6 +15,7 @@
******************************************************************** -->
<xsl:param name="abstract.notitle.enabled" select="0"/>
+<xsl:param name="activate.external.olinks" select="1"/>
<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>
@@ -319,15 +320,10 @@ set toc,title
<xsl:param name="olink.base.uri"/>
<xsl:param name="olink.debug" select="0"/>
<xsl:param name="olink.doctitle">no</xsl:param>
-<xsl:param name="olink.fragid">fragid=</xsl:param>
<xsl:param name="olink.lang.fallback.sequence"/>
-<xsl:param name="olink.outline.ext">.olink</xsl:param>
<xsl:attribute-set name="olink.properties">
<xsl:attribute name="show-destination">replace</xsl:attribute>
</xsl:attribute-set>
-<xsl:param name="olink.pubid">pubid</xsl:param>
- <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param>
-<xsl:param name="olink.sysid">sysid</xsl:param>
<xsl:param name="othercredit.like.author.enabled">0</xsl:param>
<xsl:param name="para.propagates.style" select="1"/>
<xsl:param name="part.autolabel">I</xsl:param>
@@ -426,7 +422,7 @@ set toc,title
<xsl:param name="webhelp.base.dir">docs</xsl:param>
<xsl:param name="webhelp.common.dir">../common/</xsl:param>
<xsl:param name="webhelp.default.topic">index.html</xsl:param>
-<xsl:param name="webhelp.include.search.tab">true</xsl:param>
+<xsl:param name="webhelp.include.search.tab">1</xsl:param>
<xsl:param name="webhelp.indexer.language">en</xsl:param>
<xsl:param name="webhelp.start.filename">index.html</xsl:param>
<xsl:param name="webhelp.tree.cookie.id" select="concat( 'treeview-', count(//node()) )"/>
diff --git a/xhtml/profile-chunk-code.xsl b/xhtml/profile-chunk-code.xsl
index 90f540f..8b86447 100644
--- a/xhtml/profile-chunk-code.xsl
+++ b/xhtml/profile-chunk-code.xsl
@@ -443,7 +443,7 @@
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -455,9 +455,9 @@
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="collect.tex.math"/>
</xsl:if>
<xsl:if test="$generate.manifest != 0">
<xsl:call-template name="generate.manifest">
diff --git a/xhtml/profile-chunk.xsl b/xhtml/profile-chunk.xsl
index def7fff..eb48e81 100644
--- a/xhtml/profile-chunk.xsl
+++ b/xhtml/profile-chunk.xsl
@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="ASCII"?>
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
<!--This file was created automatically by html2xhtml-->
<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl">
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" xmlns:exslt="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="exsl exslt">
<!-- ********************************************************************
- $Id: profile-chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -22,7 +24,7 @@
customizes any presentation templates. Then your chunking
customization should import mydocbook.xsl instead of
docbook.xsl. -->
-<xsl:import href="docbook.xsl"/>
+<xsl:import href="docbook-no-doctype.xsl"/>
<!-- chunk-common.xsl contains all the named templates for chunking.
In a customization file, you import chunk-common.xsl, then
@@ -47,6 +49,6 @@
customizations that use xsl:apply-imports to wrongly
apply the chunking version instead of the original
non-chunking version to format an element. -->
-<xsl:include href="profile-chunk-code.xsl"/>
+<xsl:include href="chunk-code.xsl"/>
</xsl:stylesheet>
diff --git a/xhtml/profile-docbook.xsl b/xhtml/profile-docbook.xsl
index b5506d9..366532d 100644
--- a/xhtml/profile-docbook.xsl
+++ b/xhtml/profile-docbook.xsl
@@ -8,7 +8,7 @@
<xsl:output method="xml" encoding="UTF-8" indent="no" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -114,18 +114,69 @@
<!-- no apply-templates; make it empty except for dir for rtl-->
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -144,39 +195,25 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made" href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -311,6 +348,15 @@ var popup_</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>
@@ -364,7 +410,7 @@ Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
<xsl:choose>
<xsl:when test="$rootid != ''">
<xsl:choose>
- <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0">
+ <xsl:when test="count($profiled-nodes//*[@id=$rootid or @xml:id=$rootid]) = 0">
<xsl:message terminate="yes">
<xsl:text>ID '</xsl:text>
<xsl:value-of select="$rootid"/>
@@ -376,9 +422,9 @@ Used by docbook.xsl, chunk-code.xsl and chunkfast.xsl -->
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
</xsl:if>
<xsl:if test="$collect.xref.targets != 'only'">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="process.root"/>
<xsl:if test="$tex.math.in.alt != ''">
- <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="collect.tex.math"/>
+ <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid or @xml:id=$rootid]" mode="collect.tex.math"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
diff --git a/xhtml/profile-onechunk.xsl b/xhtml/profile-onechunk.xsl
index b84b3e9..d0a62ea 100644
--- a/xhtml/profile-onechunk.xsl
+++ b/xhtml/profile-onechunk.xsl
@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="ASCII"?>
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--This file was created automatically by xsl2profile-->
+<!--from the DocBook XSL stylesheets.-->
<!--This file was created automatically by html2xhtml-->
<!--from the HTML stylesheets.-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="doc">
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:exslt="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="doc exslt">
<!-- ********************************************************************
- $Id: profile-onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
+ $Id: onechunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -15,7 +17,7 @@
<!-- ==================================================================== -->
-<xsl:import href="profile-chunk.xsl"/>
+<xsl:import href="chunk.xsl"/>
<!-- Ok, using the onechunk parameter makes this all work again. -->
<!-- It does have the disadvantage that it only works for documents that have -->
diff --git a/xhtml/titlepage.templates.xml b/xhtml/titlepage.templates.xml
new file mode 100755
index 0000000..6fbe8fc
--- /dev/null
+++ b/xhtml/titlepage.templates.xml
@@ -0,0 +1,739 @@
+<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0"
+ xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="article" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="set" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="book" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="part" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="division.title"
+ param:node="ancestor-or-self::part[1]"/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="partintro" t:wrapper="div">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="reference" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <hr/>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+<!-- uncomment this if you want refentry titlepages
+ <title t:force="1"
+ t:named-template="refentry.title"
+ param:node="ancestor-or-self::refentry[1]"/>
+-->
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator/>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+ <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::dedication[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="acknowledgements" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::acknowledgements[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="preface" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="topic" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="section" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title/>
+ <subtitle/>
+ <corpauthor/>
+ <authorgroup/>
+ <author/>
+ <othercredit/>
+ <releaseinfo/>
+ <copyright/>
+ <legalnotice/>
+ <pubdate/>
+ <revision/>
+ <revhistory/>
+ <abstract/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ <xsl:if test="count(parent::*)='0'"><hr/></xsl:if>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::bibliography[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::glossary[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="index" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::index[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:force="1"
+ t:named-template="component.title"
+ param:node="ancestor-or-self::setindex[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+<t:titlepage t:element="sidebar" t:wrapper="div" class="titlepage">
+ <t:titlepage-content t:side="recto">
+ <title
+ t:named-template="formal.object.heading"
+ param:object="ancestor-or-self::sidebar[1]"/>
+ <subtitle/>
+ </t:titlepage-content>
+
+ <t:titlepage-content t:side="verso">
+ </t:titlepage-content>
+
+ <t:titlepage-separator>
+ </t:titlepage-separator>
+
+ <t:titlepage-before t:side="recto">
+ </t:titlepage-before>
+
+ <t:titlepage-before t:side="verso">
+ </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+
+</t:templates>
diff --git a/xhtml/verbatim.xsl b/xhtml/verbatim.xsl
index d25854d..d331aa0 100644
--- a/xhtml/verbatim.xsl
+++ b/xhtml/verbatim.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:exsl="http://exslt.org/common" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="sverb xverb lxslt exsl" version="1.0">
<!-- ********************************************************************
- $Id: verbatim.xsl 9297 2012-04-22 03:56:16Z bobstayton $
+ $Id: verbatim.xsl 9589 2012-09-02 20:52:15Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -358,7 +358,7 @@
</xsl:when>
<xsl:when test="$listings[1]/@continuation='continues'">
<xsl:call-template name="lastLineNumber">
- <xsl:with-param name="listings" select="listings[position() &gt; 1]"/>
+ <xsl:with-param name="listings" select="$listings[position() &gt; 1]"/>
<xsl:with-param name="number" select="$number + $lines"/>
</xsl:call-template>
</xsl:when>
diff --git a/xhtml/xref.xsl b/xhtml/xref.xsl
index de38e53..5627983 100644
--- a/xhtml/xref.xsl
+++ b/xhtml/xref.xsl
@@ -4,7 +4,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="suwl exsl xlink" version="1.0">
<!-- ********************************************************************
- $Id: xref.xsl 9365 2012-05-12 23:43:49Z bobstayton $
+ $Id: xref.xsl 9713 2013-01-22 22:08:30Z bobstayton $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -338,7 +338,7 @@
</xsl:choose>
</xsl:template>
-<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset |biblioset|blockquote|calloutlist|caution|colophon |constraintdef|formalpara|glossdiv|important|indexdiv |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain |msgrel|msgset|msgsub|note|orderedlist|partintro |productionset|qandadiv|refsynopsisdiv|segmentedlist |set|setindex|sidebar|tip|toc|variablelist|warning" mode="xref-to">
+<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset |biblioset|blockquote|calloutlist|caution|colophon |constraintdef|formalpara|glossdiv|important|indexdiv |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain |msgrel|msgset|msgsub|note|orderedlist|partintro |productionset|qandadiv|refsynopsisdiv|screenshot|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"/>
@@ -996,8 +996,6 @@
<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, '#') )">
@@ -1130,54 +1128,20 @@
</xsl:when>
- <!-- Or use old olink mechanism -->
<xsl:otherwise>
- <xsl:variable name="href">
- <xsl:choose>
- <xsl:when test="@linkmode">
- <!-- use the linkmode to get the base URI, use localinfo as fragid -->
- <xsl:variable name="modespec" select="key('id',@linkmode)"/>
- <xsl:if test="count($modespec) != 1 or local-name($modespec) != 'modespec'">
- <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>
- </xsl:if>
- <xsl:value-of select="$modespec"/>
- <xsl:if test="@localinfo">
- <xsl:text>#</xsl:text>
- <xsl:value-of select="@localinfo"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@type = 'href'">
- <xsl:call-template name="olink.outline">
- <xsl:with-param name="outline.base.uri" select="unparsed-entity-uri(@targetdocent)"/>
- <xsl:with-param name="localinfo" select="@localinfo"/>
- <xsl:with-param name="return" select="'href'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$olink.resolver"/>
- <xsl:text>?</xsl:text>
- <xsl:value-of select="$olink.sysid"/>
- <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/>
- <!-- XSL gives no access to the public identifier (grumble...) -->
- <xsl:if test="@localinfo">
- <xsl:text>&amp;</xsl:text>
- <xsl:value-of select="$olink.fragid"/>
- <xsl:value-of select="@localinfo"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
<xsl:choose>
- <xsl:when test="$href != ''">
- <a href="{$href}">
- <xsl:apply-templates select="." mode="common.html.attributes"/>
- <xsl:call-template name="id.attribute"/>
- <xsl:call-template name="olink.hottext"/>
- </a>
+ <xsl:when test="@linkmode or @targetdocent or @localinfo">
+ <!-- old olink mechanism -->
+ <xsl:message>
+ <xsl:text>ERROR: olink using obsolete attributes </xsl:text>
+ <xsl:text>@linkmode, @targetdocent, @localinfo are </xsl:text>
+ <xsl:text>not supported.</xsl:text>
+ </xsl:message>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="olink.hottext"/>
+ <xsl:message>
+ <xsl:text>ERROR: olink is missing linking attributes.</xsl:text>
+ </xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
@@ -1188,53 +1152,6 @@
<!-- no-op in HTML -->
</xsl:template>
-
-<xsl:template name="olink.outline">
- <xsl:param name="outline.base.uri"/>
- <xsl:param name="localinfo"/>
- <xsl:param name="return" select="href"/>
-
- <xsl:variable name="outline-file" select="concat($outline.base.uri, $olink.outline.ext)"/>
-
- <xsl:variable name="outline" select="document($outline-file,.)/div"/>
-
- <xsl:variable name="node-href">
- <xsl:choose>
- <xsl:when test="$localinfo != ''">
- <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
- <xsl:value-of select="$node/@href"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outline/@href"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="node-xref">
- <xsl:choose>
- <xsl:when test="$localinfo != ''">
- <xsl:variable name="node" select="$outline// *[@id=$localinfo or @xml:id=$localinfo]"/>
- <xsl:copy-of select="$node/xref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outline/xref"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$return = 'href'">
- <xsl:value-of select="$node-href"/>
- </xsl:when>
- <xsl:when test="$return = 'xref'">
- <xsl:value-of select="$node-xref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$node-xref"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
<!-- ==================================================================== -->
<xsl:template name="xref.xreflabel">
@@ -1267,9 +1184,8 @@
<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 test="$purpose = 'xref'">
+ <xsl:copy-of select="$title"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$title"/>
diff --git a/xhtml5/html5-element-mods.xsl b/xhtml5/html5-element-mods.xsl
index 9aae285..f3cb2d1 100644
--- a/xhtml5/html5-element-mods.xsl
+++ b/xhtml5/html5-element-mods.xsl
@@ -336,16 +336,25 @@
<!-- HTML5: converts obsolete HTML attributes to CSS styles -->
<xsl:template match="*" mode="convert.to.style">
+ <xsl:variable name="element" select="local-name(.)"/>
+
<xsl:variable name="style.from.atts">
<xsl:for-each select="@*">
<xsl:choose>
- <xsl:when test="local-name() = 'width'">
+ <!-- width and height attributes are ok for img element -->
+ <xsl:when test="local-name() = 'width' and $element != 'img'">
<xsl:text>width: </xsl:text>
<xsl:value-of select="."/>
<xsl:text>; </xsl:text>
</xsl:when>
+ <xsl:when test="local-name() = 'height' and $element != 'img'">
+ <xsl:text>height </xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+
<xsl:when test="local-name() = 'align'">
<xsl:text>text-align: </xsl:text>
<xsl:value-of select="."/>
@@ -395,15 +404,23 @@
<xsl:value-of select="$style"/>
</xsl:attribute>
</xsl:if>
- <!-- Also skip disallowed summary attributes -->
- <xsl:copy-of select="@*[local-name(.) != 'width' and
- local-name(.) != 'summary' and
- local-name(.) != 'border' and
- local-name(.) != 'cellspacing' and
- local-name(.) != 'cellpadding' and
- local-name(.) != 'style' and
- local-name(.) != 'align' and
- local-name(.) != 'valign']"/>
+ <!-- skip converted atts, and also skip disallowed summary attribute -->
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'width' and $element != 'img'"/>
+ <xsl:when test="local-name(.) = 'height' and $element != 'img'"/>
+ <xsl:when test="local-name(.) = 'summary'"/>
+ <xsl:when test="local-name(.) = 'border'"/>
+ <xsl:when test="local-name(.) = 'cellspacing'"/>
+ <xsl:when test="local-name(.) = 'cellpadding'"/>
+ <xsl:when test="local-name(.) = 'style'"/>
+ <xsl:when test="local-name(.) = 'align'"/>
+ <xsl:when test="local-name(.) = 'valign'"/>
+ <xsl:otherwise>
+ <xsl:copy-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
<xsl:apply-templates mode="convert.to.style"/>
</xsl:element>
</xsl:template>
diff --git a/xhtml5/xhtml-docbook.xsl b/xhtml5/xhtml-docbook.xsl
index e14f054..93c2df7 100644
--- a/xhtml5/xhtml-docbook.xsl
+++ b/xhtml5/xhtml-docbook.xsl
@@ -9,7 +9,7 @@
<xslo:output xmlns:xslo="http://www.w3.org/1999/XSL/Transform" method="xml" encoding="UTF-8" indent="no"/>
<!-- ********************************************************************
- $Id: docbook.xsl 9396 2012-06-02 21:56:19Z bobstayton $
+ $Id: docbook.xsl 9605 2012-09-18 10:48:54Z tom_schr $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
@@ -115,18 +115,69 @@
<!-- no apply-templates; make it empty except for dir for rtl-->
</xsl:template>
+<xsl:template name="head.content.base">
+ <xsl:param name="node" select="."/>
+ <base href="{$html.base}"/>
+</xsl:template>
+
+<xsl:template name="head.content.abstract">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
+ <xsl:if test="$info and $info/abstract">
+ <meta name="description">
+ <xsl:attribute name="content">
+ <xsl:for-each select="$info/abstract[1]/*">
+ <xsl:value-of select="normalize-space(.)"/>
+ <xsl:if test="position() &lt; last()">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="head.content.link.made">
+ <xsl:param name="node" select="."/>
+
+ <link rev="made" href="{$link.mailto.url}"/>
+</xsl:template>
+
+<xsl:template name="head.content.generator">
+ <xsl:param name="node" select="."/>
+ <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+</xsl:template>
+
+<xsl:template name="head.content.style">
+ <xsl:param name="node" select="."/>
+ <style type="text/css"><xsl:text>
+body { background-image: url('</xsl:text>
+<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</xsl:text>
+ </style>
+</xsl:template>
+
<xsl:template name="head.content">
<xsl:param name="node" select="."/>
<xsl:param name="title">
<xsl:apply-templates select="$node" mode="object.title.markup.textonly"/>
</xsl:param>
- <title>
- <xsl:copy-of select="$title"/>
- </title>
+ <xsl:call-template name="user.head.title">
+ <xsl:with-param name="title" select="$title"/>
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$html.base != ''">
- <base href="{$html.base}"/>
+ <xsl:call-template name="head.content.base">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<!-- Insert links to CSS files or insert literal style elements -->
@@ -145,39 +196,25 @@
</xsl:if>
<xsl:if test="$link.mailto.url != ''">
- <link rev="made" href="{$link.mailto.url}"/>
+ <xsl:call-template name="head.content.link.made">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
- <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
+ <xsl:call-template name="head.content.generator">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:if test="$generate.meta.abstract != 0">
- <xsl:variable name="info" select="(articleinfo |bookinfo |prefaceinfo |chapterinfo |appendixinfo |sectioninfo |sect1info |sect2info |sect3info |sect4info |sect5info |referenceinfo |refentryinfo |partinfo |info |docinfo)[1]"/>
- <xsl:if test="$info and $info/abstract">
- <meta name="description">
- <xsl:attribute name="content">
- <xsl:for-each select="$info/abstract[1]/*">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() &lt; last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </meta>
- </xsl:if>
+ <xsl:call-template name="head.content.abstract">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:if test="($draft.mode = 'yes' or ($draft.mode = 'maybe' and ancestor-or-self::*[@status][1]/@status = 'draft')) and $draft.watermark.image != ''">
- <style type="text/css"><xsl:text>
-body { background-image: url('</xsl:text>
-<xsl:value-of select="$draft.watermark.image"/><xsl:text>');
- background-repeat: no-repeat;
- background-position: top left;
- /* The following properties make the watermark "fixed" on the page. */
- /* I think that's just a bit too distracting for the reader... */
- /* background-attachment: fixed; */
- /* background-position: center center; */
- }</xsl:text>
- </style>
+ <xsl:call-template name="head.content.style">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:if>
<xsl:apply-templates select="." mode="head.keywords.content"/>
</xsl:template>
@@ -312,6 +349,15 @@ var popup_</xsl:text>
<!-- This must not output any element content! -->
</xsl:template>
+<xsl:template name="user.head.title">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="title"/>
+
+ <title>
+ <xsl:copy-of select="$title"/>
+ </title>
+</xsl:template>
+
<xsl:template name="user.head.content">
<xsl:param name="node" select="."/>
</xsl:template>