--- /dev/null
+website.dtd
+WhatsNew
--- /dev/null
+include ../cvstools/Makefile.incl
+ZIPVER=
+MERGEVER=
+NEWVER=
+
+.PHONY : distrib clean
+
+all: website.dtd
+ make -C extensions all
+ make -C extensions jars
+
+website.dtd: website-custom.dtd forms.mod
+ $(FLATTEN) $< > $@
+
+distrib:
+ $(CVS2LOG) -w
+ifeq ($(MERGEVER),)
+ $(MERGELOGS) > WhatsNew
+else
+ $(MERGELOGS) -v $(MERGEVER) > WhatsNew
+endif
+
+newversion:
+ifeq ($NEWVER),)
+ $(NEXTVERSION)
+else
+ $(NEXTVERSION) -v $(NEWVER)
+endif
+ make distrib
+
+zip: distrib
+ifeq ($(ZIPVER),)
+ @echo You must specify ZIPVER for the zip target
+else
+ make -C example clean
+ make -C example TEXTONLY=1 clean
+ rm -rf /tmp/website-$(ZIPVER)
+ rm -f /tmp/tar.exclude
+ rm -f /tmp/website-$(ZIPVER).tar.gz
+ rm -f /tmp/website-$(ZIPVER).zip
+ mkdir /tmp/website-$(ZIPVER)
+ touch /tmp/tar.exclude
+ find . -print | grep /CVS$$ | cut -c3- >> /tmp/tar.exclude
+ find . -print | grep /CVS/ | cut -c3- >> /tmp/tar.exclude
+ find . -print | grep .classes | cut -c3- >> /tmp/tar.exclude
+ find . -print | grep .cvskeep | cut -c3- >> /tmp/tar.exclude
+ find . -print | grep "~$$" | cut -c3- >> /tmp/tar.exclude
+ find . -type f -name "#*" | cut -c3- >> /tmp/tar.exclude
+ find . -type f -name ".cvsignore" | cut -c3- >> /tmp/tar.exclude
+ find . -type f -name "Makefile*" | cut -c3- >> /tmp/tar.exclude
+ find . -type f -name "README.CVS" | cut -c3- >> /tmp/tar.exclude
+ tar cf - * --exclude-from /tmp/tar.exclude | (cd /tmp/website-$(ZIPVER); tar xf -)
+ cd /tmp && tar cf - website-$(ZIPVER) | gzip > website-$(ZIPVER).tar.gz
+ cd /tmp && zip -rpD website-$(ZIPVER).zip website-$(ZIPVER)
+ rm -f tar.exclude
+endif
+
+clean:
+ make -C example clean
-README for the Website DTD V1.10
+README for the Website DTD V2.0b1
Website is an XML DTD for building, er, web sites.
-Manifest
---------
-
-README - This readme file
-VERSION - The version number
-website.dtd - The DTD, a customization layer on top of DocBook XML
-example/ - An example website
-xsl/ - XSL stylesheets for converting the Website DTD to HTML
-
DTD Installation
----------------
Please use the following formal public identifier to identify this DTD:
- "-//Norman Walsh//DTD Website V1.10//EN"
+ "-//Norman Walsh//DTD Website V2.0b1//EN"
For example:
- <!DOCTYPE website PUBLIC "-//Norman Walsh//DTD Website V1.10//EN"
- "http://docbook.sourceforge.net/repository/website/1.10/website.dtd" [
- ...
- ]>
+ <!DOCTYPE website PUBLIC "-//Norman Walsh//DTD Website V2.0b1//EN"
+ "http://docbook.sourceforge.net/release/website/2.0b1/website.dtd">
XSL Installation
----------------
Use
---
-Process your Website documents with one of the following stylesheets
-using your favorite XSLT processor:
-
- website.xsl produces a flat-text website
- tabular.xsl produces a tabular website with navigation in the
- left-hand column and page contents in the right-hand
- column.
-
- Both of these stylesheets produce a monolithic file that must be
- chunked. The chunk control files and libraries included in this
- distribution simplify this process, if you are using the chunk.pl
- file included in the DocBook XSL Stylesheet distribution.
-
- chunk-website.xsl produces a flat-text website, chunked by XSLT
- chunk-tabular.xsl produces a tabular website, chunked by XSLT
+There are several ways to process the website XML files to produce an
+HTML website.
- In order for the chunking process to succeed, all necessary
- subdirectories must be created before you begin running the
- XSLT engine. The chunking versions support XT, Saxon, and Xalan.
+For more detailed instructions, see
+http://docbook.sourceforge.net/release/website/example/
Copyright
---------
--- /dev/null
+<!-- ====================================================================== -->
+<!-- Website Autolayout DTD V2.0b1
+ Part of the Website distribution
+ http://sourceforge.net/projects/docbook/
+
+ Please direct all questions and comments about this DTD to
+ Norman Walsh, <ndw@nwalsh.com>.
+ -->
+<!-- ====================================================================== -->
+
+<!ELEMENT autolayout ((copyright|style|script|config)*, toc+, notoc*)>
+
+<!ELEMENT toc (title, titleabbrev?, summary?, tocentry*)>
+<!ATTLIST toc
+ id ID #REQUIRED
+ page CDATA #REQUIRED
+ dir CDATA #IMPLIED
+ filename CDATA #REQUIRED
+>
+
+<!ELEMENT title ANY>
+
+<!ELEMENT titleabbrev ANY>
+
+<!ELEMENT summary (#PCDATA)*>
+
+<!ELEMENT config EMPTY>
+<!ATTLIST config
+ param CDATA #REQUIRED
+ value CDATA #REQUIRED
+ altval CDATA #IMPLIED
+>
+
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ src CDATA #IMPLIED
+ type CDATA #IMPLIED
+>
+
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ src CDATA #IMPLIED
+ language CDATA #IMPLIED
+>
+
+<!ELEMENT copyright (year+, holder+)>
+
+<!ELEMENT year (#PCDATA)*>
+
+<!ELEMENT holder (#PCDATA|ulink)*>
+<!ATTLIST holder
+ role CDATA #IMPLIED
+>
+
+<!ELEMENT ulink (#PCDATA)*>
+<!ATTLIST ulink
+ url CDATA #REQUIRED
+>
+
+<!ELEMENT tocentry (title, titleabbrev?, summary?, tocentry*)>
+<!ATTLIST tocentry
+ id CDATA #REQUIRED
+ page CDATA #IMPLIED
+ href CDATA #IMPLIED
+ dir CDATA #IMPLIED
+ filename CDATA #IMPLIED
+ tocskip (0|1) "0"
+>
+
+<!ELEMENT notoc (title, titleabbrev?, summary?)>
+<!ATTLIST notoc
+ id CDATA #REQUIRED
+ page CDATA #REQUIRED
+ dir CDATA #IMPLIED
+ filename CDATA #REQUIRED
+>
+
+<!-- End of autolayout.dtd V2.0b1 ......................................... -->
+<!-- ...................................................................... -->
--- /dev/null
+autolayout.xml
+*.html
+depends.tabular
+depends.textonly
+
PROC=saxon
-PROCOPT=
+PROCOPT=-q
+TABSTYLE=../xsl/tabular.xsl
+WEBSTYLE=../xsl/website.xsl
+TABCHUNK=../xsl/chunk-tabular.xsl
+WEBCHUNK=../xsl/chunk-website.xsl
+DESTPATH=.
+TEXTONLY=0
+USETIDY=1
.PHONY : clean
-all: test
+all:
+ make website
+ make TEXTONLY=1 website
-test:
- xjparse website.xml
-ifeq ($(PROC),xt)
- $(PROC) $(PROCOPT) website.xml ../xsl/xtchunk-website.xsl
+ifeq ($(TEXTONLY),0)
+STYLESHEET=$(TABSTYLE)
+STYLECHUNK=$(TABCHUNK)
+STYLEOPT=
+include depends.tabular
else
- $(PROC) $(PROCOPT) website.xml ../xsl/chunk-website.xsl
+STYLESHEET=$(WEBSTYLE)
+STYLECHUNK=$(WEBCHUNK)
+STYLEOPT=filename-prefix=txt
+include depends.textonly
endif
-tabular:
- xnsgmls -sv -c /share/doctypes/catalog website.xml
-ifeq ($(PROC),xt)
- $(PROC) $(PROCOPT) website.xml ../xsl/xtchunk-tabular.xsl
-else
- $(PROC) $(PROCOPT) website.xml ../xsl/chunk-tabular.xsl
-endif
+autolayout.xml: layout.xml
+ xjparse $(filter-out autolayout.xml,$^)
+ $(PROC) $(PROCOPT) $< ../xsl/autolayout.xsl $@
+ make depends
-clean:
- rm -f *.html subdir/*.html
+chunk: autolayout.xml
+ $(PROC) $(PROCOPT) autolayout.xml $(STYLECHUNK) - output-root=$(DESTPATH)
+
+%.html: autolayout.xml
+ xjparse $(filter-out autolayout.xml,$^)
+ $(PROC) $(PROCOPT) $(filter-out autolayout.xml,$^) $(STYLESHEET) $@ $(STYLEOPT)
+ifeq ($(USETIDY),1)
+ -tidy -iq -latin1 -mn $@
+endif
+depends: autolayout.xml
+ xjparse $<
+ $(PROC) $(PROCOPT) $< ../xsl/makefile-dep.xsl depends.tabular
+ $(PROC) $(PROCOPT) $< ../xsl/makefile-dep.xsl depends.textonly prefix=txt
+<!DOCTYPE webpage SYSTEM "../website.dtd">
<webpage id="about">
<config param="rcsdate" value="$Date$"/>
-<config param="filename" value="about.html"/><head>
+<head>
<title>About the Test Home Page</title>
<summary>About the Test Home Page</summary>
</head>
-<para>This collection of pages is built from a single SGML
-document using
-<ulink url="http://www.jclark.com/jade/">Jade</ulink> and a
-customization of the DSSSL
-<ulink url="http://nwalsh.com/docbook/dsssl/">DocBook Stylesheet</ulink>
-for HTML.</para>
-<sect1>
-<title>Why?</title>
-<para>There are a number of compelling reasons to maintain these pages in
-SGML rather than HTML.</para>
-<orderedlist>
-<listitem><para>First and foremost, they provide a test environment for the
-HTML stylesheet. Ok, maybe that's not compelling to you, but it's compelling
-to me ;-).</para>
-</listitem>
-<listitem><para>Traditional printed documents are desirable for several of
-these pages.</para>
-<para>Using a more structurally rich format to represent the documents makes
-it possible to produce print as well as online versions.</para>
-</listitem>
-<listitem><para>All of the intra-document linking is automatic.</para>
-<para>The SGML system provides validation for the inra-document links, so
-there is no danger of broken links. (Links to external pages still have to
-be validated by an external program.)</para>
-</listitem>
-<listitem><para>Migrating these pages to XML and/or future versions of HTML
-will only require a new or updated style sheet. No pages will have to be recoded.
-And the pages will conform to whatever output format is required, with no
-possibility of random human error.</para>
-</listitem>
-</orderedlist>
-</sect1>
+<para>This collection of pages is built from a set of XML
+documents using XSLT.</para>
</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd" [
+<!ENTITY buildmake.xml SYSTEM "build-make.xml" NDATA XML>
+]>
+<webpage id="buildext">
+<config param="desc" value="Building with XSLT Extensions"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Building with XSLT</title>
+<titleabbrev>Using XSLT</titleabbrev>
+<summary>Building with XSLT Extensions</summary>
+</head>
+
+<para>The alternative to <olink targetdocent="buildmake.xml">using
+make</olink> is to use XSLT extension functions. Naturally this will
+only be possible if you're using a processor for which the extensions
+have been implemented. The Website distribution includes extensions
+for Xalan and Saxon.</para>
+
+<orderedlist>
+<listitem><para>Create your webpages and your <filename>layout.xml</filename>
+file.</para></listitem>
+
+<listitem><para>Use XSLT to create <filename>autolayout.xml</filename>.
+Do this by processing your <filename>layout.xml</filename> with the
+<filename>autolayout.xsl</filename> stylesheet.
+</para></listitem>
+
+<listitem><para>Use XSLT to build the website: process the
+<filename>autolayout.xml</filename> file with the
+<filename>chunk-tabular.xsl</filename> stylesheet. That should build your
+website.
+</para>
+
+<para>You can use the <literal>output-root</literal> parameter to direct
+where the result documents are produced.</para>
+</listitem>
+</orderedlist>
+</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="buildmake">
+<config param="desc" value="Building with Make"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Building with Make</title>
+<titleabbrev>Using Make</titleabbrev>
+<summary>Building with Make</summary>
+</head>
+
+<para>The following instructions work with recent versions of GNU Make;
+you may have to tweak them a bit if you're using some other version of
+<command>make</command>.
+</para>
+
+<orderedlist>
+<listitem><para>Create your webpages and your <filename>layout.xml</filename>
+file.</para></listitem>
+
+<listitem><para>Create a skeletal <filename>Makefile</filename> like this:
+</para>
+
+<programlisting><![CDATA[PROC=xslproc
+STYLEDIR=../xsl
+TABSTYLE=$(STYLEDIR)/tabular.xsl
+STYLESHEET=$(TABSTYLE)
+STYLEOPT=
+
+.PHONY : clean
+
+all:
+ make website
+
+include depends.tabular
+
+autolayout.xml: layout.xml
+ $(PROC) $< $(STYLEDIR)/autolayout.xsl $@
+ make depends
+
+%.html: autolayout.xml
+ $(PROC) $(filter-out autolayout.xml,$^) $(STYLESHEET) $@ $(STYLEOPT)
+
+depends: autolayout.xml
+ $(PROC) $< ../xsl/makefile-dep.xsl depends.tabular
+]]></programlisting>
+
+<para>You'll have to change the <literal>PROC</literal> setting and
+the command-lines used to run the processor.</para>
+</listitem>
+
+<listitem><para>Create an empty file called
+<filename>depends.tabular</filename>.
+</para></listitem>
+
+<listitem><para>Run <command>make depends</command>.
+</para></listitem>
+
+<listitem><para>Run <command>make</command>. That should build your
+website.
+</para></listitem>
+</orderedlist>
+
+</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="textonly">
+<config param="desc" value="Building Text-only Websites"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Building Text-only Websites</title>
+<titleabbrev>Text-only</titleabbrev>
+<summary>Building Text-onlyt Websites</summary>
+</head>
+
+<para>The <filename>tabular.xsl</filename> and
+<filename>chunk-tabular.xsl</filename> stylesheets produce a two-column
+tabular website. If you wish to produce a purely text-only presentation
+more suitable for text-only or audio browsing, use the
+<filename>website.xsl</filename> or
+<filename>chunk-website.xsl</filename> stylesheets.</para>
+
+<para>It's possible to generate both tabular and text-only presentations
+in the same directory(ies). Use the <literal>filename-prefix</literal>
+parameter to put a prefix (such as <quote><literal>txt</literal></quote>)
+on the text-only versions (or put a prefix on the tabular versions,
+if you prefer).</para>
+
+</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="building">
+<config param="desc" value="Building the HTML Pages"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Building the HTML Pages</title>
+<titleabbrev>Building</titleabbrev>
+<summary>Building strategies</summary>
+</head>
+
+<para>dummy page</para>
+
+</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="customize">
+<config param="desc" value="Customizing the Stylesheets"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Customizing the Stylesheets</title>
+<titleabbrev>Customization</titleabbrev>
+<summary>Stylesheet customization instructions</summary>
+</head>
+
+<para>You can customize the stylesheets for your particular website
+by making a driver like this:</para>
+
+<programlisting><![CDATA[
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<xsl:import href="/path/to/the/website.xsl"/>
+
+<!-- put your customizations here -->
+
+</xsl:stylesheet>]]></programlisting>
+
+<para>If you use the tabular style, you'll discover that the
+Website home page has two ugly features: "home.navhead" and
+"home.navhead.upperright".</para>
+
+<para>In order to remove these, you have to write a custom stylesheet
+that puts the text (or whatever) you want on the homepage in those
+locations. Your stylesheet should look like this:</para>
+
+<programlisting><![CDATA[
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<xsl:import href="/path/to/the/tabular.xsl"/>
+
+<!-- Replace the text in these templates with whatever you want -->
+<!-- to appear in the respective location on the home page. -->
+
+<xsl:template name="home.navhead">
+<xsl:text>home.navhead</xsl:text>
+</xsl:template>
+
+<xsl:template name="home.navhead.upperright">
+<xsl:text>home.navhead.upperright</xsl:text>
+</xsl:template>
+
+<!-- put your customizations here -->
+</xsl:stylesheet>]]></programlisting>
+
+</webpage>
\ No newline at end of file
+body {
+ }
+
.navhomehead { padding-top: 0;
margin-bottom: 0;
padding-bottom: 0;
.navfoot a:link { color: black; }
.navfoot a:visited { color: black; }
+pre.programlisting { font-size: 80%;
+ }
+
span.footdate { color: black;
font-size: 70%;
font-family: Arial, sans-serif;
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE layout SYSTEM "../layout.dtd">
+<layout>
+ <config param="text-prefix" value="txt"/>
+
+ <config param="homebanner-tabular" value="graphics/homebanner.png"
+ altval="Home Banner"/>
+ <config param="banner-tabular" value="graphics/banner.png"
+ altval="Banner"/>
+
+ <config param="homebanner" value="graphics/homebanner.png"
+ altval="Home Banner"/>
+ <config param="banner" value="graphics/icons/iconhome.gif"
+ altval="Banner"/>
+
+ <copyright>
+ <year>1999</year><year>2000</year><year>2001</year>
+ <holder role="http://nwalsh.com/~ndw/">Norman Walsh</holder>
+ </copyright>
+
+ <style src="example.css" type="text/css"/>
+
+ <toc page="website.xml" filename="index.html">
+ <tocentry page="wslayout.xml" filename="layout.html"/>
+ <tocentry page="olink.xml" filename="linking.html"/>
+ <tocentry page="custom.xml" filename="custom.html"/>
+ <tocentry page="building.xml" filename="building.html" tocskip='1'>
+ <tocentry page="build-make.xml" filename="buildmake.html"/>
+ <tocentry page="build-ext.xml" filename="buildext.html"/>
+ <tocentry page="build-textonly.xml" filename="textonly.html"/>
+ </tocentry>
+ <tocentry page="test2.xml" filename="formtest.html"/>
+ <tocentry page="test3.xml" filename="test3.html"/>
+ <tocentry page="rddl.xml" filename="rddl.html"/>
+ <tocentry id="nwalsh.com" href="http://nwalsh.com/">
+ <title>nwalsh.com</title>
+ </tocentry>
+ </toc>
+
+ <toc page="test1.xml" filename="test1.html">
+ <tocentry page="test1a.xml" dir="subdir" filename="test1a.html"/>
+ <tocentry page="test1b.xml" dir="subdir" filename="test1b.html"/>
+ </toc>
+
+ <notoc page="about.xml" filename="about.html"/>
+</layout>
+
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="olink">
+<config param="desc" value="Linking Pages"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Linking Pages</title>
+<titleabbrev>Linking</titleabbrev>
+<summary>Linking across Pages</summary>
+</head>
+
+<para>In Website, the website pages are different XML documents so it
+is no longer possible to use <sgmltag>link</sgmltag> to make links
+between them. Instead, you must use <sgmltag>olink</sgmltag><footnote>
+<para>It's also possible to use <sgmltag>ulink</sgmltag> and make links
+directly to the generated HTML pages, but that's a bad idea; if you change
+the hierarchy or rename a page, the link will become stale. With
+<sgmltag>olink</sgmltag> this won't happen.</para></footnote>.</para>
+
+<para><sgmltag>Olink</sgmltag> is different from the other linking mechanisms
+that you may be familiar with. Instead of using a URI or an IDREF to form
+the link, it uses an XML unparsed entity. If that sounds greek, don't
+worry too much, it's easy to do.</para>
+
+<orderedlist>
+<listitem><para>Create an entity declaration that identifies the target
+page. For example, to link to this page, I would use the following
+declaration:</para>
+
+<programlisting
+><![CDATA[<!ENTITY linking SYSTEM "olink.xml" NDATA XML>]]></programlisting>
+
+<para>The name that you use for the entity, <literal>linking</literal>
+in this case, is irrelevant. The important thing is that the entity
+point to the right page. I've used a system identifier here, but you could
+also use public identifiers if you wanted more flexibility.</para>
+
+<para>Keep in mind that the systen identifier specified here must be
+either an absolute URI or a relative URI that will resolve to the
+target page (in other words, you may need to prefix it with a partial
+path name, if you keep your XML webpages in different directories).</para>
+</listitem>
+
+<listitem><para>Make sure the webpage that you are linking
+<emphasis>from</emphasis> (you don't have to do anything special to
+the page you're linking to) has a <quote>DOCTYPE</quote> declaration with
+an internal subset. If your <sgmltag>olink</sgmltag> entity is the only
+thing in it, it should look like something like this:</para>
+
+<programlisting
+><![CDATA[<!DOCTYPE webpage PUBLIC "-//SF DocBook//DTD Website V2.0//EN"
+ SYSTEM "http://www.sourceforge.net/docbook/release/website/2.0/website.dtd [
+<!ENTITY linking SYSTEM "olink.xml" NDATA XML>
+]>]]></programlisting>
+
+<para>If you want to link to several different pages, you will need an
+entity declaration for each of them.</para>
+</listitem>
+
+<listitem><para>Use the <sgmltag class="attribute">targetdocent</sgmltag>
+attribute of <sgmltag>olink</sgmltag> to identify the entity of the page
+you want to link to:</para>
+
+<programlisting
+><![CDATA[<olink targetdocent="linking">link text</olink>]]></programlisting>
+
+<para>That will link to the correct page in the resulting website. If you
+want to link to a specific anchor in that web page, use the
+<sgmltag class="attribute">localinfo</sgmltag> attribute to specify the
+XML ID.</para>
+</listitem>
+</orderedlist>
+
+</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="parameters">
+<config param="desc" value="Parameters"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Stylesheet Parameters</title>
+<titleabbrev>Parameters</titleabbrev>
+<summary>Stylesheet parameter summary</summary>
+</head>
+
+<section><title>General Parameters</title>
+param.xsl:<xsl:param name="header.hr" select="1"/>
+param.xsl:<xsl:param name="footer.hr" select="1"/>
+param.xsl:<xsl:param name="feedback.href"></xsl:param>
+param.xsl:<xsl:param name="feedback.title" select="0"/>
+param.xsl:<xsl:param name="feedback.link.text">Feedback</xsl:param>
+param.xsl:<xsl:param name="filename-prefix" select="''"/>
+</section>
+
+<section><title>Chunking Parameters</title>
+chunk-common.xsl:<xsl:param name="autolayout-file" select="'autolayout.xml'"/>
+chunk-common.xsl:<xsl:param name="output-root" select="'.'"/>
+chunk-common.xsl:<xsl:param name="dry-run" select="'0'"/>
+chunk-common.xsl:<xsl:param name="rebuild-all" select="'0'"/>
+</section>
+
+<section><title>Tabular Parameters</title>
+tabular.xsl:<xsl:param name="autolayout-file" select="'autolayout.xml'"/>
+tabular.xsl:<xsl:param name="admon.style" select="''"/>
+tabular.xsl:<xsl:param name="admon.graphics" select="1"/>
+tabular.xsl:<xsl:param name="admon.graphics.path">graphics/</xsl:param>
+tabular.xsl:<xsl:param name="admon.graphics.extension">.gif</xsl:param>
+tabular.xsl:<xsl:param name="nav.table.summary">Navigation</xsl:param>
+tabular.xsl:<xsl:param name="navtocwidth">220</xsl:param>
+tabular.xsl:<xsl:param name="navbodywidth">600</xsl:param>
+tabular.xsl:<xsl:param name="textbgcolor">white</xsl:param>
+tabular.xsl:<xsl:param name="navbgcolor">#4080FF</xsl:param>
+toc-tabular.xsl:<xsl:param name="toc.spacer.graphic" select="1"/>
+toc-tabular.xsl:<xsl:param name="toc.spacer.text">   </xsl:param>
+toc-tabular.xsl:<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param>
+toc-tabular.xsl:<xsl:param name="toc.pointer.graphic" select="1"/>
+toc-tabular.xsl:<xsl:param name="toc.pointer.text"> > </xsl:param>
+toc-tabular.xsl:<xsl:param name="toc.pointer.image">graphics/arrow.gif</xsl:param>
+toc-tabular.xsl:<xsl:param name="toc.blank.graphic" select="1"/>
+toc-tabular.xsl:<xsl:param name="toc.blank.text">   </xsl:param>
+toc-tabular.xsl:<xsl:param name="toc.blank.image">graphics/blank.gif</xsl:param>
+</section>
+
+<section><title>Dependency Parameters</title>
+makefile-dep.xsl:<xsl:param name="prefix" select="''"/>
+</section>
+
+</webpage>
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="rddl"
+ xmlns:rddl='http://www.rddl.org/'>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>RDDL</title>
+<summary>RDDL</summary>
+<rddl:resource id="rddl.outofline"
+ xlink:title="Test Out of Line RDDL"/>
+</head>
+
+<para>This test page
+<rddl:resource
+ xlink:title="Test Inline RDDL">demonstrates</rddl:resource>
+how to incorporate
+<ulink url="http://www.rddl.org/">RDDL</ulink> into
+your web pages.
+</para>
+
+<para>To apply RDDL resources to inline elements, just wrap the
+<sgmltag>rddl:resource</sgmltag> element around them.
+</para>
+
+<section rddl="rddl.outofline">
+<title>Out Of Line RDDL</title>
+
+<para>Apply RDDL to an entire section requires an <quote>out of line</quote>
+RDDL resource. (Allowing <sgmltag>rddl:resource</sgmltag> elements to
+wrap sections would interrupt the structure of the document more than
+I'm willing to allow.)</para>
+
+<itemizedlist>
+<listitem>
+<para>Put an empty <sgmltag>rddl:resource</sgmltag> element in the
+<sgmltag>head</sgmltag> of your <sgmltag>webpage</sgmltag>.</para>
+</listitem>
+<listitem>
+<para>Assign an ID value to the <sgmltag>rddl:resource</sgmltag>.</para>
+</listitem>
+<listitem>
+<para>Refer to the ID of the <sgmltag>rddl:resource</sgmltag> with the
+<sgmltag class="attribute">rddl</sgmltag> attribute on
+<sgmltag>section</sgmltag>.
+</para>
+</listitem>
+</itemizedlist>
+
+<para>The stylesheets will wrap the <sgmltag>rddl:resource</sgmltag>
+around the section in the resulting HTML.</para>
+
+</section>
+
+</webpage>
+
+<!DOCTYPE webpage SYSTEM "../website.dtd">
<webpage id="test1">
<config param="rcsdate" value="$Date$"/>
-<config param="filename" value="test1.html"/><head>
-<title>Test 1</title>
+<head>
+<title>Test <emphasis>1</emphasis></title>
<summary>Test 1 Page</summary>
</head>
<para>This is just a test page.</para>
<webtoc/>
-&test1a;
-&test1b;
</webpage>
+<!DOCTYPE webpage SYSTEM "../website.dtd" [
+<!ENTITY blah "<para>blah blah blah blah blah blah blah blah blah blah blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah blah blah
+</para>">
+]>
<webpage id="test1a">
<config param="rcsdate" value="$Date$"/>
-<config param="filename" value="test1a.html"/>
-<config param="dir" value="subdir"/>
<head>
<title>Test 1a</title>
<summary>Test 1a Page</summary>
<para>This is just a test page.</para>
<para>But it contains a broken inlinegraphic:
-<ulink url="foo.com"><inlinegraphic fileref="foo.jpg"/></ulink>.
+<ulink url="foo.com"><inlinemediaobject>
+<imageobject>
+<imagedata fileref="foo.jpg"/>
+</imageobject>
+<textobject><phrase>A broken graphic</phrase></textobject>
+</inlinemediaobject></ulink>.
</para>
+<section><title>Test Section</title>
+
+&blah;
+&blah;
+&blah;
+&blah;
+&blah;
+&blah;
+&blah;
+
+<section id="xxx"><title>Another test section</title>
+
+&blah;
+&blah;
+&blah;
+&blah;
+&blah;
+&blah;
+
+</section>
+</section>
+
</webpage>
+<!DOCTYPE webpage SYSTEM "../website.dtd">
<webpage id="test1b">
<config param="rcsdate" value="$Date$"/>
-<config param="filename" value="test1b.html"/>
-<config param="dir" value="subdir"/>
<head>
<title>Test 1b</title>
<summary>Test 1b Page</summary>
-<webpage id="test2">
+<!DOCTYPE webpage SYSTEM "../website.dtd">
+<webpage id="test2" xmlns:html="http://www.w3.org/1999/xhtml">
<config param="rcsdate" value="$Date$"/>
-<config param="filename" value="formtest.html"/><head>
+<head>
<title>Form Test</title>
<summary>Form Test Page</summary>
</head>
+<!DOCTYPE webpage SYSTEM "../website.dtd" [
+<!ENTITY bookmarks SYSTEM "bookmark/bookmark.xml" NDATA SGML>
+]>
<webpage id="test3">
<config param="rcsdate" value="$Date$"/>
-<config param="filename" value="test3.html"/><head>
+<head>
<title>XBEL Bookmarks</title>
<summary>XBEL Bookmark test</summary>
</head>
your web pages. Use an xlink as follows:
</para>
-<screen><![CDATA[<xlink href="bookmark/bookmark.xml" show="embed" actuate="auto"/>]]></screen>
-
-<xlink href="bookmark/bookmark.xml" show="embed" actuate="auto"/>
+<programlisting
+><![CDATA[<olink targetdocent="bookmark-entity" type="embed"/>]]></programlisting>
<para>
-You can use dynamic HTML for your bookmarks, if you specify
-<literal>role="dynamic"</literal> on the xlink:</para>
-
-<xlink href="bookmark/bookmark.xml" show="embed" actuate="auto"
- role="dynamic"/>
+<olink targetdocent="bookmarks" type="embed"/>
+</para>
</webpage>
-<!DOCTYPE website SYSTEM "../website.dtd" [
-<!ENTITY about SYSTEM "about.xml">
-<!ENTITY test1 SYSTEM "test1.xml">
-<!ENTITY test1a SYSTEM "test1a.xml">
-<!ENTITY test1b SYSTEM "test1b.xml">
-<!ENTITY test2 SYSTEM "test2.xml">
-<!ENTITY test3 SYSTEM "test3.xml">
+<!DOCTYPE webpage SYSTEM "../website.dtd" [
+<!NOTATION XML SYSTEM "xml">
+<!ENTITY test1a SYSTEM "test1a.xml" NDATA XML>
+<!ENTITY test3 SYSTEM "test3.xml" NDATA XML>
+<!ENTITY about.xml SYSTEM "about.xml" NDATA XML>
]>
-<website>
-<homepage>
+<webpage id="home">
<config param="desc" value="The Test Home Page"/>
-<config param="filename" value="index.html"/>
<config param="rcsdate" value="$Date$"/>
<config param="footer" value="about.html" altval="About..."/>
-<config param="homebanner" value="graphics/homebanner.png"
- altval="Home Banner"/>
-<config param="banner" value="graphics/banner.png"
- altval="Banner"/>
<head>
-<title>Test Home Page</title>
-<summary>The Test Site</summary>
+<title>Welcome to Website</title>
+<summary>Introduction</summary>
<keywords>Norman Walsh, DSSSL, SGML, XML, DocBook, Website</keywords>
-<copyright><year>1999</year><year>2000</year>
-<holder role="http://nwalsh.com/~ndw/">Norman Walsh</holder></copyright>
-<style src="example.css" class="global"></style>
</head>
-<sect1><title>Hello, and Welcome!</title>
+<para> This small, somewhat contrived website demonstrates the
+Website document type. Website provides a system for building static
+Websites from XML content.</para>
-<para>
-This website demonstrates the Website DTD. In order to generate HTML
-web pages from documents using this DTD, you must format them with
-an XSLT processor (well, you could do it with any tool you wanted,
-I suppose, but XSLT is the popular choice :-).
-</para>
+<para>A <ulink url="txtindex.html">text-only</ulink> version is also
+available, demonstrating how multiple presentations can be derived from
+the same sources.</para>
<webtoc/>
-<sect2><title>XSLT</title>
-<para>To format this website using XSLT, use
-the <filename>website.xsl</filename>
-or <filename>tabular.xsl</filename> stylesheets from the
-<ulink url="http://nwalsh.com/website/">Website distribution</ulink>:
+<section><title>What is a Website?</title>
-<screen>
-xt website.xml website.xsl
-</screen>
+<para>A website is a collection of pages organized, for the purposes of
+navigation, into one or more hierarchies. In Website, each page is a
+separate XML document authored according to the Website DTD, a customization
+of <ulink url="http://www.oasis-open.org/docbook/">DocBook</ulink>.</para>
-You must chunk the resulting document yourself. The XSL stylesheet
-distribution includes a chunking configuration file suitable for use
-with <command>chunk.pl</command> from the
-<ulink url="http://nwalsh.com/docbook/xsl/">DocBook stylesheet
-distribution</ulink>.</para>
+<para>Website imposes the following additional constraints:</para>
-</sect2>
-<sect2><title>XSLT With Chunking</title>
-
-<para>Alternatively, you can use <filename>chunk-website.xsl</filename>
-or <filename>chunk-tabular.xsl</filename> and let the XSLT
-processor do the chunking for you.</para>
-
-<para>The XT, Saxon, and Xalan processors are supported by the chunking
-stylesheets. If you're using a alternate processor, you'll have to do
-the chunking with another tool.</para>
-
-</sect2>
-
-<sect2><title>Customizing the Stylesheets</title>
-
-<para>You can customize the stylesheets for your particular website
-by making a driver like this:</para>
-
-<screen><![CDATA[
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version='1.0'>
-
-<xsl:import href="/path/to/the/stylesheet.xsl"/>
-
-<!-- put your customizations here -->
-</xsl:stylesheet>]]></screen>
-
-<para>If you use the tabular processors, you'll discover that the
-Website home page has two ugly features: "home.navhead" and
-"home.navhead.upperright".</para>
-
-<para>In order to remove these, you have to write a custom stylesheet
-that puts the text you want on the homepage in those locations. Your
-stylesheet should look like this:</para>
-
-<screen><![CDATA[
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version='1.0'>
-
-<xsl:import href="/path/to/the/stylesheet.xsl"/>
-
-<!-- Replace the text in these templates with whatever you want -->
-<!-- to appear in the respective location on the home page. -->
-
-<xsl:template name="home.navhead">
-<xsl:text>home.navhead</xsl:text>
-</xsl:template>
-
-<xsl:template name="home.navhead.upperright">
-<xsl:text>home.navhead.upperright</xsl:text>
-</xsl:template>
-
-<!-- put your customizations here -->
-</xsl:stylesheet>]]></screen>
-
-<para>You will also want to change some of the <config>
-parameters (to select different banner graphics, etc.).</para>
-
-</sect2>
-
-<sect2>
-<title>What's New</title>
-<variablelist>
-<varlistentry><term>24 Aug 2000</term>
-<listitem>
-<para>Improved documentation, merged distribution of stylesheets
-and the DTD.</para>
+<itemizedlist>
+<listitem><para>Each <sgmltag>webpage</sgmltag> must have an ID and
+the IDs must be unique across the entire website.</para>
</listitem>
-</varlistentry>
-<varlistentry><term>29 Mar 2000</term>
-<listitem>
-<para>Updated description of XSL support.</para>
+<listitem><para>No page can occur in more than one location in the
+navigational hierarchy of the website. Note, however, that you can have
+pages, such as the <olink targetdocent="about.xml">about page</olink>,
+that don't appear in the navigational hierarchy at all.</para>
</listitem>
-</varlistentry>
-<varlistentry><term>28 Feb 2000</term>
-<listitem>
-<para>Updated to mention XSL.</para>
+</itemizedlist>
+</section>
+
+<section><title>Requirements</title>
+
+<para>In order to build a website with Website, you must have:</para>
+
+<itemizedlist>
+<listitem><para>The
+<ulink url="http://www.oasis-open.org/docbook/xml/4.1.2/">DocBook XML
+V4.1.2</ulink> DTD.
+</para></listitem>
+<listitem><para>An XSLT processor.
+</para></listitem>
+<listitem><para>The <ulink url="http://nwalsh.com/docbook/xsl/">DocBook
+XSL Stylesheets</ulink>.</para>
</listitem>
-</varlistentry>
-<varlistentry><term>24 Feb 1999</term>
+<listitem><para>The Website DTD and stylesheets.
+</para></listitem>
+</itemizedlist>
+
+</section>
+
+<section><title>Changes from Website 1.x</title>
+
+<para>I've completely redesigned the way the Website doctype works for
+V2. In version 1, all of the pages in a website were part of a single,
+monolithic XML document.</para>
+
+<para>Making all of the pages part of a single document had a number
+of drawbacks:</para>
+
+<orderedlist>
+<listitem><para>It wasn't convenient to update only part of a website
+(only the pages that had been changed, for example).
+</para></listitem>
+<listitem><para>For very large websites, there were memory issues associated
+with parsing and formatting the whole thing.
+</para></listitem>
+<listitem><para>There was no practical way to publish the XML content of
+a site.
+</para></listitem>
+<listitem><para>It was difficult to share pages across different web sites.
+</para></listitem>
+<listitem><para>It was very tedious to setup a system that allowed
+the same content to be published
+with different navigational hierarchies.
+</para></listitem>
+</orderedlist>
+
+<para>Website overcomes all of these difficulties.</para>
+
+<para>In fairness, the old style had some advantages:</para>
+
+<orderedlist>
+<listitem><para>There was only a single source document to maintain.
+</para></listitem>
+<listitem><para>Navigation was derived automatically from the structure
+of the source document.
+</para></listitem>
+<listitem><para>Link checking was cheap and easy.
+</para></listitem>
+</orderedlist>
+</section>
+
+<section id="whatsnew">
+<title>What's New</title>
+<variablelist>
+<varlistentry><term>20 Mar 2001</term>
<listitem>
-<para>First release.</para>
+<para>Reworked using the Website paradigm.</para>
</listitem>
</varlistentry>
</variablelist>
-</sect2>
-</sect1>
-
-&about;
-
-</homepage>
-
-&test1;
-&test2;
-&test3;
+</section>
-</website>
+</webpage>
<!--
Local variables:
--- /dev/null
+<!DOCTYPE webpage SYSTEM "../website.dtd" [
+<!NOTATION XML SYSTEM "xml">
+<!ENTITY olink.xml SYSTEM "olink.xml" NDATA XML>
+<!ENTITY about.xml SYSTEM "about.xml" NDATA XML>
+<!ENTITY building.xml SYSTEM "building.xml" NDATA XML>
+]>
+<webpage id="layout">
+<config param="desc" value="Navigation Layout"/>
+<config param="rcsdate" value="$Date$"/>
+<head>
+<title>Site Layout</title>
+<summary>Site Navigation Layout Setup</summary>
+</head>
+
+<para>Breaking all of the web pages into separate XML documents
+introduces a significant problem: the hierarchical structure of the website
+is no longer manifest in the source document.</para>
+
+<para>In order for the stylesheets to construct the navigation system,
+you must describe the desired hierarchy explicitly in a
+<emphasis>layout</emphasis> file. The layout file, which must
+conform to <filename>layout.dtd</filename>, identifies all of the
+pages in the website and defines how they fit into the navigational
+hierarchy. Here is simple layout file:
+</para>
+
+<programlisting><![CDATA[<?xml version="1.0"?>
+<layout>
+ <toc page="website.xml" filename="index.html">
+ <tocentry page="doc1.xml" filename="page1.html"/>
+ <tocentry page="doc2.xml" filename="page2.html"/>
+ </toc>
+</layout>]]></programlisting>
+
+<para>This website has three pages:</para>
+
+<orderedlist>
+<listitem><para><filename>index.html</filename>,
+generated from <filename>website.xml</filename>;
+</para></listitem>
+<listitem><para><filename>page1.html</filename>,
+generated from <filename>doc1.xml</filename>; and
+</para></listitem>
+<listitem><para><filename>page2.html</filename>,
+generated from <filename>doc2.xml</filename>
+</para></listitem>
+</orderedlist>
+
+<para>Using this layout file, the hierarchical structure of the website
+is a main page <filename>index.html</filename> with two subordinate
+pages that are siblings:</para>
+
+<programlisting>
+ + index.html
+ + page1.html
+ + page2.html
+</programlisting>
+
+<para>Here's a slightly more complicated example:</para>
+
+<programlisting><![CDATA[<?xml version="1.0"?>
+<layout>
+ <toc page="website.xml" filename="index.html">
+ <tocentry page="doc1.xml" dir="subdir"
+ filename="index.html">
+ <tocentry page="doc1.1.xml" filename="page2.html"/>
+ <tocentry page="doc1.2.xml" filename="page3.html"/>
+ </tocentry>
+ <tocentry page="doc2.xml" filename="page2.html"/>
+ </toc>
+</layout>]]></programlisting>
+
+
+<para>This website has five pages:</para>
+
+<orderedlist>
+<listitem><para><filename>index.html</filename>,
+generated from <filename>website.xml</filename>;
+</para></listitem>
+<listitem><para><filename>subdir/index.html</filename>,
+generated from <filename>doc1.xml</filename>;
+</para></listitem>
+<listitem><para><filename>subdir/page2.html</filename>,
+generated from <filename>doc1.1.xml</filename>;
+</para></listitem>
+<listitem><para><filename>subdir/page3.html</filename>,
+generated from <filename>doc1.2.xml</filename>; and
+</para></listitem>
+<listitem><para><filename>page2.html</filename>,
+generated from <filename>doc2.xml</filename>
+</para></listitem>
+</orderedlist>
+
+<para>Using this layout file, the hierarchical structure of the website
+is a main page <filename>index.html</filename> with two subordinate
+pages that are siblings (<filename>subdir/index.html</filename>
+and <filename>page2.html</filename>). The first sibling page has
+two siblings of its own (<filename>subdir/page2.html</filename>
+and <filename>subdir/page3.html</filename>):</para>
+
+<programlisting>
+ + index.html
+ + subdir/index.html
+ + subdir/page2.html
+ + subdir/page3.html
+ + page2.html
+</programlisting>
+
+<para>In brief, the hierarchy of <sgmltag>tocentry</sgmltag> elements
+in a <sgmltag>toc</sgmltag> describes the logical navigation hierarchy
+of the website. Each entry must identify the XML document (containing
+a <sgmltag class="starttag">webpage</sgmltag>) that it represents and
+may identify the directory and filename where the file will appear in
+the HTML website.</para>
+
+<para>By default, directories are inherited (hence
+<filename>page2.html</filename> and <filename>page3.html</filename>
+will appear in the <filename>subdir</filename> directory) which makes
+it easy to build a website that has similar logical and physical
+organization. It is not necessary for the logical and physical
+hierarchy of your website to be consistent; you can specify an absolute
+directory at any level and on any file by beginning the name with a
+slash.</para>
+
+<para>If a directory is not specified, the files will appear in the currently
+inherited directory (or in the root, if no directory is specified anywhere
+in the <sgmltag>tocentry</sgmltag> ancestry).</para>
+
+<para>If a filename is not specified, <filename>index.html</filename> will
+be used.</para>
+
+<para>It is possible to map two different XML documents to the same HTML
+filename. At present, the stylesheets do not detect this, but the result
+will be a broken website. Exercise caution.</para>
+
+<section><title>Global Parameters</title>
+
+<para>The layout file can also contain a number of global parameters:
+<sgmltag>config</sgmltag>,
+<sgmltag>script</sgmltag>,
+<sgmltag>style</sgmltag>, and
+<sgmltag>copyright</sgmltag>. For the most part, these elements behave
+as they do on individual pages, except that they apply to every page.
+</para>
+
+</section>
+
+<section><title>Multiple <sgmltag>toc</sgmltag>s</title>
+
+<para>If you put multiple <sgmltag>toc</sgmltag> elements in your
+layout file, the result will be completely separate navigational hierarchies.
+Note, however, that the restriction that a page can only appear once in
+a website prevents a page from appearing in more than one hierarchy.
+</para>
+
+<para>Navigation between hierarchies is only possible if you insert
+<olink targetdocent="olink.xml">links between pages</olink>
+across hierarchies.
+</para>
+
+</section>
+
+<section><title>Standalone Pages</title>
+
+<para>Pages identified with <sgmltag>notoc</sgmltag> elements instead
+of <sgmltag>tocentry</sgmltag>s will be in the website but will not appear
+in any hierarchy. The <olink targetdocent="about.xml">about page</olink>
+of this example website uses <sgmltag>notoc</sgmltag>.
+</para>
+
+</section>
+
+<section><title><quote>Dummy</quote> Pages</title>
+
+<para>Sometimes it's useful to have a page in the hierarchy in order to
+make the TOC clearer, without actually wanting to construct the page.
+Consider the <quote>Building</quote> page in this website. It's really
+just a hierarchy placeholder for the different sorts of building that
+are possible.</para>
+
+<para>If you click on <quote>Building</quote> in the TOC, you'll discover
+that you don't actually go to that page, instead you go to that page's
+first child.</para>
+
+<para>This effect is achieved by using the
+<sgmltag class="attribute">tocskip</sgmltag> attribute on the
+<sgmltag>tocentry</sgmltag> for the building page.</para>
+
+<para>Note, however, that the skipped page must exist and it is still
+possible to link directly to
+<olink targetdocent="building.xml">the page</olink>.</para>
+
+</section>
+
+</webpage>
\ No newline at end of file
--- /dev/null
+.PHONY: saxon64 xalan2
+
+all: saxon64 xalan2
+
+saxon64:
+ make -C saxon64/.classes
+
+xalan2:
+ make -C xalan2/.classes
+
+jars: saxon64 xalan2
+ make -C saxon64/.classes jar
+ make -C xalan2/.classes jar
+
+clean:
+ make -C saxon64/.classes clean
+ make -C xalan2/.classes clean
--- /dev/null
+// Website.java - Saxon extensions supporting Website2
+
+package com.nwalsh.saxon;
+
+import java.io.File;
+import java.lang.NullPointerException;
+
+public class Website {
+ public Website() {
+ }
+
+ public static boolean exists(String filename) {
+ try {
+ File file = new File(filename);
+ return file.exists();
+ } catch (NullPointerException npe) {
+ return false;
+ }
+ }
+
+ public static boolean needsUpdate(String srcFilename,
+ String targetFilename) {
+ File srcFile;
+ File targetFile;
+
+ try {
+ targetFile = new File(targetFilename);
+ } catch (NullPointerException npe) {
+ return false;
+ }
+
+ try {
+ srcFile = new File(srcFilename);
+ } catch (NullPointerException npe) {
+ return false;
+ }
+
+ if (!srcFile.exists()) {
+ return false;
+ }
+
+ if (!targetFile.exists()) {
+ return true;
+ }
+
+ return (srcFile.lastModified() > targetFile.lastModified());
+ }
+}
--- /dev/null
+(jde-set-project-name "saxon")
+(jde-set-variables
+ '(jde-gen-session-bean-template (quote ("(jde-import-insert-imports-into-buffer (list \"javax.ejb.*\"
+\"java.rmi.RemoteException\"))" "(jde-wiz-update-implements-clause \"SessionBean\")" "'> \"public void ejbActivate() throws RemoteException {\"'>'n \"}\"'>'n
+'>'n" "'> \"public void ejbPassivate() throws RemoteException {\"'>'n \"}\"'>'n
+'>'n" "'> \"public void ejbRemove() throws RemoteException {\"'>'n \"}\"'>'n '>'n" "'> \"public void setSessionContext(SessionContext ctx) throws
+RemoteException {\"" "'>'n \"}\"'>'n '>'n" "'> \"public void unsetSessionContext() throws RemoteException {\"'>'n
+\"}\"'>'n '>'n'>")))
+ '(jde-gen-beep (quote ("(end-of-line) '&" "\"Toolkit.getDefaultToolkit().beep();\"'>'n'>")))
+ '(jde-which-method-format (quote ("[" jde-which-method-current "]")))
+ '(jde-run-classic-mode-vm nil)
+ '(jde-javadoc-gen-nodeprecatedlist nil)
+ '(jde-which-method-max-length 20)
+ '(jde-imenu-include-classdef t)
+ '(jde-javadoc-gen-link-online nil)
+ '(jde-gen-code-templates (quote (("Get Set Pair" . jde-gen-get-set) ("toString method" . jde-gen-to-string-method) ("Action Listener" . jde-gen-action-listener) ("Window Listener" . jde-gen-window-listener) ("Mouse Listener" . jde-gen-mouse-listener) ("Mouse Motion Listener" . jde-gen-mouse-motion-listener) ("Inner Class" . jde-gen-inner-class) ("println" . jde-gen-println) ("beep" . jde-gen-beep) ("property change support" . jde-gen-property-change-support) ("EJB Entity Bean" . jde-gen-entity-bean) ("EJB Session Bean" . jde-gen-session-bean))))
+ '(jde-gen-cflow-else (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"else\")" "'(l '> \"else \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of else\"'>'n'>)" ")")))
+ '(jde-make-args "")
+ '(jde-javadoc-gen-destination-directory "JavaDoc")
+ '(jde-mode-line-format (quote ("-" mode-line-mule-info mode-line-modified mode-line-frame-identification mode-line-buffer-identification " " global-mode-string " %[(" mode-name mode-line-process minor-mode-alist "%n" ")%]--" (line-number-mode "L%l--") (column-number-mode "C%c--") (-3 . "%p") (jde-which-method-mode ("--" jde-which-method-format "--")) "-%-")))
+ '(jde-mode-abbreviations (quote (("ab" . "abstract") ("bo" . "boolean") ("br" . "break") ("by" . "byte") ("byv" . "byvalue") ("cas" . "cast") ("ca" . "catch") ("ch" . "char") ("cl" . "class") ("co" . "const") ("con" . "continue") ("de" . "default") ("dou" . "double") ("el" . "else") ("ex" . "extends") ("fa" . "false") ("fi" . "final") ("fin" . "finally") ("fl" . "float") ("fo" . "for") ("fu" . "future") ("ge" . "generic") ("go" . "goto") ("impl" . "implements") ("impo" . "import") ("ins" . "instanceof") ("in" . "int") ("inte" . "interface") ("lo" . "long") ("na" . "native") ("ne" . "new") ("nu" . "null") ("pa" . "package") ("pri" . "private") ("pro" . "protected") ("pu" . "public") ("re" . "return") ("sh" . "short") ("st" . "static") ("su" . "super") ("sw" . "switch") ("sy" . "synchronized") ("th" . "this") ("thr" . "throw") ("throw" . "throws") ("tra" . "transient") ("tr" . "true") ("vo" . "void") ("vol" . "volatile") ("wh" . "while"))))
+ '(jde-imenu-enable t)
+ '(jde-compile-option-verbose nil)
+ '(jde-db-option-heap-size (quote ((1 . "megabytes") (16 . "megabytes"))))
+ '(jde-bug-debugger-host-address "localhost" t)
+ '(jde-make-working-directory "")
+ '(jde-bug-breakpoint-marker-colors (quote ("red" . "yellow")))
+ '(jde-javadoc-gen-use nil)
+ '(jde-gen-buffer-boilerplate nil)
+ '(jde-bug-raise-frame-p t)
+ '(jde-db-option-application-args (quote ("-IN" "/share/xsl/docbook/test/exttest.xml" "-XSL " "/share/xsl/docbook/test/exttest.xsl")) t)
+ '(jde-javadoc-gen-nonavbar nil)
+ '(jde-javadoc-gen-nohelp nil)
+ '(jde-bug-vm-includes-jpda-p nil)
+ '(jde-gen-jfc-app-buffer-template (quote ("(funcall jde-gen-boilerplate-function) '>'n" "\"import java.awt.Dimension;\" '>'n" "\"import java.awt.Graphics;\" '>'n" "\"import java.awt.Graphics2D;\" '>'n" "\"import java.awt.Color;\" '>'n" "\"import java.awt.geom.Ellipse2D;\" '>'n" "\"import java.awt.event.WindowAdapter;\" '>'n" "\"import java.awt.event.WindowEvent;\" '>'n" "\"import javax.swing.JFrame;\" '>'n" "\"import javax.swing.JPanel;\" '>'n" "\"import javax.swing.JScrollPane;\" '>'n" "\"import javax.swing.JMenuBar;\" '>'n" "\"import javax.swing.JMenu;\" '>'n" "\"import java.awt.event.ActionEvent;\" '>'n" "\"import javax.swing.AbstractAction;\" '>'n '>'n" "\"/**\" '>'n" "\" * \"" "(file-name-nondirectory buffer-file-name) '>'n" "\" *\" '>'n" "\" *\" '>'n" "\" * Created: \" (current-time-string) '>'n" "\" *\" '>'n" "\" * @author <a href=\\\"mailto: \\\"\" (user-full-name) \"</a>\"'>'n" "\" * @version\" '>'n" "\" */\" '>'n" "'>'n" "\"public class \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" extends JFrame\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"class Canvas extends JPanel\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public Canvas () \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"setSize(getPreferredSize());\" '>'n" "\"Canvas.this.setBackground(Color.white);\" '>'n" "\"}\"'>'n '>'n" "\"public Dimension getPreferredSize() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"return new Dimension(600, 600);\" '>'n" "\"}\"'>'n '>'n" "\"public void paintComponent(Graphics g) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"super.paintComponent(g);\" '>'n" "\"Graphics2D g2d = (Graphics2D) g;\" '>'n" "\"Ellipse2D circle = new Ellipse2D.Double(0d, 0d, 100d, 100d);\" '>'n" "\"g2d.setColor(Color.red);\" '>'n" "\"g2d.translate(10, 10);\" '>'n" "\"g2d.draw(circle);\" '>'n" "\"g2d.fill(circle);\" '>'n" "\"}\"'>'n " "\"}\"'>'n '>'n" "\"public \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\"()\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"super(\\\"\" (P \"Enter app title: \") \"\\\");\" '>'n" "\"setSize(300, 300);\" '>'n" "\"addWindowListener(new WindowAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public void windowClosing(WindowEvent e) {System.exit(0);}\" '>'n" "\"public void windowOpened(WindowEvent e) {}\" '>'n" "\"});\"'>'n" "\"setJMenuBar(createMenu());\" '>'n" "\"getContentPane().add(new JScrollPane(new Canvas()));\" '>'n" "\"}\"'>'n" "'>'n" "\"public static void main(String[] args) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" f = new \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\"();\" '>'n" "\"f.show();\" '>'n" "\"}\"'>'n '>'n" "\"protected JMenuBar createMenu() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"JMenuBar mb = new JMenuBar();\" '>'n" "\"JMenu menu = new JMenu(\\\"File\\\");\" '>'n" "\"menu.add(new AbstractAction(\\\"Exit\\\") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public void actionPerformed(ActionEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"System.exit(0);\" '>'n" "\"}\" '>'n" "\"});\" '>'n" "\"mb.add(menu);\" '>'n" "\"return mb;\" '>'n" "\"}\"'>'n " "\"} // \"'>" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "'>'n")))
+ '(jde-bug-key-bindings (quote (("[?\ 3 ?\1a ?\13]" . jde-bug-step-over) ("[?\ 3 ?\1a ?\18]" . jde-bug-step-into) ("[?\ 3 ?\1a ?\ 1]" . jde-bug-step-into-all) ("[?\ 3 ?\1a ?\17]" . jde-bug-step-out) ("[?\ 3 ?\1a ?\ 3]" . jde-bug-continue) ("[?\ 3 ?\1a ?\ 2]" . jde-bug-toggle-breakpoint))))
+ '(jde-compile-finish-hook (quote (jde-compile-finish-refresh-speedbar jde-compile-finish-flush-completion-cache)))
+ '(jde-compile-option-nowarn nil)
+ '(jde-setnu-mode-threshold 20000)
+ '(jde-run-java-vm-w "javaw")
+ '(jde-compile-option-encoding nil)
+ '(jde-run-option-java-profile (quote (nil . "./java.prof")))
+ '(jde-bug-jpda-directory "/usr/local/jdk1.2.2" t)
+ '(jde-read-compile-args nil)
+ '(jde-run-java-vm "java")
+ '(jde-db-option-verbose (quote (nil nil nil)))
+ '(jde-which-method-class-min-length 4)
+ '(jde-db-read-app-args nil)
+ '(jde-javadoc-gen-nodeprecated nil)
+ '(jde-run-option-heap-profile (quote (nil "./java.hprof" 5 20 "Allocation objects")))
+ '(jde-gen-println (quote ("(end-of-line) '&" "\"System.out.println(\" (P \"Print out: \") \");\" '>'n'>")))
+ '(jde-enable-abbrev-mode nil)
+ '(jde-auto-parse-max-buffer-size 50000)
+ '(jde-gen-cflow-main (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"main\")" "'(l '> \"public static void main (String[] args) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of main ()\"'>'n'>)" ")")))
+ '(jde-javadoc-exception-tag-template "\"* @exception \" type \" if an error occurs\"")
+ '(jde-global-classpath nil t)
+ '(jde-gen-window-listener-template (quote ("(end-of-line) '& (P \"Window name: \")" "\".addWindowListener(new WindowAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"public void windowActivated(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"" "'>'n \"public void windowClosed(WindowEvent e)\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowClosing(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"System.exit(0);\" '>'n \"}\"" "'>'n \"public void windowDeactivated(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowDeiconified(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowIconified(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowOpened(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"});\" '>'n'>")))
+ '(jde-run-working-directory "/share/doctypes/website-pages/extensions" t)
+ '(jde-gen-property-change-support (quote ("(end-of-line) '&" "\"protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);\" '>'n '>'n" "\"/**\" '>'n" "\"* Adds a PropertyChangeListener to the listener list.\" '>'n" "\"* The listener is registered for all properties.\" '>'n" "\"*\" '>'n" "\"* @param listener The PropertyChangeListener to be added\" '>'n" "\"*/\" '>'n" "\"public void addPropertyChangeListener(PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"pcs.addPropertyChangeListener(listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n" "\"* Removes a PropertyChangeListener from the listener list.\" '>'n" "\"* This removes a PropertyChangeListener that was registered for all properties.\" '>'n" "\"*\" '>'n " "\"* @param listener The PropertyChangeListener to be removed\" '>'n" "\"*/\" '>'n" "\"public void removePropertyChangeListener(PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>\"pcs.removePropertyChangeListener(listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Adds a PropertyChangeListener for a specific property.\" '>'n" "\"* The listener will be invoked only when a call on firePropertyChange\" '>'n" "\"* names that specific property.\" '>'n" "\"*\" '>'n \"* @param propertyName The name of the property to listen on\" '>'n" "\"* @param listener The PropertyChangeListener to be added\" '>'n \"*/\" '>'n" "\"public void addPropertyChangeListener(String propertyName,\" '>'n" "\"PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.addPropertyChangeListener(propertyName, listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Removes a PropertyChangeListener for a specific property.\" '>'n" "\"*\" '>'n \"* @param propertyName The name of the property that was listened on\" '>'n" "\"* @param listener The PropertyChangeListener to be removed\" '>'n \"*/\" '>'n" "\"public void removePropertyChangeListener(String propertyName,\" '>'n" "\"PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.removePropertyChangeListener(propertyName, listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Reports a bound property update to any registered listeners. \" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"*\" '>'n \"* @param propertyName The programmatic name of the property that was changed\" '>'n" "\"* @param oldValue The old value of the property\" '>'n" "\"* @param newValue The new value of the property.\" '>'n \"*/\" '>'n" "\"public void firePropertyChange(String propertyName, Object oldValue, Object newValue) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(propertyName, oldValue, newValue);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Reports a bound property update to any registered listeners. \" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"* This is merely a convenience wrapper around the more general\" '>'n" "\"* firePropertyChange method that takes Object values.\" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"*\" '>'n \"* @param propertyName The programmatic name of the property that was changed\" '>'n" "\"* @param oldValue The old value of the property\" '>'n" "\"* @param newValue The new value of the property.\" '>'n \"*/\" '>'n" "\"public void firePropertyChange(String propertyName, int oldValue, int newValue) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(propertyName, oldValue, newValue);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Reports a bound property update to any registered listeners. \" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"* This is merely a convenience wrapper around the more general\" '>'n" "\"* firePropertyChange method that takes Object values.\" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"*\" '>'n \"* @param propertyName The programmatic name of the property that was changed\" '>'n" "\"* @param oldValue The old value of the property\" '>'n" "\"* @param newValue The new value of the property.\" '>'n \"*/\" '>'n" "\"public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(propertyName, oldValue, newValue);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Fires an existing PropertyChangeEvent to any registered listeners.\" '>'n" "\"* No event is fired if the given event's old and new values are equal and non-null. \" '>'n" "\"*\" '>'n \"* @param evt The PropertyChangeEvent object.\" '>'n\"*/\" '>'n" "\"public void firePropertyChange(PropertyChangeEvent evt) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(evt);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Checks if there are any listeners for a specific property.\" '>'n" "\"*\" '>'n \"* @param evt The PropertyChangeEvent object.\" '>'n" "\"* @return <code>true</code>if there are one or more listeners for the given property\" '>'n" "\"*/\" '>'n" "\"public boolean hasListeners(String propertyName) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"return pcs.hasListeners(propertyName);\" '>'n \"}\" '>'n '>'n'>")))
+ '(jde-javadoc-describe-interface-template "\"* Describe interface \" (jde-javadoc-code name) \" here.\"")
+ '(jde-imenu-include-signature t)
+ '(jde-db-marker-regexp "^.*: thread=.*, \\(\\(.*[.]\\)*\\)\\([^$]*\\)\\($.*\\)*[.].+(), line=\\([0-9]*\\),")
+ '(jde-gen-mouse-motion-listener-template (quote ("(end-of-line) '& (P \"Component name: \")" "\".addMouseMotionListener(new MouseMotionAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>" "'>'n \"public void mouseDragged(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"public void mouseMoved(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"});\"'>'n'>")))
+ '(jde-key-bindings (quote (("[?\ 3 ?\16 ?\ 1]" . jde-run-menu-run-applet) ("[?\ 3 ?\16 ?\ 2]" . jde-build) ("[?\ 3 ?\16 ?\ 3]" . jde-compile) ("[?\ 3 ?\16 ?\ 4]" . jde-debug) ("[?\ 3 ?\16 ?\ 6]" . jde-wiz-implement-interface) ("[?\ 3 ?\16 ?j]" . jde-javadoc-generate-javadoc-template) ("[?\ 3 ?\16 ?\v]" . bsh) ("[?\ 3 ?\16 ?\f]" . jde-gen-println) ("[?\ 3 ?\16 ?\ e]" . jde-browse-jdk-doc) ("[?\ 3 ?\16 ?\10]" . jde-save-project) ("[?\ 3 ?\16 ?\11]" . jde-wiz-update-class-list) ("[?\ 3 ?\16 ?\12]" . jde-run) ("[?\ 3 ?\16 ?\13]" . speedbar-frame-mode) ("[?\ 3 ?\16 ?\14]" . jde-db-menu-debug-applet) ("[?\ 3 ?\16 ?\17]" . jde-help-symbol) ("[?\ 3 ?\16 ?\19]" . jde-show-class-source) ("[?\ 3 ?\16 ?\1a]" . jde-import-find-and-import) ("[(control c) (control v) (control ?.)]" . jde-complete-at-point-menu) ("[(control c) (control v) ?.]" . jde-complete-at-point))))
+ '(jde-gen-cflow-for-i (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"fori\")" "'(l '> \"for (int \" (p \"variable: \" var) \" = 0; \"" "(s var)" "\" < \"(p \"upper bound: \" ub)\"; \" (s var) \"++) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of for (int \" (s var) \" = 0; \"" "(s var) \" < \" (s ub) \"; \" (s var) \"++)\"'>'n'>)" ")")))
+ '(jde-run-option-classpath (quote ("/share/doctypes/website-pages/extensions/xalan2/.classes" "/projects/apache/xml-xalan/java/build/classes" "/projects/apache/xml-xalan/java/bin/bsf.jar" "/projects/apache/xml-xalan/java/bin/xerces.jar" "/projects/sun/resolver/.classes" "/projects/apache/xml-xerces/java/build/classes" "/home/ndw/java")) t)
+ '(jde-javadoc-gen-detail-switch (quote ("-protected")))
+ '(jde-bug-sio-connect-delay 1)
+ '(jde-javadoc-param-tag-template "\"* @param \" name \" \" (jde-javadoc-a type)
+ \" \" (jde-javadoc-code type) \" value\"")
+ '(jde-compile-option-verbose-path nil)
+ '(jde-javadoc-display-doc t)
+ '(jde-imenu-modifier-abbrev-alist (quote (("public" . 43) ("protected" . 177) ("private" . 172) ("static" . 2215) ("transient" . 35) ("volatile" . 126) ("abstract" . 170) ("final" . 182) ("native" . 36) ("synchronized" . 64) ("strictfp" . 37))))
+ '(jde-db-debugger (quote ("JDEbug" "/usr/local/jdk1.2.2/lib/i386" . "Executable")) t)
+ '(jde-jdk-doc-url "http://www.javasoft.com/products/jdk/1.1/docs/index.html")
+ '(jde-gen-cflow-enable t)
+ '(jde-compiler "javac")
+ '(jde-javadoc-gen-verbose nil)
+ '(jde-javadoc-describe-method-template "\"* Describe \" (jde-javadoc-code name) \" method here.\"")
+ '(jde-gen-class-buffer-template (quote ("(funcall jde-gen-boilerplate-function) '>'n" "\"/**\" '>'n" "\" * \"" "(file-name-nondirectory buffer-file-name) '>'n" "\" *\" '>'n" "\" *\" '>'n" "\" * Created: \" (current-time-string) '>'n" "\" *\" '>'n" "\" * @author <a href=\\\"mailto: \\\"\" (user-full-name) \"</a>\"'>'n" "\" * @version\" '>'n" "\" */\" '>'n'" "'>'n" "\"public class \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" \" (jde-gen-get-super-class)" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" ()\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'p'n" "\"}\">" "'>'n" "\"}\">" "\"// \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "'>'n")))
+ '(jde-javadoc-checker-level (quote protected))
+ '(jde-appletviewer-option-vm-args nil)
+ '(jde-run-executable-args nil)
+ '(jde-db-option-garbage-collection (quote (t t)))
+ '(jde-javadoc-gen-stylesheetfile "")
+ '(jde-use-font-lock t)
+ '(jde-compile-option-bootclasspath nil)
+ '(jde-make-program "make")
+ '(jde-javadoc-gen-group nil)
+ '(jde-javadoc-gen-link-offline nil)
+ '(jde-entering-java-buffer-hook (quote (jde-reload-project-file jde-which-method-update-on-entering-buffer)))
+ '(jde-javadoc-gen-doc-title "")
+ '(jde-javadoc-gen-header "")
+ '(jde-run-option-vm-args nil)
+ '(jde-javadoc-gen-window-title "")
+ '(jde-compile-option-directory "/sourceforge/docbook/website/extensions/saxon64/.classes" t)
+ '(jde-imenu-create-index-function (quote semantic-create-imenu-index))
+ '(jde-gen-console-buffer-template (quote ("(funcall jde-gen-boilerplate-function) '>'n" "\"/**\" '>'n" "\" * \"" "(file-name-nondirectory buffer-file-name) '>'n" "\" *\" '>'n" "\" *\" '>'n" "\" * Created: \" (current-time-string) '>'n" "\" *\" '>'n" "\" * @author <a href=\\\"mailto: \\\"\" (user-full-name) \"</a>\"'>'n" "\" * @version\" '>'n" "\" */\" '>'n" "'>'n" "\"public class \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" ()\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n" "\"}\"'>'n" "'>'n" "\"public static void main(String[] args)\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'p'n" "\"}\"'>'n" "\"} // \"'>" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "'>'n")))
+ '(jde-read-make-args nil)
+ '(jde-javadoc-gen-noindex nil)
+ '(jde-gen-mouse-listener-template (quote ("(end-of-line) '& (P \"Component name: \")" "\".addMouseListener(new MouseAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'> " "'>'n \"public void mouseClicked(MouseEvent e) \" " "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\" '>" "'>'n \"public void mouseEntered(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\" '>" "'>'n \"public void mouseExited(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"public void mousePressed(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\" '>" "'>'n \"public void mouseReleased(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"});\"'>'n'>")))
+ '(jde-run-option-application-args (quote ("-IN" "test.xml" "-XSL" "test.xsl")) t)
+ '(jde-bug-vm-executable (quote ("java")))
+ '(jde-db-set-initial-breakpoint t)
+ '(jde-bug-debugger-command-timeout 10)
+ '(jde-db-option-stack-size (quote ((128 . "kilobytes") (400 . "kilobytes"))))
+ '(jde-db-option-properties nil t)
+ '(jde-db-source-directories (quote ("/share/doctypes/website-pages/extensions/xalan2/" "/projects/apache/xml-xalan/java/src/" "/projects/apache/xml-xerces/java/build/src/" "/projects/sun/resolver/" "/home/ndw/java/")) t)
+ '(jde-run-read-app-args nil)
+ '(jde-gen-to-string-method-template (quote ("(end-of-line) '&" "\"public String toString() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n'>")))
+ '(jde-quote-classpath t)
+ '(jde-bug-window-message nil)
+ '(jde-build-use-make nil)
+ '(jde-javadoc-author-tag-template "\"* @author <a href=\\\"mailto:\" user-mail-address
+ \"\\\">\" user-full-name \"</a>\"")
+ '(jde-javadoc-describe-field-template "\"* Describe \" (jde-javadoc-field-type modifiers)
+ \" \" (jde-javadoc-code name) \" here.\"")
+ '(jde-javadoc-gen-link-URL nil)
+ '(jde-compile-option-classpath (quote ("/usr/local/java/saxon-6.4.3/saxon.jar")) t)
+ '(jde-bug-jdk-directory "/usr/local/jdk1.2.2" t)
+ '(jde-gen-boilerplate-function (quote jde-gen-create-buffer-boilerplate))
+ '(jde-gen-entity-bean-template (quote ("(jde-import-insert-imports-into-buffer (list \"javax.ejb.*\"
+\"java.rmi.RemoteException\"))" "'> \"public void ejbActivate() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbPassivate() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbLoad() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbStore() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbRemove() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void setEntityContext(EntityContext ctx) throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void unsetEntityContext() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n'>")))
+ '(jde-javadoc-describe-constructor-template "\"* Creates a new \" (jde-javadoc-code name) \" instance.\"")
+ '(jde-bug-server-shmem-name (quote (t . "JDEbug")))
+ '(jde-db-startup-commands nil)
+ '(jde-javadoc-gen-docletpath nil)
+ '(jde-javadoc-gen-split-index nil)
+ '(jde-compile-option-deprecation nil t)
+ '(jde-import-group-of-rules (quote (("^javax?\\."))))
+ '(jde-which-method-mode t)
+ '(jde-gen-k&r t)
+ '(jde-javadoc-gen-bottom "")
+ '(jde-javadoc-gen-footer "")
+ '(jde-db-option-classpath (quote ("/share/doctypes/website-pages/extensions/xalan2/.classes" "/projects/apache/xml-xalan/java/build/classes" "/projects/apache/xml-xalan/java/bin/bsf.jar" "/projects/apache/xml-xalan/java/bin/xerces.jar" "/projects/sun/resolver/.classes" "/projects/apache/xml-xerces/java/build/classes" "/home/ndw/java")) t)
+ '(jde-gen-cflow-for (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"for\")" "'(l '> \"for (\" (p \"for-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of for (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-run-mode-hook nil)
+ '(jde-db-option-verify (quote (nil t)))
+ '(jde-compile-option-extdirs nil)
+ '(jde-imenu-sort nil)
+ '(jde-gen-get-set-var-template (quote ("(end-of-line) '&" "(P \"Variable type: \" type) \" \"" "(P \"Variable name: \" name) \";\" '>'n '>'n" "\"/**\" '>'n" "\"* Get the value of \" (s name) \".\" '>'n" "\"* @return value of \" (s name) \".\" '>'n" "\"*/\" '>'n" "'>'\"public \" (s type)" "(if (string= \"boolean\" (jde-gen-lookup-named 'type) ) " "\" is\" " "\" get\" ) " "(jde-gen-init-cap (jde-gen-lookup-named 'name))" "\"() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\" '>'n" "\"return \" (s name) \";\" '>'n \"}\"" "'>'n '>'n" "\"/**\" '>'n" "\"* Set the value of \" (s name) \".\" '>'n" "\"* @param v Value to assign to \" (s name) \".\" '>'n" "\"*/\" '>'n" "'>'\"public void set\" (jde-gen-init-cap (jde-gen-lookup-named 'name))" "\"(\" (s type) \" v) \" " "(if jde-gen-k&r " "()" "'>'n)" "\"{\" '>'n" "'>'\"this.\" (s name) \" = v;\" '>'n \"}\" '>'n'>")))
+ '(jde-bug-saved-breakpoints nil)
+ '(jde-compile-option-sourcepath (quote ("/sourceforge/docbook/website/extensions/saxon64")) t)
+ '(jde-gen-cflow-if (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"if\")" "'(l '> \"if (\" (p \"if-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of if (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-db-option-java-profile (quote (nil . "./java.prof")))
+ '(jde-javadoc-gen-author t)
+ '(jde-compile-option-depend-switch (quote ("-Xdepend")))
+ '(jde-setnu-mode-enable nil)
+ '(jde-run-applet-doc "")
+ '(jde-compile-option-vm-args nil)
+ '(jde-javadoc-gen-overview "")
+ '(jde-javadoc-gen-notree nil)
+ '(jde-run-option-garbage-collection (quote (t t)))
+ '(jde-db-mode-hook nil)
+ '(jde-javadoc-command-path "javadoc")
+ '(jde-db-option-heap-profile (quote (nil "./java.hprof" 5 20 "Allocation objects")))
+ '(jde-import-group-function (quote jde-import-group-of))
+ '(jde-db-read-vm-args nil)
+ '(jde-bug-debug nil)
+ '(jde-javadoc-end-block-template nil)
+ '(jde-javadoc-gen-packages nil)
+ '(jde-gen-cflow-if-else (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"ife\")" "'(l '> \"if (\" (p \"if-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of if (\" (s clause) \")\"'> n" "'> \"else \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of if (\" (s clause) \")else\"'>'n'>)" ")")))
+ '(jde-gen-cflow-while (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"while\")" "'(l '> \"while (\" (p \"while-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of while (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-bug-server-socket (quote (t . "2112")))
+ '(jde-imenu-include-modifiers nil)
+ '(jde-appletviewer-option-encoding "")
+ '(jde-bug-breakpoint-cursor-colors (quote ("cyan" . "brown")))
+ '(jde-compile-option-target (quote ("1.1")))
+ '(jde-run-executable "")
+ '(jde-run-option-heap-size (quote ((1 . "megabytes") (16 . "megabytes"))))
+ '(jde-gen-cflow-switch (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"switch\")" "'(l '> \"switch (\" (p \"switch-condition: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'" "\"case \" (p \"first value: \") \":\"'>'n'>'p'n" "\"break;\"'>'n'>'p'n" "\"default:\"'>'n'>'p'n" "\"break;\"'>'n" "\"} // end of switch (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-which-method-abbrev-symbol "~")
+ '(jde-db-option-vm-args nil)
+ '(jde-run-application-class "org.apache.xalan.xslt.Process" t)
+ '(jde-javadoc-gen-doclet "")
+ '(jde-import-auto-sort nil)
+ '(jde-run-option-verbose (quote (nil nil nil)))
+ '(jde-project-file-name "prj.el")
+ '(jde-compile-option-debug (quote ("selected" (t nil nil))) t)
+ '(jde-bug-jre-home "")
+ '(jde-import-sorted-groups nil)
+ '(jde-run-applet-viewer "")
+ '(jde-javadoc-return-tag-template "\"* @return \" (jde-javadoc-a type)
+ \" \" (jde-javadoc-code type) \" value\"")
+ '(jde-javadoc-gen-version t)
+ '(jde-javadoc-gen-helpfile "")
+ '(jde-import-excluded-packages (quote ("bsh.*")))
+ '(jde-run-read-vm-args nil)
+ '(jde-help-docsets nil)
+ '(jde-gen-inner-class-template (quote ("(end-of-line) '& \"class \" (P \"Class name: \" class)" "(P \"Superclass: \" super t)" "(let ((parent (jde-gen-lookup-named 'super)))" "(if (not (string= parent \"\"))" "(concat \" extends \" parent ))) " "(if jde-gen-k&r " "()" "'>'n)" "\"{\" '>'n" "\"public \" (s class) \"() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n" "\"}\" '>'n'>")))
+ '(jde-auto-parse-buffer-interval 180)
+ '(jde-run-option-verify (quote (nil t)))
+ '(jde-import-reverse-sort-group nil)
+ '(jde-compile-option-optimize nil)
+ '(jde-gen-cflow-case (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"case\")" "'(l 'n \"case \" (p \"value: \") \":\"'>'n'>'p'n" "\"break;\"'>'n'>'p)" ")")))
+ '(jde-compile-option-depend nil)
+ '(jde-javadoc-describe-class-template "\"* Describe class \" (jde-javadoc-code name) \" here.\"")
+ '(jde-javadoc-gen-serialwarn nil)
+ '(jde-gen-action-listener-template (quote ("'& (P \"Component name: \")" "\".addActionListener(new ActionListener() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public void actionPerformed(ActionEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n \"});\"'>'n'>")))
+ '(jde-auto-parse-enable t)
+ '(jde-compile-option-command-line-args "")
+ '(jde-gen-buffer-templates (quote (("Class" . jde-gen-class) ("Console" . jde-gen-console) ("Swing App" . jde-gen-jfc-app))))
+ '(jde-project-context-switching-enabled-p t)
+ '(jde-javadoc-gen-args nil)
+ '(jde-run-option-stack-size (quote ((128 . "kilobytes") (400 . "kilobytes"))))
+ '(jde-run-option-properties nil t))
+
+
--- /dev/null
+// Website.java - Saxon extensions supporting Website2
+
+package com.nwalsh.xalan;
+
+import java.io.File;
+import java.lang.Boolean;
+import java.lang.NullPointerException;
+
+import org.apache.xalan.extensions.ExpressionContext;
+
+public class Website {
+ public Website() {
+ }
+
+ public static Boolean exists(ExpressionContext context, String filename) {
+ try {
+ File file = new File(filename);
+ return new Boolean(file.exists());
+ } catch (NullPointerException npe) {
+ return new Boolean(false);
+ }
+ }
+
+ public static Boolean needsUpdate(ExpressionContext context,
+ String srcFilename,
+ String targetFilename) {
+ File srcFile;
+ File targetFile;
+
+ try {
+ targetFile = new File(targetFilename);
+ } catch (NullPointerException npe) {
+ return new Boolean(false);
+ }
+
+ try {
+ srcFile = new File(srcFilename);
+ } catch (NullPointerException npe) {
+ return new Boolean(false);
+ }
+
+ if (!srcFile.exists()) {
+ return new Boolean(false);
+ }
+
+ if (!targetFile.exists()) {
+ return new Boolean(true);
+ }
+
+ return new Boolean(srcFile.lastModified() > targetFile.lastModified());
+ }
+}
--- /dev/null
+
+
+
+
+
+
+
+
+
+
+
+
+(jde-set-project-name "xalan")
+(jde-set-variables
+ '(jde-gen-session-bean-template (quote ("(jde-import-insert-imports-into-buffer (list \"javax.ejb.*\"
+\"java.rmi.RemoteException\"))" "(jde-wiz-update-implements-clause \"SessionBean\")" "'> \"public void ejbActivate() throws RemoteException {\"'>'n \"}\"'>'n
+'>'n" "'> \"public void ejbPassivate() throws RemoteException {\"'>'n \"}\"'>'n
+'>'n" "'> \"public void ejbRemove() throws RemoteException {\"'>'n \"}\"'>'n '>'n" "'> \"public void setSessionContext(SessionContext ctx) throws
+RemoteException {\"" "'>'n \"}\"'>'n '>'n" "'> \"public void unsetSessionContext() throws RemoteException {\"'>'n
+\"}\"'>'n '>'n'>")))
+ '(jde-gen-beep (quote ("(end-of-line) '&" "\"Toolkit.getDefaultToolkit().beep();\"'>'n'>")))
+ '(jde-which-method-format (quote ("[" jde-which-method-current "]")))
+ '(jde-run-classic-mode-vm nil)
+ '(jde-javadoc-gen-nodeprecatedlist nil)
+ '(jde-which-method-max-length 20)
+ '(jde-imenu-include-classdef t)
+ '(jde-javadoc-gen-link-online nil)
+ '(jde-gen-code-templates (quote (("Get Set Pair" . jde-gen-get-set) ("toString method" . jde-gen-to-string-method) ("Action Listener" . jde-gen-action-listener) ("Window Listener" . jde-gen-window-listener) ("Mouse Listener" . jde-gen-mouse-listener) ("Mouse Motion Listener" . jde-gen-mouse-motion-listener) ("Inner Class" . jde-gen-inner-class) ("println" . jde-gen-println) ("beep" . jde-gen-beep) ("property change support" . jde-gen-property-change-support) ("EJB Entity Bean" . jde-gen-entity-bean) ("EJB Session Bean" . jde-gen-session-bean))))
+ '(jde-gen-cflow-else (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"else\")" "'(l '> \"else \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of else\"'>'n'>)" ")")))
+ '(jde-make-args "")
+ '(jde-javadoc-gen-destination-directory "JavaDoc")
+ '(jde-mode-line-format (quote ("-" mode-line-mule-info mode-line-modified mode-line-frame-identification mode-line-buffer-identification " " global-mode-string " %[(" mode-name mode-line-process minor-mode-alist "%n" ")%]--" (line-number-mode "L%l--") (column-number-mode "C%c--") (-3 . "%p") (jde-which-method-mode ("--" jde-which-method-format "--")) "-%-")))
+ '(jde-mode-abbreviations (quote (("ab" . "abstract") ("bo" . "boolean") ("br" . "break") ("by" . "byte") ("byv" . "byvalue") ("cas" . "cast") ("ca" . "catch") ("ch" . "char") ("cl" . "class") ("co" . "const") ("con" . "continue") ("de" . "default") ("dou" . "double") ("el" . "else") ("ex" . "extends") ("fa" . "false") ("fi" . "final") ("fin" . "finally") ("fl" . "float") ("fo" . "for") ("fu" . "future") ("ge" . "generic") ("go" . "goto") ("impl" . "implements") ("impo" . "import") ("ins" . "instanceof") ("in" . "int") ("inte" . "interface") ("lo" . "long") ("na" . "native") ("ne" . "new") ("nu" . "null") ("pa" . "package") ("pri" . "private") ("pro" . "protected") ("pu" . "public") ("re" . "return") ("sh" . "short") ("st" . "static") ("su" . "super") ("sw" . "switch") ("sy" . "synchronized") ("th" . "this") ("thr" . "throw") ("throw" . "throws") ("tra" . "transient") ("tr" . "true") ("vo" . "void") ("vol" . "volatile") ("wh" . "while"))))
+ '(jde-imenu-enable t)
+ '(jde-compile-option-verbose nil)
+ '(jde-db-option-heap-size (quote ((1 . "megabytes") (16 . "megabytes"))))
+ '(jde-bug-debugger-host-address "localhost" t)
+ '(jde-make-working-directory "")
+ '(jde-bug-breakpoint-marker-colors (quote ("red" . "yellow")))
+ '(jde-javadoc-gen-use nil)
+ '(jde-gen-buffer-boilerplate nil)
+ '(jde-bug-raise-frame-p t)
+ '(jde-db-option-application-args (quote ("-IN" "/share/xsl/docbook/test/exttest.xml" "-XSL " "/share/xsl/docbook/test/exttest.xsl")) t)
+ '(jde-javadoc-gen-nonavbar nil)
+ '(jde-javadoc-gen-nohelp nil)
+ '(jde-bug-vm-includes-jpda-p nil)
+ '(jde-gen-jfc-app-buffer-template (quote ("(funcall jde-gen-boilerplate-function) '>'n" "\"import java.awt.Dimension;\" '>'n" "\"import java.awt.Graphics;\" '>'n" "\"import java.awt.Graphics2D;\" '>'n" "\"import java.awt.Color;\" '>'n" "\"import java.awt.geom.Ellipse2D;\" '>'n" "\"import java.awt.event.WindowAdapter;\" '>'n" "\"import java.awt.event.WindowEvent;\" '>'n" "\"import javax.swing.JFrame;\" '>'n" "\"import javax.swing.JPanel;\" '>'n" "\"import javax.swing.JScrollPane;\" '>'n" "\"import javax.swing.JMenuBar;\" '>'n" "\"import javax.swing.JMenu;\" '>'n" "\"import java.awt.event.ActionEvent;\" '>'n" "\"import javax.swing.AbstractAction;\" '>'n '>'n" "\"/**\" '>'n" "\" * \"" "(file-name-nondirectory buffer-file-name) '>'n" "\" *\" '>'n" "\" *\" '>'n" "\" * Created: \" (current-time-string) '>'n" "\" *\" '>'n" "\" * @author <a href=\\\"mailto: \\\"\" (user-full-name) \"</a>\"'>'n" "\" * @version\" '>'n" "\" */\" '>'n" "'>'n" "\"public class \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" extends JFrame\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"class Canvas extends JPanel\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public Canvas () \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"setSize(getPreferredSize());\" '>'n" "\"Canvas.this.setBackground(Color.white);\" '>'n" "\"}\"'>'n '>'n" "\"public Dimension getPreferredSize() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"return new Dimension(600, 600);\" '>'n" "\"}\"'>'n '>'n" "\"public void paintComponent(Graphics g) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"super.paintComponent(g);\" '>'n" "\"Graphics2D g2d = (Graphics2D) g;\" '>'n" "\"Ellipse2D circle = new Ellipse2D.Double(0d, 0d, 100d, 100d);\" '>'n" "\"g2d.setColor(Color.red);\" '>'n" "\"g2d.translate(10, 10);\" '>'n" "\"g2d.draw(circle);\" '>'n" "\"g2d.fill(circle);\" '>'n" "\"}\"'>'n " "\"}\"'>'n '>'n" "\"public \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\"()\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"super(\\\"\" (P \"Enter app title: \") \"\\\");\" '>'n" "\"setSize(300, 300);\" '>'n" "\"addWindowListener(new WindowAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public void windowClosing(WindowEvent e) {System.exit(0);}\" '>'n" "\"public void windowOpened(WindowEvent e) {}\" '>'n" "\"});\"'>'n" "\"setJMenuBar(createMenu());\" '>'n" "\"getContentPane().add(new JScrollPane(new Canvas()));\" '>'n" "\"}\"'>'n" "'>'n" "\"public static void main(String[] args) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" f = new \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\"();\" '>'n" "\"f.show();\" '>'n" "\"}\"'>'n '>'n" "\"protected JMenuBar createMenu() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"JMenuBar mb = new JMenuBar();\" '>'n" "\"JMenu menu = new JMenu(\\\"File\\\");\" '>'n" "\"menu.add(new AbstractAction(\\\"Exit\\\") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public void actionPerformed(ActionEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"System.exit(0);\" '>'n" "\"}\" '>'n" "\"});\" '>'n" "\"mb.add(menu);\" '>'n" "\"return mb;\" '>'n" "\"}\"'>'n " "\"} // \"'>" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "'>'n")))
+ '(jde-bug-key-bindings (quote (("[?\ 3 ?\1a ?\13]" . jde-bug-step-over) ("[?\ 3 ?\1a ?\18]" . jde-bug-step-into) ("[?\ 3 ?\1a ?\ 1]" . jde-bug-step-into-all) ("[?\ 3 ?\1a ?\17]" . jde-bug-step-out) ("[?\ 3 ?\1a ?\ 3]" . jde-bug-continue) ("[?\ 3 ?\1a ?\ 2]" . jde-bug-toggle-breakpoint))))
+ '(jde-compile-finish-hook (quote (jde-compile-finish-refresh-speedbar jde-compile-finish-flush-completion-cache)))
+ '(jde-compile-option-nowarn nil)
+ '(jde-setnu-mode-threshold 20000)
+ '(jde-run-java-vm-w "javaw")
+ '(jde-compile-option-encoding nil)
+ '(jde-run-option-java-profile (quote (nil . "./java.prof")))
+ '(jde-bug-jpda-directory "/usr/local/jdk1.2.2" t)
+ '(jde-read-compile-args nil)
+ '(jde-run-java-vm "java")
+ '(jde-db-option-verbose (quote (nil nil nil)))
+ '(jde-which-method-class-min-length 4)
+ '(jde-db-read-app-args nil)
+ '(jde-javadoc-gen-nodeprecated nil)
+ '(jde-run-option-heap-profile (quote (nil "./java.hprof" 5 20 "Allocation objects")))
+ '(jde-gen-println (quote ("(end-of-line) '&" "\"System.out.println(\" (P \"Print out: \") \");\" '>'n'>")))
+ '(jde-enable-abbrev-mode nil)
+ '(jde-auto-parse-max-buffer-size 50000)
+ '(jde-gen-cflow-main (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"main\")" "'(l '> \"public static void main (String[] args) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of main ()\"'>'n'>)" ")")))
+ '(jde-javadoc-exception-tag-template "\"* @exception \" type \" if an error occurs\"")
+ '(jde-global-classpath nil t)
+ '(jde-gen-window-listener-template (quote ("(end-of-line) '& (P \"Window name: \")" "\".addWindowListener(new WindowAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"public void windowActivated(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"" "'>'n \"public void windowClosed(WindowEvent e)\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowClosing(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"System.exit(0);\" '>'n \"}\"" "'>'n \"public void windowDeactivated(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowDeiconified(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowIconified(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"public void windowOpened(WindowEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n \"}\"" "'>'n \"});\" '>'n'>")))
+ '(jde-run-working-directory "/share/doctypes/website-pages/extensions" t)
+ '(jde-gen-property-change-support (quote ("(end-of-line) '&" "\"protected PropertyChangeSupport pcs = new PropertyChangeSupport(this);\" '>'n '>'n" "\"/**\" '>'n" "\"* Adds a PropertyChangeListener to the listener list.\" '>'n" "\"* The listener is registered for all properties.\" '>'n" "\"*\" '>'n" "\"* @param listener The PropertyChangeListener to be added\" '>'n" "\"*/\" '>'n" "\"public void addPropertyChangeListener(PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"pcs.addPropertyChangeListener(listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n" "\"* Removes a PropertyChangeListener from the listener list.\" '>'n" "\"* This removes a PropertyChangeListener that was registered for all properties.\" '>'n" "\"*\" '>'n " "\"* @param listener The PropertyChangeListener to be removed\" '>'n" "\"*/\" '>'n" "\"public void removePropertyChangeListener(PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>\"pcs.removePropertyChangeListener(listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Adds a PropertyChangeListener for a specific property.\" '>'n" "\"* The listener will be invoked only when a call on firePropertyChange\" '>'n" "\"* names that specific property.\" '>'n" "\"*\" '>'n \"* @param propertyName The name of the property to listen on\" '>'n" "\"* @param listener The PropertyChangeListener to be added\" '>'n \"*/\" '>'n" "\"public void addPropertyChangeListener(String propertyName,\" '>'n" "\"PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.addPropertyChangeListener(propertyName, listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Removes a PropertyChangeListener for a specific property.\" '>'n" "\"*\" '>'n \"* @param propertyName The name of the property that was listened on\" '>'n" "\"* @param listener The PropertyChangeListener to be removed\" '>'n \"*/\" '>'n" "\"public void removePropertyChangeListener(String propertyName,\" '>'n" "\"PropertyChangeListener listener) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.removePropertyChangeListener(propertyName, listener);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Reports a bound property update to any registered listeners. \" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"*\" '>'n \"* @param propertyName The programmatic name of the property that was changed\" '>'n" "\"* @param oldValue The old value of the property\" '>'n" "\"* @param newValue The new value of the property.\" '>'n \"*/\" '>'n" "\"public void firePropertyChange(String propertyName, Object oldValue, Object newValue) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(propertyName, oldValue, newValue);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Reports a bound property update to any registered listeners. \" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"* This is merely a convenience wrapper around the more general\" '>'n" "\"* firePropertyChange method that takes Object values.\" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"*\" '>'n \"* @param propertyName The programmatic name of the property that was changed\" '>'n" "\"* @param oldValue The old value of the property\" '>'n" "\"* @param newValue The new value of the property.\" '>'n \"*/\" '>'n" "\"public void firePropertyChange(String propertyName, int oldValue, int newValue) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(propertyName, oldValue, newValue);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Reports a bound property update to any registered listeners. \" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"* This is merely a convenience wrapper around the more general\" '>'n" "\"* firePropertyChange method that takes Object values.\" '>'n" "\"* No event is fired if old and new are equal and non-null.\" '>'n" "\"*\" '>'n \"* @param propertyName The programmatic name of the property that was changed\" '>'n" "\"* @param oldValue The old value of the property\" '>'n" "\"* @param newValue The new value of the property.\" '>'n \"*/\" '>'n" "\"public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(propertyName, oldValue, newValue);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Fires an existing PropertyChangeEvent to any registered listeners.\" '>'n" "\"* No event is fired if the given event's old and new values are equal and non-null. \" '>'n" "\"*\" '>'n \"* @param evt The PropertyChangeEvent object.\" '>'n\"*/\" '>'n" "\"public void firePropertyChange(PropertyChangeEvent evt) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"pcs.firePropertyChange(evt);\" '>'n \"}\" '>'n '>'n" "\"/**\" '>'n\"* Checks if there are any listeners for a specific property.\" '>'n" "\"*\" '>'n \"* @param evt The PropertyChangeEvent object.\" '>'n" "\"* @return <code>true</code>if there are one or more listeners for the given property\" '>'n" "\"*/\" '>'n" "\"public boolean hasListeners(String propertyName) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'> \"return pcs.hasListeners(propertyName);\" '>'n \"}\" '>'n '>'n'>")))
+ '(jde-javadoc-describe-interface-template "\"* Describe interface \" (jde-javadoc-code name) \" here.\"")
+ '(jde-imenu-include-signature t)
+ '(jde-db-marker-regexp "^.*: thread=.*, \\(\\(.*[.]\\)*\\)\\([^$]*\\)\\($.*\\)*[.].+(), line=\\([0-9]*\\),")
+ '(jde-gen-mouse-motion-listener-template (quote ("(end-of-line) '& (P \"Component name: \")" "\".addMouseMotionListener(new MouseMotionAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>" "'>'n \"public void mouseDragged(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"public void mouseMoved(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"});\"'>'n'>")))
+ '(jde-key-bindings (quote (("[?\ 3 ?\16 ?\ 1]" . jde-run-menu-run-applet) ("[?\ 3 ?\16 ?\ 2]" . jde-build) ("[?\ 3 ?\16 ?\ 3]" . jde-compile) ("[?\ 3 ?\16 ?\ 4]" . jde-debug) ("[?\ 3 ?\16 ?\ 6]" . jde-wiz-implement-interface) ("[?\ 3 ?\16 ?j]" . jde-javadoc-generate-javadoc-template) ("[?\ 3 ?\16 ?\v]" . bsh) ("[?\ 3 ?\16 ?\f]" . jde-gen-println) ("[?\ 3 ?\16 ?\ e]" . jde-browse-jdk-doc) ("[?\ 3 ?\16 ?\10]" . jde-save-project) ("[?\ 3 ?\16 ?\11]" . jde-wiz-update-class-list) ("[?\ 3 ?\16 ?\12]" . jde-run) ("[?\ 3 ?\16 ?\13]" . speedbar-frame-mode) ("[?\ 3 ?\16 ?\14]" . jde-db-menu-debug-applet) ("[?\ 3 ?\16 ?\17]" . jde-help-symbol) ("[?\ 3 ?\16 ?\19]" . jde-show-class-source) ("[?\ 3 ?\16 ?\1a]" . jde-import-find-and-import) ("[(control c) (control v) (control ?.)]" . jde-complete-at-point-menu) ("[(control c) (control v) ?.]" . jde-complete-at-point))))
+ '(jde-gen-cflow-for-i (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"fori\")" "'(l '> \"for (int \" (p \"variable: \" var) \" = 0; \"" "(s var)" "\" < \"(p \"upper bound: \" ub)\"; \" (s var) \"++) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of for (int \" (s var) \" = 0; \"" "(s var) \" < \" (s ub) \"; \" (s var) \"++)\"'>'n'>)" ")")))
+ '(jde-run-option-classpath (quote ("/share/doctypes/website-pages/extensions/xalan2/.classes" "/projects/apache/xml-xalan/java/build/classes" "/projects/apache/xml-xalan/java/bin/bsf.jar" "/projects/apache/xml-xalan/java/bin/xerces.jar" "/projects/sun/resolver/.classes" "/projects/apache/xml-xerces/java/build/classes" "/home/ndw/java")) t)
+ '(jde-javadoc-gen-detail-switch (quote ("-protected")))
+ '(jde-bug-sio-connect-delay 1)
+ '(jde-javadoc-param-tag-template "\"* @param \" name \" \" (jde-javadoc-a type)
+ \" \" (jde-javadoc-code type) \" value\"")
+ '(jde-compile-option-verbose-path nil)
+ '(jde-javadoc-display-doc t)
+ '(jde-imenu-modifier-abbrev-alist (quote (("public" . 43) ("protected" . 177) ("private" . 172) ("static" . 2215) ("transient" . 35) ("volatile" . 126) ("abstract" . 170) ("final" . 182) ("native" . 36) ("synchronized" . 64) ("strictfp" . 37))))
+ '(jde-db-debugger (quote ("JDEbug" "/usr/local/jdk1.2.2/lib/i386" . "Executable")) t)
+ '(jde-jdk-doc-url "http://www.javasoft.com/products/jdk/1.1/docs/index.html")
+ '(jde-gen-cflow-enable t)
+ '(jde-compiler "javac")
+ '(jde-javadoc-gen-verbose nil)
+ '(jde-javadoc-describe-method-template "\"* Describe \" (jde-javadoc-code name) \" method here.\"")
+ '(jde-gen-class-buffer-template (quote ("(funcall jde-gen-boilerplate-function) '>'n" "\"/**\" '>'n" "\" * \"" "(file-name-nondirectory buffer-file-name) '>'n" "\" *\" '>'n" "\" *\" '>'n" "\" * Created: \" (current-time-string) '>'n" "\" *\" '>'n" "\" * @author <a href=\\\"mailto: \\\"\" (user-full-name) \"</a>\"'>'n" "\" * @version\" '>'n" "\" */\" '>'n'" "'>'n" "\"public class \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" \" (jde-gen-get-super-class)" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" ()\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'p'n" "\"}\">" "'>'n" "\"}\">" "\"// \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "'>'n")))
+ '(jde-javadoc-checker-level (quote protected))
+ '(jde-appletviewer-option-vm-args nil)
+ '(jde-run-executable-args nil)
+ '(jde-db-option-garbage-collection (quote (t t)))
+ '(jde-javadoc-gen-stylesheetfile "")
+ '(jde-use-font-lock t)
+ '(jde-compile-option-bootclasspath nil)
+ '(jde-make-program "make")
+ '(jde-javadoc-gen-group nil)
+ '(jde-javadoc-gen-link-offline nil)
+ '(jde-entering-java-buffer-hook (quote (jde-reload-project-file jde-which-method-update-on-entering-buffer)))
+ '(jde-javadoc-gen-doc-title "")
+ '(jde-javadoc-gen-header "")
+ '(jde-run-option-vm-args nil)
+ '(jde-javadoc-gen-window-title "")
+ '(jde-compile-option-directory "/share/doctypes/website-pages/extensions/xalan2/.classes" t)
+ '(jde-imenu-create-index-function (quote semantic-create-imenu-index))
+ '(jde-gen-console-buffer-template (quote ("(funcall jde-gen-boilerplate-function) '>'n" "\"/**\" '>'n" "\" * \"" "(file-name-nondirectory buffer-file-name) '>'n" "\" *\" '>'n" "\" *\" '>'n" "\" * Created: \" (current-time-string) '>'n" "\" *\" '>'n" "\" * @author <a href=\\\"mailto: \\\"\" (user-full-name) \"</a>\"'>'n" "\" * @version\" '>'n" "\" */\" '>'n" "'>'n" "\"public class \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public \"" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "\" ()\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'n" "\"}\"'>'n" "'>'n" "\"public static void main(String[] args)\"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "'>'p'n" "\"}\"'>'n" "\"} // \"'>" "(file-name-sans-extension (file-name-nondirectory buffer-file-name))" "'>'n")))
+ '(jde-read-make-args nil)
+ '(jde-javadoc-gen-noindex nil)
+ '(jde-gen-mouse-listener-template (quote ("(end-of-line) '& (P \"Component name: \")" "\".addMouseListener(new MouseAdapter() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'> " "'>'n \"public void mouseClicked(MouseEvent e) \" " "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\" '>" "'>'n \"public void mouseEntered(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\" '>" "'>'n \"public void mouseExited(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"public void mousePressed(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\" '>" "'>'n \"public void mouseReleased(MouseEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>" "'>'n \"});\"'>'n'>")))
+ '(jde-run-option-application-args (quote ("-IN" "test.xml" "-XSL" "test.xsl")) t)
+ '(jde-bug-vm-executable (quote ("java")))
+ '(jde-db-set-initial-breakpoint t)
+ '(jde-bug-debugger-command-timeout 10)
+ '(jde-db-option-stack-size (quote ((128 . "kilobytes") (400 . "kilobytes"))))
+ '(jde-db-option-properties nil t)
+ '(jde-db-source-directories (quote ("/share/doctypes/website-pages/extensions/xalan2/" "/projects/apache/xml-xalan/java/src/" "/projects/apache/xml-xerces/java/build/src/" "/projects/sun/resolver/" "/home/ndw/java/")) t)
+ '(jde-run-read-app-args nil)
+ '(jde-gen-to-string-method-template (quote ("(end-of-line) '&" "\"public String toString() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n'>")))
+ '(jde-quote-classpath t)
+ '(jde-bug-window-message nil)
+ '(jde-build-use-make nil)
+ '(jde-javadoc-author-tag-template "\"* @author <a href=\\\"mailto:\" user-mail-address
+ \"\\\">\" user-full-name \"</a>\"")
+ '(jde-javadoc-describe-field-template "\"* Describe \" (jde-javadoc-field-type modifiers)
+ \" \" (jde-javadoc-code name) \" here.\"")
+ '(jde-javadoc-gen-link-URL nil)
+ '(jde-compile-option-classpath (quote ("/projects/apache/xml-xerces/java/build/classes" "/projects/apache/xml-xalan/java/build/classes")) t)
+ '(jde-bug-jdk-directory "/usr/local/jdk1.2.2" t)
+ '(jde-gen-boilerplate-function (quote jde-gen-create-buffer-boilerplate))
+ '(jde-gen-entity-bean-template (quote ("(jde-import-insert-imports-into-buffer (list \"javax.ejb.*\"
+\"java.rmi.RemoteException\"))" "'> \"public void ejbActivate() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbPassivate() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbLoad() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbStore() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void ejbRemove() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void setEntityContext(EntityContext ctx) throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n" "'> \"public void unsetEntityContext() throws RemoteException \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n '>'n'>")))
+ '(jde-javadoc-describe-constructor-template "\"* Creates a new \" (jde-javadoc-code name) \" instance.\"")
+ '(jde-bug-server-shmem-name (quote (t . "JDEbug")))
+ '(jde-db-startup-commands nil)
+ '(jde-javadoc-gen-docletpath nil)
+ '(jde-javadoc-gen-split-index nil)
+ '(jde-compile-option-deprecation nil t)
+ '(jde-import-group-of-rules (quote (("^javax?\\."))))
+ '(jde-which-method-mode t)
+ '(jde-gen-k&r t)
+ '(jde-javadoc-gen-bottom "")
+ '(jde-javadoc-gen-footer "")
+ '(jde-db-option-classpath (quote ("/share/doctypes/website-pages/extensions/xalan2/.classes" "/projects/apache/xml-xalan/java/build/classes" "/projects/apache/xml-xalan/java/bin/bsf.jar" "/projects/apache/xml-xalan/java/bin/xerces.jar" "/projects/sun/resolver/.classes" "/projects/apache/xml-xerces/java/build/classes" "/home/ndw/java")) t)
+ '(jde-gen-cflow-for (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"for\")" "'(l '> \"for (\" (p \"for-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of for (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-run-mode-hook nil)
+ '(jde-db-option-verify (quote (nil t)))
+ '(jde-compile-option-extdirs nil)
+ '(jde-imenu-sort nil)
+ '(jde-gen-get-set-var-template (quote ("(end-of-line) '&" "(P \"Variable type: \" type) \" \"" "(P \"Variable name: \" name) \";\" '>'n '>'n" "\"/**\" '>'n" "\"* Get the value of \" (s name) \".\" '>'n" "\"* @return value of \" (s name) \".\" '>'n" "\"*/\" '>'n" "'>'\"public \" (s type)" "(if (string= \"boolean\" (jde-gen-lookup-named 'type) ) " "\" is\" " "\" get\" ) " "(jde-gen-init-cap (jde-gen-lookup-named 'name))" "\"() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\" '>'n" "\"return \" (s name) \";\" '>'n \"}\"" "'>'n '>'n" "\"/**\" '>'n" "\"* Set the value of \" (s name) \".\" '>'n" "\"* @param v Value to assign to \" (s name) \".\" '>'n" "\"*/\" '>'n" "'>'\"public void set\" (jde-gen-init-cap (jde-gen-lookup-named 'name))" "\"(\" (s type) \" v) \" " "(if jde-gen-k&r " "()" "'>'n)" "\"{\" '>'n" "'>'\"this.\" (s name) \" = v;\" '>'n \"}\" '>'n'>")))
+ '(jde-bug-saved-breakpoints nil)
+ '(jde-compile-option-sourcepath (quote ("/share/doctypes/website-pages/extensions/xalan2")) t)
+ '(jde-gen-cflow-if (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"if\")" "'(l '> \"if (\" (p \"if-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of if (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-db-option-java-profile (quote (nil . "./java.prof")))
+ '(jde-javadoc-gen-author t)
+ '(jde-compile-option-depend-switch (quote ("-Xdepend")))
+ '(jde-setnu-mode-enable nil)
+ '(jde-run-applet-doc "")
+ '(jde-compile-option-vm-args nil)
+ '(jde-javadoc-gen-overview "")
+ '(jde-javadoc-gen-notree nil)
+ '(jde-run-option-garbage-collection (quote (t t)))
+ '(jde-db-mode-hook nil)
+ '(jde-javadoc-command-path "javadoc")
+ '(jde-db-option-heap-profile (quote (nil "./java.hprof" 5 20 "Allocation objects")))
+ '(jde-import-group-function (quote jde-import-group-of))
+ '(jde-db-read-vm-args nil)
+ '(jde-bug-debug nil)
+ '(jde-javadoc-end-block-template nil)
+ '(jde-javadoc-gen-packages nil)
+ '(jde-gen-cflow-if-else (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"ife\")" "'(l '> \"if (\" (p \"if-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of if (\" (s clause) \")\"'> n" "'> \"else \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of if (\" (s clause) \")else\"'>'n'>)" ")")))
+ '(jde-gen-cflow-while (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"while\")" "'(l '> \"while (\" (p \"while-clause: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'>'r'n" "\"} // end of while (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-bug-server-socket (quote (t . "2112")))
+ '(jde-imenu-include-modifiers nil)
+ '(jde-appletviewer-option-encoding "")
+ '(jde-bug-breakpoint-cursor-colors (quote ("cyan" . "brown")))
+ '(jde-compile-option-target (quote ("1.1")))
+ '(jde-run-executable "")
+ '(jde-run-option-heap-size (quote ((1 . "megabytes") (16 . "megabytes"))))
+ '(jde-gen-cflow-switch (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"switch\")" "'(l '> \"switch (\" (p \"switch-condition: \" clause) \") \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n'" "\"case \" (p \"first value: \") \":\"'>'n'>'p'n" "\"break;\"'>'n'>'p'n" "\"default:\"'>'n'>'p'n" "\"break;\"'>'n" "\"} // end of switch (\" (s clause) \")\"'>'n'>)" ")")))
+ '(jde-which-method-abbrev-symbol "~")
+ '(jde-db-option-vm-args nil)
+ '(jde-run-application-class "org.apache.xalan.xslt.Process" t)
+ '(jde-javadoc-gen-doclet "")
+ '(jde-import-auto-sort nil)
+ '(jde-run-option-verbose (quote (nil nil nil)))
+ '(jde-project-file-name "prj.el")
+ '(jde-compile-option-debug (quote ("selected" (t nil nil))) t)
+ '(jde-bug-jre-home "")
+ '(jde-import-sorted-groups nil)
+ '(jde-run-applet-viewer "")
+ '(jde-javadoc-return-tag-template "\"* @return \" (jde-javadoc-a type)
+ \" \" (jde-javadoc-code type) \" value\"")
+ '(jde-javadoc-gen-version t)
+ '(jde-javadoc-gen-helpfile "")
+ '(jde-import-excluded-packages (quote ("bsh.*")))
+ '(jde-run-read-vm-args nil)
+ '(jde-help-docsets nil)
+ '(jde-gen-inner-class-template (quote ("(end-of-line) '& \"class \" (P \"Class name: \" class)" "(P \"Superclass: \" super t)" "(let ((parent (jde-gen-lookup-named 'super)))" "(if (not (string= parent \"\"))" "(concat \" extends \" parent ))) " "(if jde-gen-k&r " "()" "'>'n)" "\"{\" '>'n" "\"public \" (s class) \"() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n" "\"}\" '>'n'>")))
+ '(jde-auto-parse-buffer-interval 180)
+ '(jde-run-option-verify (quote (nil t)))
+ '(jde-import-reverse-sort-group nil)
+ '(jde-compile-option-optimize nil)
+ '(jde-gen-cflow-case (quote ("(if (jde-parse-comment-or-quoted-p)" "'(l \"case\")" "'(l 'n \"case \" (p \"value: \") \":\"'>'n'>'p'n" "\"break;\"'>'n'>'p)" ")")))
+ '(jde-compile-option-depend nil)
+ '(jde-javadoc-describe-class-template "\"* Describe class \" (jde-javadoc-code name) \" here.\"")
+ '(jde-javadoc-gen-serialwarn nil)
+ '(jde-gen-action-listener-template (quote ("'& (P \"Component name: \")" "\".addActionListener(new ActionListener() \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"public void actionPerformed(ActionEvent e) \"" "(if jde-gen-k&r " "()" "'>'n)" "\"{\"'>'n" "\"}\"'>'n \"});\"'>'n'>")))
+ '(jde-auto-parse-enable t)
+ '(jde-compile-option-command-line-args "")
+ '(jde-gen-buffer-templates (quote (("Class" . jde-gen-class) ("Console" . jde-gen-console) ("Swing App" . jde-gen-jfc-app))))
+ '(jde-project-context-switching-enabled-p t)
+ '(jde-javadoc-gen-args nil)
+ '(jde-run-option-stack-size (quote ((128 . "kilobytes") (400 . "kilobytes"))))
+ '(jde-run-option-properties nil t))
+
+
<!-- ====================================================================== -->
-<!-- Website DTD Forms Module V1.7
- Part of the Website DTD
- http://nwalsh.com/website/
-
- See COPYRIGHT for more information
+<!-- Website DTD Forms Module V2.0b1
+ Part of the Website distribution
+ http://sourceforge.net/projects/docbook/
Please direct all questions and comments about this DTD to
Norman Walsh, <ndw@nwalsh.com>.
onkeyup CDATA #IMPLIED"
>
-<!ELEMENT html:form ((%component.mix;)|html:input|html:button
- |html:label|html:select|html:textarea)+>
+<!ELEMENT %html-form.element; ((%component.mix;)|%html-input.element;|%html-button.element;
+ |%html-label.element;|%html-select.element;|%html-textarea.element;)+>
-<!ATTLIST html:form
+<!ATTLIST %html-form.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
action CDATA #REQUIRED
<!ENTITY % inputtype "(text | password | checkbox | radio
| submit | reset | file | hidden | image | button)">
-<!ELEMENT html:input EMPTY>
-<!ATTLIST html:input
+<!ELEMENT %html-input.element; EMPTY>
+<!ATTLIST %html-input.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
type %inputtype; "text"
onchange CDATA #IMPLIED
>
-<!ELEMENT html:button (%para.char.mix;)*>
-<!ATTLIST html:button
+<!ELEMENT %html-button.element; (%para.char.mix;)*>
+<!ATTLIST %html-button.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
name CDATA #IMPLIED
onblur CDATA #IMPLIED
>
-<!ELEMENT html:label (%para.char.mix;)*>
-<!ATTLIST html:label
+<!ELEMENT %html-label.element; (%para.char.mix;)*>
+<!ATTLIST %html-label.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
for IDREF #IMPLIED
onblur CDATA #IMPLIED
>
-<!ELEMENT html:select (html:option)+>
-<!ATTLIST html:select
+<!ELEMENT %html-select.element; (%html-option.element;)+>
+<!ATTLIST %html-select.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
name CDATA #IMPLIED
onchange CDATA #IMPLIED
>
-<!ELEMENT html:option (#PCDATA)>
-<!ATTLIST html:option
+<!ELEMENT %html-option.element; (#PCDATA)>
+<!ATTLIST %html-option.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
selected (selected) #IMPLIED
value CDATA #IMPLIED
>
-<!ELEMENT html:textarea (#PCDATA)>
-<!ATTLIST html:textarea
+<!ELEMENT %html-textarea.element; (#PCDATA)>
+<!ATTLIST %html-textarea.element;
+ %html-xmlns; CDATA #FIXED %html-namespace;
%common.attrib;
%events;
name CDATA #IMPLIED
onchange CDATA #IMPLIED
>
-<!-- End of forms.mod V1.7 ................................................ -->
+<!-- End of forms.mod V2.0b1 .............................................. -->
<!-- ...................................................................... -->
--- /dev/null
+<!-- ====================================================================== -->
+<!-- Website Layout DTD V2.0b1
+ Part of the Website distribution
+ http://sourceforge.net/projects/docbook/
+
+ Please direct all questions and comments about this DTD to
+ Norman Walsh, <ndw@nwalsh.com>.
+ -->
+<!-- ====================================================================== -->
+
+<!ELEMENT layout ((config|style|script|copyright)*, toc+, notoc*)>
+
+<!ELEMENT config EMPTY>
+<!ATTLIST config
+ param CDATA #REQUIRED
+ value CDATA #REQUIRED
+ altval CDATA #IMPLIED
+>
+
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ src CDATA #IMPLIED
+ type CDATA #IMPLIED
+>
+
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ src CDATA #IMPLIED
+ language CDATA #IMPLIED
+>
+
+<!ELEMENT copyright (year+, holder+)>
+
+<!ELEMENT year (#PCDATA)*>
+
+<!ELEMENT holder (#PCDATA|ulink)*>
+<!ATTLIST holder
+ role CDATA #IMPLIED
+>
+
+<!ELEMENT ulink (#PCDATA)*>
+<!ATTLIST ulink
+ url CDATA #REQUIRED
+>
+
+<!ELEMENT toc (tocentry*)>
+<!ATTLIST toc
+ page CDATA #REQUIRED
+ dir CDATA #IMPLIED
+ filename CDATA #IMPLIED
+>
+
+<!ELEMENT tocentry ((title|titleabbrev|summary)*, tocentry*)>
+<!ATTLIST tocentry
+ id ID #IMPLIED
+ page CDATA #IMPLIED
+ href CDATA #IMPLIED
+ dir CDATA #IMPLIED
+ filename CDATA #IMPLIED
+ tocskip (0|1) "0"
+>
+
+<!ELEMENT notoc EMPTY>
+<!ATTLIST notoc
+ page CDATA #REQUIRED
+ dir CDATA #IMPLIED
+ filename CDATA #IMPLIED
+>
+
+<!ELEMENT title ANY>
+
+<!ELEMENT titleabbrev ANY>
+
+<!ELEMENT summary (#PCDATA)*>
+
+<!-- End of layout.dtd V2.0b1 ............................................. -->
+<!-- ...................................................................... -->
--- /dev/null
+<!-- ====================================================================== -->
+<!-- Website DTD Namespaces Module V2.0b1
+ Part of the Website distribution
+ http://sourceforge.net/projects/docbook/
+
+ Please direct all questions and comments about this DTD to
+ Norman Walsh, <ndw@nwalsh.com>.
+ -->
+<!-- ====================================================================== -->
+
+<!-- HTML -->
+
+<!ENTITY % html-prefix "html:">
+<!ENTITY % html-suffix ":html">
+
+<!ENTITY % html-namespace "'http://www.w3.org/1999/xhtml'">
+<!ENTITY % html-xmlns "xmlns%html-suffix;">
+
+<!ENTITY % html-input.element "%html-prefix;input">
+<!ENTITY % html-button.element "%html-prefix;button">
+<!ENTITY % html-label.element "%html-prefix;label">
+<!ENTITY % html-select.element "%html-prefix;select">
+<!ENTITY % html-textarea.element "%html-prefix;textarea">
+<!ENTITY % html-form.element "%html-prefix;form">
+<!ENTITY % html-option.element "%html-prefix;option">
+
+<!-- XLink -->
+
+<!ENTITY % xlink-prefix "xlink:">
+<!ENTITY % xlink-suffix ":xlink">
+
+<!ENTITY % xlink-namespace "'http://www.w3.org/1999/xlink'">
+<!ENTITY % xlink-xmlns "xmlns%xlink-suffix;">
+
+<!ENTITY % xlink-type "%xlink-prefix;type">
+<!ENTITY % xlink-arcrole "%xlink-prefix;arcrole">
+<!ENTITY % xlink-role "%xlink-prefix;role">
+<!ENTITY % xlink-href "%xlink-prefix;href">
+<!ENTITY % xlink-title "%xlink-prefix;title">
+<!ENTITY % xlink-embed "%xlink-prefix;embed">
+<!ENTITY % xlink-actuate "%xlink-prefix;actuate">
+
+<!-- RDDL -->
+
+<!ENTITY % rddl-prefix "rddl:">
+<!ENTITY % rddl-suffix ":rddl">
+
+<!ENTITY % rddl-namespace "'http://www.rddl.org/'">
+<!ENTITY % rddl-xmlns "xmlns%rddl-suffix;">
+
+<!ENTITY % rddl-resource.element "%rddl-prefix;resource">
+
+<!-- End of namespaces.mod V2.0b1 ......................................... -->
+<!-- ...................................................................... -->
--- /dev/null
+<!-- ====================================================================== -->
+<!-- Website DTD RDDL Module V2.0b1
+ Part of the Website distribution
+ http://sourceforge.net/projects/docbook/
+
+ Please direct all questions and comments about this DTD to
+ Norman Walsh, <ndw@nwalsh.com>.
+ -->
+<!-- ====================================================================== -->
+
+<!ENTITY % rddl-prefix "rddl:">
+<!ENTITY % rddl-suffix ":rddl">
+
+<!ENTITY % rddl-namespace "'http://www.rddl.org/'">
+<!ENTITY % rddl-xmlns "xmlns%rddl-suffix;">
+
+<!ENTITY % rddl-resource "%rddl-prefix;resource">
+
+<!ELEMENT %rddl-resource; (%para.char.mix;)*>
+
+<!ATTLIST %rddl-resource;
+ id ID #IMPLIED
+ xml:lang NMTOKEN #IMPLIED
+ xml:base CDATA #IMPLIED
+ %rddl-xmlns; CDATA #FIXED %rddl-namespace;
+ %xlink-xmlns; CDATA #FIXED %xlink-namespace;
+ %xlink-type; (simple) #FIXED "simple"
+ %xlink-arcrole; CDATA #IMPLIED
+ %xlink-role; CDATA "http://www.rddl.org/#resource"
+ %xlink-href; CDATA #IMPLIED
+ %xlink-title; CDATA #IMPLIED
+>
+<!--
+ %xlink-embed; CDATA #FIXED "none"
+ %xlink-actuate; CDATA #FIXED "none"
+>
+-->
+
+<!-- End of rddl.mod V2.0b1 ............................................... -->
+<!-- ...................................................................... -->
--- /dev/null
+<!-- ====================================================================== -->
+<!-- Website DTD V2.0b1
+ Copyright (C) 1997-2001 Norman Walsh
+ http://sourceforge.net/projects/docbook/
+
+ $Id$
+
+ Please direct all questions and comments about this DTD to
+ Norman Walsh, <ndw@nwalsh.com>.
+
+ Common declaration:
+
+ <?xml version="1.0"?>
+ <!DOCTYPE website
+ PUBLIC "-//Norman Walsh//DTD Website V2.0b1//EN"
+ "http://docbook.sourceforge.net/release/website/2.0b1/website.dtd">
+ -->
+<!-- ====================================================================== -->
+
+<!-- allow some things that would be excluded by simple -->
+<!ENTITY % sgmltag.module "INCLUDE">
+<!ENTITY % local.tech.char.class "|sgmltag">
+
+<!ENTITY % olink.module "INCLUDE">
+<!ENTITY % local.link.char.class "|olink">
+
+<!ENTITY % simplelist.content.module "INCLUDE">
+<!ENTITY % local.list.class "|simplelist">
+
+<!ENTITY % qandset.content.module "INCLUDE">
+<!ENTITY % qandset.module "INCLUDE">
+<!ENTITY % qandadiv.module "INCLUDE">
+<!ENTITY % qandaentry.module "INCLUDE">
+<!ENTITY % question.module "INCLUDE">
+<!ENTITY % answer.module "INCLUDE">
+<!ENTITY % label.module "INCLUDE">
+<!ENTITY % local.compound.class "|qandaset">
+
+<!-- allow webtoc to occur anywhere a para can occur -->
+<!ENTITY % local.para.class "|webtoc">
+
+<!ENTITY % namespaces.mod SYSTEM "namespaces.mod">
+%namespaces.mod;
+
+<!-- RDDL? -->
+<!ENTITY % allowrddl "INCLUDE">
+<![%allowrddl;[
+<!ENTITY % rddl.elements "|%rddl-resource.element;">
+<!ENTITY % local.section.attrib
+ "rddl IDREF #IMPLIED"
+>
+]]>
+<!ENTITY % rddl.elements "">
+
+<!-- Forms? -->
+<!ENTITY % allowforms "INCLUDE">
+<![%allowforms;[
+<!ENTITY % local.para.char.mix "|%html-input.element;|%html-button.element;|%html-label.element;|%html-select.element;|%html-textarea.element; %rddl.elements;">
+<!ENTITY % local.divcomponent.mix "|%html-form.element;">
+]]>
+<!ENTITY % local.para.char.mix "%rddl.elements;">
+
+<!-- the XML notation; this really should go in DocBook -->
+<!NOTATION XML SYSTEM "http://www.w3.org/TR/REC-xml">
+<!ENTITY % local.notation.class "">
+<!ENTITY % notation.class
+ "BMP| CGM-CHAR | CGM-BINARY | CGM-CLEAR | DITROFF | DVI
+ | EPS | EQN | FAX | GIF | GIF87a | GIF89a
+ | JPG | JPEG | IGES | PCX
+ | PIC | PNG | PS | SGML | XML | TBL | TEX | TIFF | WMF | WPG
+ | linespecific
+ %local.notation.class;">
+
+<!-- Now that individual XML pages are possible; it makes sense to use the -->
+<!-- simple subset for maximum utility in sending these pages across the -->
+<!-- web directly. -->
+<!ENTITY % sdocbook
+ PUBLIC "-//Norman Walsh//DTD Simplified DocBook Custom XML V4.1.2.4//EN"
+ "../docbook/simple/sdocbook-custom.dtd">
+<!--
+<!ENTITY % docbook
+ PUBLIC "-//Norman Walsh//DTD Simplified DocBook XML V4.1.2.4//EN"
+ "http://nwalsh.com/docbook/simple/4.1.2.4/sdocbook.dtd">
+-->
+%sdocbook;
+
+<!-- define webpage elements -->
+
+<!ENTITY % webpage.mix "(config*, head, (%bookcomponent.content;),
+ appendix*, bibliography*)">
+
+<!ELEMENT head (title, titleabbrev?, subtitle?, summary?, base?, keywords?,
+ (copyright | author | edition
+ | meta | script | style | abstract | revhistory
+ %rddl.elements;)*)>
+
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+>
+
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ src CDATA #IMPLIED
+ language CDATA #IMPLIED
+>
+
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ src CDATA #IMPLIED
+ type CDATA #IMPLIED
+>
+
+<!ELEMENT config EMPTY>
+<!ATTLIST config
+ param CDATA #REQUIRED
+ value CDATA #REQUIRED
+ altval CDATA #IMPLIED
+>
+
+<!ELEMENT summary (%word.char.mix;)*>
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ href CDATA #REQUIRED
+ target CDATA #IMPLIED
+>
+
+<!ELEMENT keywords (#PCDATA)>
+
+
+<!ELEMENT webpage (%webpage.mix;)>
+<!ATTLIST webpage
+ %html-xmlns; CDATA #FIXED %html-namespace;
+ %xlink-xmlns; CDATA #FIXED %xlink-namespace;
+ %rddl-xmlns; CDATA #FIXED %rddl-namespace;
+ navto (yes|no) "yes"
+ role CDATA #IMPLIED
+ id ID #REQUIRED
+>
+
+<!ELEMENT webtoc EMPTY>
+
+<![%allowrddl;[
+<!ENTITY % rddl.mod SYSTEM "rddl.mod">
+%rddl.mod;
+]]>
+
+<![%allowforms;[
+<!ENTITY % forms.mod SYSTEM "forms.mod">
+%forms.mod;
+]]>
+
+<!-- End of Website DTD V2.0b1 ............................................ -->
+<!-- ...................................................................... -->
+++ /dev/null
-<!-- ...................................................................... -->
-<!-- Website DTD V1.7 ..................................................... -->
-
-<!-- Copyright 1997, 1998 Norman Walsh
-
- $Id$
-
- This DTD defines a document that represents a website.
-
- A typical invocation is:
-
- <!DOCTYPE website PUBLIC "-//Norman Walsh//DTD Website V1.7//EN"
- "http://nwalsh.com/website/xml/1.7beta2/website.dtd">
-
--->
-
-<!-- allow xlinks to occur anywhere a para can occur -->
-<!ENTITY % local.para.class "|xlink|webtoc">
-
-<!-- Forms? -->
-<!ENTITY % allowforms "INCLUDE">
-<![%allowforms;[
-<!ENTITY % local.para.char.mix "|html:input|html:button|html:label|html:select|html:textarea">
-<!ENTITY % local.divcomponent.mix "|html:form">
-]]>
-
-<!ENTITY % docbook PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "http://docbook.org/xml/4.1.2/docbookx.dtd">
-%docbook;
-
-<!ELEMENT xlink (%para.char.mix;)*>
-<!ATTLIST xlink
- xml:link CDATA #FIXED "simple"
- href CDATA #REQUIRED
- role CDATA #IMPLIED
- title CDATA #IMPLIED
- content-role CDATA #IMPLIED
- show (embed | replace | new) "replace"
- actuate (user | auto) "user"
->
-
-<!ENTITY % webpage.mix "(config*, head, (%bookcomponent.content;),
- appendix*, bibliography*, glossary*)">
-
-<!ELEMENT head (title, titleabbrev?, subtitle?, summary?, keywords?,
- (copyright | author | edition
- | meta | script | style | abstract | revhistory)*)>
-
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
- name CDATA #REQUIRED
- content CDATA #REQUIRED
->
-
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
- class (local|global) "local"
- src CDATA #IMPLIED
- language CDATA #IMPLIED
->
-
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
- class (local|global) "local"
- src CDATA #IMPLIED
- type CDATA #IMPLIED
->
-
-<!ELEMENT config EMPTY>
-<!ATTLIST config
- class (html|print) "html"
- param CDATA #REQUIRED
- value CDATA #REQUIRED
- altval CDATA #IMPLIED
->
-
-<!ELEMENT summary (%word.char.mix;)*>
-<!ELEMENT keywords (#PCDATA)>
-
-<!ELEMENT website (homepage, webpage*)>
-<!ATTLIST website
- xmlns:html CDATA #FIXED "http://www.w3.org/1999/xhtml"
->
-
-<!ELEMENT homepage ((%webpage.mix;),webpage*)>
-<!ATTLIST homepage
- role CDATA #IMPLIED
- id ID #IMPLIED
->
-
-<!ELEMENT webpage ((%webpage.mix;),webpage*)>
-<!ATTLIST webpage
- navto (yes|no) "yes"
- role CDATA #IMPLIED
- id ID #IMPLIED
->
-
-<!ELEMENT webtoc EMPTY>
-
-<![%allowforms;[
-<!ENTITY % forms.mod SYSTEM "forms.mod">
-%forms.mod;
-]]>
-
-<!-- End of Website DTD V1.7 .............................................. -->
-<!-- ...................................................................... -->
<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version='1.0'>
-<xsl:variable name="WSVERSION">1.7</xsl:variable>
-</xsl:stylesheet>
+<!DOCTYPE stylesheet [
+<!ENTITY VERSION SYSTEM "../VERSION">
+]>
+<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+<param name="VERSION">&VERSION;</param>
+</stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="xml" indent="no"
+ doctype-public="-//Norman Walsh//DTD Website Auto Layout V1.0//EN"
+ doctype-system="http://docbook.sourceforge.net/release/website/current/autolayout.dtd"
+/>
+
+<xsl:strip-space elements="toc tocentry layout copyright"/>
+
+<xsl:template match="layout">
+ <autolayout>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </autolayout>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="style|script|copyright|config">
+ <xsl:apply-templates select="." mode="copy"/>
+</xsl:template>
+
+<xsl:template match="*" mode="copy">
+ <xsl:element name="{name(.)}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="copy"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="toc">
+ <xsl:if test="not(@page)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have a page attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="page" select="document(@page,.)"/>
+
+ <toc>
+ <xsl:call-template name="tocentry"/>
+ </toc>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="tocentry">
+ <tocentry>
+ <xsl:call-template name="tocentry"/>
+ </tocentry>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="notoc">
+ <notoc>
+ <xsl:call-template name="tocentry"/>
+ </notoc>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template name="tocentry">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:call-template name="tocentry.href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="tocentry.page"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="tocentry.href">
+ <xsl:if test="not(@href)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have an href attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:if test="not(@id)">
+ <xsl:message terminate="yes">
+ <xsl:text>All href toc entries must have an id attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:message>
+ <xsl:text>off site: </xsl:text>
+ <xsl:value-of select="@href"/>
+ </xsl:message>
+
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@href"/>
+ </xsl:attribute>
+ <xsl:if test="@tocskip = '1'">
+ <xsl:attribute name="tocskip">
+ <xsl:value-of select="@tocskip"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="not(title)">
+ <xsl:message terminate="yes">
+ <xsl:text>Off-site links must provide a title.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="title|titleabbrev|summary" mode="copy"/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="tocentry"/>
+</xsl:template>
+
+<xsl:template name="tocentry.page">
+ <xsl:if test="not(@page)">
+ <xsl:message terminate="yes">
+ <xsl:text>All toc entries must have a page attribute.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="page" select="document(@page,.)"/>
+
+ <xsl:if test="not($page/*[1]/@id)">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="@page"/>
+ <xsl:text>: missing ID.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:variable name="id" select="$page/*[1]/@id"/>
+
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@filename">
+ <xsl:value-of select="@filename"/>
+ </xsl:when>
+ <xsl:when test="/layout/config[@param='default-filename']">
+ <xsl:value-of select="(/layout/config[@param='default-filename'])[1]/@value"/>
+ </xsl:when>
+ <xsl:otherwise>index.html</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="dir">
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+ </xsl:variable>
+
+ <xsl:if test="$filename = ''">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="@page"/>
+ <xsl:text>: missing filename.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+
+ <xsl:message>
+ <xsl:value-of select="@page"/>
+ <xsl:text>: </xsl:text>
+ <xsl:if test="$dir != ''">
+ <xsl:value-of select="$dir"/>
+ </xsl:if>
+ <xsl:value-of select="$filename"/>
+ </xsl:message>
+
+ <xsl:attribute name="page">
+ <xsl:value-of select="@page"/>
+ </xsl:attribute>
+ <xsl:attribute name="id">
+ <xsl:value-of select="$id"/>
+ </xsl:attribute>
+ <xsl:if test="$dir != ''">
+ <xsl:attribute name="dir">
+ <xsl:value-of select="$dir"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="filename">
+ <xsl:value-of select="$filename"/>
+ </xsl:attribute>
+ <xsl:if test="@tocskip = '1'">
+ <xsl:attribute name="tocskip">
+ <xsl:value-of select="@tocskip"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:text> </xsl:text>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="copy"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <title>
+ <xsl:apply-templates select="$page/*[1]/head/title"/>
+ </title>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
+
+ <xsl:if test="titleabbrev or $page/*[1]/head/titleabbrev">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev" mode="copy"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <titleabbrev>
+ <xsl:apply-templates select="$page/*[1]/head/titleabbrev"/>
+ </titleabbrev>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="summary or $page/*[1]/head/summary">
+ <xsl:choose>
+ <xsl:when test="summary">
+ <xsl:apply-templates select="summary" mode="copy"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <summary>
+ <xsl:apply-templates select="$page/*[1]/head/summary"/>
+ </summary>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="tocentry"/>
+</xsl:template>
+
+<xsl:template match="*" mode="calculate-dir">
+ <xsl:choose>
+ <xsl:when test="starts-with(@dir, '/')">
+ <!-- if the directory on this begins with a "/", we're done... -->
+ <xsl:value-of select="substring-after(@dir, '/')"/>
+ <xsl:text>/</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="parent::*">
+ <!-- if there's a parent, try it -->
+ <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xweb="xalan://com.nwalsh.xalan.Website"
+ xmlns:sweb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Website"
+ exclude-result-prefixes="sweb xweb"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="autolayout-file" select="'autolayout.xml'"/>
+<xsl:param name="output-root" select="'.'"/>
+<xsl:param name="dry-run" select="'0'"/>
+<xsl:param name="rebuild-all" select="'0'"/>
+
+<xsl:template match="autolayout">
+ <xsl:apply-templates select="toc|notoc" mode="make"/>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="make">
+ <xsl:call-template name="make.tocentry"/>
+ <xsl:apply-templates select="tocentry" mode="make"/>
+</xsl:template>
+
+<xsl:template name="make.tocentry">
+ <xsl:variable name="srcFile" select="@page"/>
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="@filename">
+ <xsl:value-of select="@filename"/>
+ </xsl:when>
+ <xsl:otherwise>index.html</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="dir">
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:text>!!</xsl:text>
+ <xsl:value-of select="$dir"/>
+ <xsl:text>!!</xsl:text>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:text>!!</xsl:text>
+ <xsl:value-of select="$filename"/>
+ </xsl:message>
+-->
+
+ <xsl:variable name="targetFile">
+ <xsl:value-of select="$dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$filename"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('sweb:exists')">
+ <xsl:if test="not(sweb:exists($srcFile))">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="$srcFile"/>
+ <xsl:text> does not exist.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:when test="function-available('xweb:exists')">
+ <xsl:if test="not(xweb:exists($srcFile))">
+ <xsl:message terminate="yes">
+ <xsl:value-of select="$srcFile"/>
+ <xsl:text> does not exist.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>Fail: this stylesheet relies on the exists() extension function</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:variable name="output-file">
+ <xsl:value-of select="$output-root"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="$targetFile"/>
+ </xsl:variable>
+
+ <xsl:variable name="needsUpdate">
+ <xsl:choose>
+ <xsl:when test="function-available('sweb:needsUpdate')">
+ <xsl:choose>
+ <xsl:when test="$rebuild-all != 0
+ or sweb:needsUpdate($autolayout-file, $output-file)
+ or sweb:needsUpdate($srcFile, $output-file)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="function-available('xweb:needsUpdate')">
+ <xsl:choose>
+ <xsl:when test="$rebuild-all != 0
+ or xweb:needsUpdate($autolayout-file, $output-file)
+ or xweb:needsUpdate($srcFile, $output-file)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$needsUpdate != 0">
+ <xsl:message>
+ <xsl:text>Update: </xsl:text>
+ <xsl:value-of select="$output-file"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="$srcFile"/>
+ </xsl:message>
+
+ <xsl:variable name="webpage" select="document($srcFile,.)"/>
+ <xsl:variable name="content">
+ <xsl:apply-templates select="$webpage/webpage"/>
+ </xsl:variable>
+
+ <xsl:if test="$dry-run = 0">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$output-file"/>
+ <xsl:with-param name="content" select="$content"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Up-to-date: </xsl:text>
+ <xsl:value-of select="$output-file"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="calculate-dir">
+ <xsl:choose>
+ <xsl:when test="@dir">
+ <!-- if there's a directory, use it -->
+ <xsl:choose>
+ <xsl:when test="starts-with(@dir, '/')">
+ <!-- if the directory on this begins with a "/", we're done... -->
+ <xsl:value-of select="substring-after(@dir, '/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:when test="parent::*">
+ <!-- if there's a parent, try it -->
+ <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
-<?xml version='1.0'?>
+<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:html='http://www.w3.org/1999/xhtml'
- xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
- version="1.0"
- exclude-result-prefixes="html doc">
-
-<!-- ********************************************************************
- $Id$
- ******************************************************************** -->
+ xmlns:xweb="xalan://com.nwalsh.xalan.Website"
+ xmlns:sweb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Website"
+ exclude-result-prefixes="sweb xweb"
+ version="1.0">
<xsl:import href="tabular.xsl"/>
-<xsl:include href="/share/xsl/docbook/html/chunker.xsl"/>
-
-<xsl:output method="html"
- encoding="iso-8859-1"
-/>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="using.chunker">0</xsl:param>
-
-<xsl:template match="/">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="website">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="filename">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <!-- Note that we can't call apply-imports in here because we must -->
- <!-- process webpage children *outside* of xt:document or interior -->
- <!-- webpages inherit the directory specified on their parent as -->
- <!-- their default base directory. Which is not the intended -->
- <!-- semantic. -->
-
- <xsl:variable name="page-content">
- <html>
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
- <body>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <xsl:if test="$nav.table.summary!=''">
- <xsl:attribute name="summary">
- <xsl:value-of select="$nav.table.summary"/>
- </xsl:attribute>
- </xsl:if>
- <tr>
- <td width="{$navtocwidth}" bgcolor="{$navbgcolor}"
- valign="top" align="left" rowspan="3">
- <p class="navtoc">
- <xsl:call-template name="nav.toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- </xsl:call-template>
- </p>
- </td>
- <td valign="bottom" bgcolor="{$textbgcolor}"> </td>
- <td align="left" valign="bottom" bgcolor="{$textbgcolor}"
- height="35">
- <xsl:call-template name="home.navhead"/>
- </td>
- <td align="center" valign="bottom" bgcolor="{$textbgcolor}"
- height="35">
- <xsl:call-template name="home.navhead.upperright"/>
- </td>
- </tr>
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:if test="$footer.hr != '0'"><hr/></xsl:if>
- </td>
- </tr>
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:apply-templates select="child::*[name(.) != 'webpage']"/>
- <xsl:call-template name="process.footnotes"/>
- </td>
- </tr>
-
- <xsl:if test="$footer.spans.page = '0'">
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:call-template name="webpage.footer"/>
- </td>
- </tr>
- </xsl:if>
-
- </table>
-
- <xsl:if test="$footer.spans.page != '0'">
- <xsl:call-template name="webpage.footer"/>
- </xsl:if>
- </div>
- </body>
- </html>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="method" select="'html'"/>
- <xsl:with-param name="encoding" select="'ISO-8859-1'"/>
- <xsl:with-param name="content" select="$page-content"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="webpage"/>
-
-</xsl:template>
-
-<xsl:template match="webpage">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="relpath">
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="."/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="filename">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <!-- Note that we can't call apply-imports in here because we must -->
- <!-- process webpage children *outside* of xt:document or interior -->
- <!-- webpages inherit the directory specified on their parent as -->
- <!-- their default base directory. Which is not the intended -->
- <!-- semantic. -->
-
- <xsl:variable name="page-content">
- <html>
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
- <body>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <xsl:if test="$nav.table.summary!=''">
- <xsl:attribute name="summary">
- <xsl:value-of select="$nav.table.summary"/>
- </xsl:attribute>
- </xsl:if>
- <tr>
- <td width="{$navtocwidth}" bgcolor="{$navbgcolor}"
- valign="top" align="left">
- <p class="navtoc">
- <xsl:call-template name="nav.toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- </xsl:call-template>
- </p>
- </td>
- <td bgcolor="{$textbgcolor}"> </td>
- <td align="left" valign="top" bgcolor="{$textbgcolor}">
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
- <xsl:apply-templates select="child::*[name(.) != 'webpage']"/>
- <xsl:call-template name="process.footnotes"/>
- <br/>
- </td>
- </tr>
- </table>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
-
- </body>
- </html>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="method" select="'html'"/>
- <xsl:with-param name="encoding" select="'ISO-8859-1'"/>
- <xsl:with-param name="content" select="$page-content"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="webpage"/>
-
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage|webpage" mode="filename">
- <xsl:variable name="dir">
- <xsl:choose>
- <xsl:when test="config[@param='dir']/@value">
- <xsl:value-of select="config[@param='dir']/@value"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="fname">
- <xsl:choose>
- <xsl:when test="config[@param='filename']/@value">
- <xsl:value-of select="config[@param='filename']/@value"/>
- </xsl:when>
- <xsl:otherwise>index.html</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($dir, $fname)"/>
-</xsl:template>
-
-<xsl:template name="href.target">
- <xsl:param name="object" select="."/>
- <xsl:param name="from-page" select="(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]"/>
-
- <xsl:variable name="ischunk">
- <xsl:if test="local-name($object) = 'webpage'
- or local-name($object) = 'homepage'">1</xsl:if>
- <xsl:text>0</xsl:text>
- </xsl:variable>
- <xsl:variable name="chunk" select="($object/ancestor-or-self::webpage
- |$object/ancestor-or-self::homepage)[last()]"/>
-
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$from-page"/>
- </xsl:call-template>
- <xsl:apply-templates select="$chunk" mode="filename"/>
-
- <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="html:*">
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<!-- ==================================================================== -->
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/snapshot/html/chunker.xsl"/>
+<xsl:include href="chunk-common.xsl"/>
</xsl:stylesheet>
+++ /dev/null
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:html='http://www.w3.org/1999/xhtml'
- xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
- version="1.0"
- exclude-result-prefixes="html doc">
-
-<!-- ********************************************************************
- $Id$
- ******************************************************************** -->
-
-<xsl:import href="website.xsl"/>
-
-<xsl:output method="html"
- encoding="iso-8859-1"
-/>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="using.chunker">0</xsl:param>
-
-<xsl:template match="/">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="website">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="filename">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <!-- Note that we can't call apply-imports in here because we must -->
- <!-- process webpage children *outside* of xt:document or interior -->
- <!-- webpages inherit the directory specified on their parent as -->
- <!-- their default base directory. Which is not the intended -->
- <!-- semantic. -->
-
- <xsl:variable name="page-content">
- <html>
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
- <body>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <xsl:call-template name="home.navhead"/>
-
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
-
- <xsl:apply-templates select="child::*[name(.)!='webpage']"/>
-
- <xsl:call-template name="process.footnotes"/>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
- </body>
- </html>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="method" select="'html'"/>
- <xsl:with-param name="encoding" select="'ISO-8859-1'"/>
- <xsl:with-param name="content" select="$page-content"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="webpage"/>
-
-</xsl:template>
-
-<xsl:template match="webpage">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
-
- <xsl:variable name="filename">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <!-- Note that we can't call apply-imports in here because we must -->
- <!-- process webpage children *outside* of xt:document or interior -->
- <!-- webpages inherit the directory specified on their parent as -->
- <!-- their default base directory. Which is not the intended -->
- <!-- semantic. -->
-
- <xsl:variable name="page-content">
- <html>
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
- <body>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <xsl:call-template name="page.navhead"/>
-
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
-
- <xsl:apply-templates select="child::*[name(.)!='webpage']"/>
-
- <xsl:call-template name="process.footnotes"/>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
- </body>
- </html>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="method" select="'html'"/>
- <xsl:with-param name="encoding" select="'ISO-8859-1'"/>
- <xsl:with-param name="content" select="$page-content"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="webpage"/>
-
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage|webpage" mode="filename">
- <xsl:variable name="dir">
- <xsl:choose>
- <xsl:when test="config[@param='dir']/@value">
- <xsl:value-of select="config[@param='dir']/@value"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="fname">
- <xsl:choose>
- <xsl:when test="config[@param='filename']/@value">
- <xsl:value-of select="config[@param='filename']/@value"/>
- </xsl:when>
- <xsl:otherwise>index.html</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($dir, $fname)"/>
-</xsl:template>
-
-<xsl:template name="href.target">
- <xsl:param name="object" select="."/>
- <xsl:param name="from-page" select="(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]"/>
-
- <xsl:variable name="ischunk">
- <xsl:if test="local-name($object) = 'webpage'
- or local-name($object) = 'homepage'">1</xsl:if>
- <xsl:text>0</xsl:text>
- </xsl:variable>
- <xsl:variable name="chunk" select="($object/ancestor-or-self::webpage
- |$object/ancestor-or-self::homepage)[last()]"/>
-
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$from-page"/>
- </xsl:call-template>
- <xsl:apply-templates select="$chunk" mode="filename"/>
-
- <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="html:*">
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-</xsl:stylesheet>
-<?xml version='1.0'?>
+<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:html='http://www.w3.org/1999/xhtml'
- xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
- version="1.0"
- exclude-result-prefixes="html doc">
-
-<!-- ********************************************************************
- $Id$
- ******************************************************************** -->
-
-<xsl:import href="chunk-website-common.xsl"/>
-<xsl:include href="/share/xsl/docbook/html/chunker.xsl"/>
-
-<xsl:output method="html"
- encoding="iso-8859-1"
-/>
+ xmlns:xweb="xalan://com.nwalsh.xalan.Website"
+ xmlns:sweb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Website"
+ exclude-result-prefixes="sweb xweb"
+ version="1.0">
+
+<xsl:import href="website.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/snapshot/html/chunker.xsl"/>
+<xsl:include href="chunk-common.xsl"/>
</xsl:stylesheet>
+++ /dev/null
-<?xml version='1.0'?>
-
-<!-- Note: the perl version of the chunker doesn't do namespaces, so
- this is sortof imaginary. The chunker actually cares about and
- uses the namespace prefix at the moment. -->
-
-<chunk-control xmlns="http://nwalsh.com/docbook/xsl/chunker/1.0"
- xmlns:ch="http://nwalsh.com/docbook/xsl/chunker/1.0"
- xmlns:html="http://www.w3.org/TR/REC-html40"
- chunk-extension=".html"
- transclude="1">
-
-<chunk-library src="n:/share/xsl/docbook/bin/dingbat.pl"/>
-<chunk-library src="n:/share/xsl/docbook/bin/docbook.pl"/>
-<chunk-library src="n:/share/xsl/docbook/bin/removexmlns.pl"/>
-<chunk-library src="n:/share/doctypes/website/xsl/chunklib.pl"/>
-<chunk-library src="n:/share/doctypes/website/xsl/hrefencode.pl"/>
-
-<character-mapping>
- <dingbat name="bullet" entity="bull"/>
- <dingbat name="copyright" entity="copy"/>
- <dingbat name="trademark" entity="trade"/>
- <dingbat name="ldquo">"</dingbat>
- <dingbat name="rdquo">"</dingbat>
- <dingbat name="lsquo">'</dingbat>
- <dingbat name="rsquo">'</dingbat>
- <dingbat name="em-dash" entity="mdash"/>
- <dingbat name="en-dash" entity="ndash"/>
- <dingbat name="emdash" entity="mdash"/>
- <dingbat name="endash" entity="ndash"/>
- <dingbat name="mdash" entity="mdash"/>
- <dingbat name="ndash" entity="ndash"/>
- <dingbat name="nbsp" entity="nbsp"/>
-
- <unicode char="60" entity="lt"/>
- <unicode char="38" entity="amp"/>
- <unicode char="62" entity="gt"/>
- <unicode char="160" entity="nbsp"/>
- <unicode char="169" entity="copy"/>
- <unicode char="229" entity="#229"/>
- <unicode char="233" entity="eacute"/>
- <unicode char="224" entity="agrave"/>
- <unicode char="8220" entity="#147"/>
- <unicode char="8221" entity="#148"/>
- <unicode char="8212" entity="#150"/>
- <unicode char="8482" entity="trade"/>
- <unicode char="8211">-</unicode>
- <unicode char="8240" entity="#137"/>
- <unicode char="0x07e2">'</unicode>
- <unicode char="0x00ae" entity="reg"/>
-</character-mapping>
-
-<chunk-elements>
- <element name="homepage" abbrev="home"/>
- <element name="webpage" abbrev="web"/>
-</chunk-elements>
-
-<chunk-enumeration-nesting>
-</chunk-enumeration-nesting>
-
-<empty-elements>
- <element name="br"/>
- <element name="hr"/>
- <element name="img"/>
- <element name="link"/>
- <element name="meta"/>
-</empty-elements>
-
-<ch:chunk-head xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-head>
-
-<ch:chunk-header-navigation xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-header-navigation>
-
-<ch:chunk-foot xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-foot>
-
-<ch:chunk-footer-navigation xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-footer-navigation>
-
-</chunk-control>
+++ /dev/null
-# -*- Perl -*-
-# This is a chunk.pl library file
-
-package chunklib;
-
-use XML::DOM;
-use Time::Local;
-
-sub init {
- return 1;
-}
-
-sub applies {
- my $doc = shift;
- my $node = shift;
- my $parent = shift;
-
- return 0 if $node->getNodeType() != ELEMENT_NODE;
- return 0 if $node->getTagName() ne 'span';
- return 0 if $node->getAttribute('class') ne 'footdate';
- return 1;
-}
-
-sub apply {
- my $doc = shift;
- my $node = shift;
- my $parent = shift;
-
- if ($node->getTagName() eq 'span'
- && $node->getAttribute('class') eq 'footdate') {
- my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
-
- my $textnode = $node->getFirstChild();
- my $ucsdate = $textnode->getData();
-
- if ($ucsdate =~ /\$(Date): (....)\/(..)\/(..)\s+(\d+):(..):(..) \$/) {
- # NB: the extra ()'s around Date prevent CVS from mangling it!
- # ok, let's convert this sucker!
- my ($year, $month, $day, $hour, $min, $sec) = ($2,$3,$4,$5,$6,$7);
- my ($wday, $yday, $isdst);
-
- $month--; # perl months are zero based
- $year -= 1900; # perl years are 1900 based
-
- # convert GMT into local time
- my $time = timegm($sec,$min,$hour,$day,$month,$year);
- ($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst)
- = localtime($time);
-
- # Calculate the abbreviation for the local timezone.
- # I don't know how portable this is. My machine returns
- # "Eastern Standard Time", so I'm just going to grab
- # all the capitals out of that.
-
- my ($tzs, $tzd) = POSIX::tzname;
- my $tz = $isdst ? $tzd : $tzs;
- $tz =~ s/[^A-Z]//g;
-
- $year += 1900;
-
- my $ampm = $hour >= 12 ? "pm" : "am";
- my $lcldate = sprintf("Updated: %02d %s %04d @ %02d:%02d%s %s",
- $day, $months[$month], $year,
- $hour > 12 ? $hour - 12 : $hour, $min,
- $ampm, $tz);
-
-# print STDERR "GMT: $ucsdate\n";
-# print STDERR "EDT: $lcldate\n";
-
- $textnode->deleteData(0, $textnode->getLength());
- $textnode->appendData($lcldate);
- }
- }
-}
-
-'chunklib';
-
+++ /dev/null
-<?xml version='1.0'?>
-
-<!-- Note: the perl version of the chunker doesn't do namespaces, so
- this is sortof imaginary. The chunker actually cares about and
- uses the namespace prefix at the moment. -->
-
-<chunk-control xmlns="http://nwalsh.com/docbook/xsl/chunker/1.0"
- xmlns:ch="http://nwalsh.com/docbook/xsl/chunker/1.0"
- xmlns:html="http://www.w3.org/TR/REC-html40"
- chunk-extension=".html"
- transclude="1">
-
-<chunk-library src="n:/share/xsl/docbook/bin/dingbat.pl"/>
-<chunk-library src="n:/share/xsl/docbook/bin/docbook.pl"/>
-<chunk-library src="n:/share/xsl/docbook/bin/removexmlns.pl"/>
-<chunk-library src="n:/share/xsl/website/chunklib.pl"/>
-<chunk-library src="n:/share/xsl/website/hrefencode.pl"/>
-
-<character-mapping>
- <dingbat name="bullet" entity="bull"/>
- <dingbat name="copyright" entity="copy"/>
- <dingbat name="trademark" entity="trade"/>
- <dingbat name="ldquo">"</dingbat>
- <dingbat name="rdquo">"</dingbat>
- <dingbat name="lsquo">'</dingbat>
- <dingbat name="rsquo">'</dingbat>
- <dingbat name="em-dash" entity="mdash"/>
- <dingbat name="en-dash" entity="ndash"/>
- <dingbat name="emdash" entity="mdash"/>
- <dingbat name="endash" entity="ndash"/>
- <dingbat name="mdash" entity="mdash"/>
- <dingbat name="ndash" entity="ndash"/>
- <dingbat name="nbsp" entity="nbsp"/>
-
- <unicode char="60" entity="lt"/>
- <unicode char="38" entity="amp"/>
- <unicode char="62" entity="gt"/>
- <unicode char="160" entity="nbsp"/>
- <unicode char="169" entity="copy"/>
- <unicode char="229" entity="#229"/>
- <unicode char="233" entity="eacute"/>
- <unicode char="224" entity="agrave"/>
- <unicode char="8220" entity="#147"/>
- <unicode char="8221" entity="#148"/>
- <unicode char="8212" entity="#150"/>
- <unicode char="8482" entity="trade"/>
- <unicode char="8211">-</unicode>
- <unicode char="8240" entity="#137"/>
- <unicode char="0x07e2">'</unicode>
- <unicode char="0x00ae" entity="reg"/>
-</character-mapping>
-
-<chunk-elements>
- <element name="homepage" abbrev="home"/>
- <element name="webpage" abbrev="web"/>
-</chunk-elements>
-
-<chunk-enumeration-nesting>
-</chunk-enumeration-nesting>
-
-<empty-elements>
- <element name="br"/>
- <element name="hr"/>
- <element name="img"/>
- <element name="link"/>
- <element name="meta"/>
-</empty-elements>
-
-<doctype
- public-id="-//W3C//DTD HTML 4.0 Transitional//EN"
- system-id="http://www.w3.org/TR/REC-html40/loose.dtd"/>
-
-<ch:body-attributes>
- <attribute name="bgcolor" value='#CEDDFC'/>
- <attribute name="style" value='margin-top: 0pt; margin-left: 0pt'/>
- <attribute name="text" value='#000000'/>
- <attribute name="vlink" value='#840084'/>
- <attribute name="alink" value='#0000FF'/>
-</ch:body-attributes>
-
-<ch:chunk-head xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-head>
-
-<ch:chunk-header-navigation xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-header-navigation>
-
-<ch:chunk-foot xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-foot>
-
-<ch:chunk-footer-navigation xmlns="http://www.w3.org/TR/REC-html40">
-</ch:chunk-footer-navigation>
-
-</chunk-control>
<xsl:template match="head" mode="head.mode">
<xsl:variable name="nodes" select="*"/>
- <xsl:variable name="global"
- select="/website/homepage/head/*[@class='global']"/>
<head>
- <meta name="generator" content="Website XSL Stylesheet V{$WSVERSION}"/>
+ <meta name="generator" content="Website XSL Stylesheet V{$VERSION}"/>
<xsl:if test="$html.stylesheet != ''">
<link rel="stylesheet" href="{$html.stylesheet}" type="text/css">
<xsl:if test="$html.stylesheet.type != ''">
</xsl:if>
</link>
</xsl:if>
- <xsl:apply-templates select="$nodes" mode="head.mode"/>
- <xsl:if test="not(.=/website/homepage/head)">
- <xsl:call-template name="process.globals">
- <xsl:with-param name="nodelist" select="$global"/>
- </xsl:call-template>
- </xsl:if>
- <!-- this is potentially slow -->
- <xsl:if test="..//xlink[@role='dynamic']">
- <script src="dynxbel.js" language="JavaScript"/>
- </xsl:if>
- </head>
-</xsl:template>
-
-<xsl:template name="process.globals">
- <xsl:param name="nodelist"></xsl:param>
- <xsl:if test="count($nodelist)>0">
- <xsl:variable name="node" select="$nodelist[1]"/>
- <xsl:variable name="rest" select="$nodelist[position()>1]"/>
- <xsl:apply-templates select="$node" mode="head.mode">
- <xsl:with-param name="current.page" select="ancestor-or-self::webpage"/>
+ <xsl:apply-templates select="$autolayout/autolayout/style
+ |$autolayout/autolayout/script"
+ mode="head.mode">
+ <xsl:with-param name="webpage" select="ancestor::webpage"/>
</xsl:apply-templates>
- <xsl:call-template name="process.globals">
- <xsl:with-param name="nodelist" select="$rest"/>
- </xsl:call-template>
- </xsl:if>
+ <xsl:apply-templates mode="head.mode"/>
+ </head>
</xsl:template>
<xsl:template match="title" mode="head.mode">
<!--nop-->
</xsl:template>
+<xsl:template match="base" mode="head.mode">
+ <base href="{@href}">
+ <xsl:if test="@target">
+ <xsl:attribute name="target">
+ <xsl:value-of select="@target"/>
+ </xsl:attribute>
+ </xsl:if>
+ </base>
+</xsl:template>
+
<xsl:template match="keywords" mode="head.mode">
<meta name="keyword" content="{.}"/>
</xsl:template>
</xsl:template>
<xsl:template match="meta" mode="head.mode">
- <meta name="{@name}" content="{@content}"/>
+ <xsl:choose>
+ <xsl:when test="@http-equiv">
+ <meta http-equiv="{@http-equiv}" content="{@content}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <meta name="{@name}" content="{@content}"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="script" mode="head.mode">
<xsl:attribute name="language">JavaScript</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
-
<xsl:apply-templates/>
-
</script>
</xsl:template>
-<xsl:template match="script[@src]" mode="head.mode">
- <xsl:param name="current.page" select="ancestor-or-self::webpage"/>
+<xsl:template match="script[@src]" mode="head.mode" priority="2">
+ <xsl:param name="webpage" select="ancestor::webpage"/>
<xsl:variable name="relpath">
<xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$current.page"/>
+ <xsl:with-param name="webpage" select="$webpage"/>
</xsl:call-template>
</xsl:variable>
+
<xsl:variable name="language">
<xsl:choose>
<xsl:when test="@language">
<xsl:otherwise>JavaScript</xsl:otherwise>
</xsl:choose>
</xsl:variable>
- <script src="{$relpath}{@src}" language="{$language}"></script>
+
+ <script src="{$relpath}{@src}" language="{$language}"/>
</xsl:template>
<xsl:template match="style" mode="head.mode">
</style>
</xsl:template>
-<xsl:template match="style[@src]" mode="head.mode">
- <xsl:param name="current.page" select="ancestor-or-self::webpage"/>
+<xsl:template match="style[@src]" mode="head.mode" priority="2">
+ <xsl:param name="webpage" select="ancestor::webpage"/>
<xsl:variable name="relpath">
<xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$current.page"/>
+ <xsl:with-param name="webpage" select="$webpage"/>
</xsl:call-template>
</xsl:variable>
- <link rel="stylesheet" href="{$relpath}{@src}" type="text/css">
- <xsl:if test="@type">
- <xsl:attribute name="type">
- <xsl:value-of select="@type"/>
- </xsl:attribute>
- </xsl:if>
- </link>
+
+ <xsl:choose>
+ <xsl:when test="starts-with(@src, '/')">
+ <link rel="stylesheet" href="{@src}">
+ <xsl:if test="@type">
+ <xsl:attribute name="type">
+ <xsl:value-of select="@type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:when>
+ <xsl:otherwise>
+ <link rel="stylesheet" href="{$relpath}{@src}">
+ <xsl:if test="@type">
+ <xsl:attribute name="type">
+ <xsl:value-of select="@type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="abstract" mode="head.mode">
<!--nop-->
</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+<xsl:template match="rddl:*" mode="head.mode"
+ xmlns:rddl='http://www.rddl.org/'>
+ <!--nop-->
+</xsl:template>
+
+</xsl:stylesheet>
+++ /dev/null
-# -*- Perl -*-
-# This is a chunk.pl library file
-
-package hrefencode;
-
-use XML::DOM;
-
-sub init {
- return 1;
-}
-
-sub applies {
- my $doc = shift;
- my $node = shift;
- my $parent = shift;
-
- return 0 if $node->getNodeType() != ELEMENT_NODE;
- return 0 if $node->getTagName() ne 'a';
- return 1;
-}
-
-sub apply {
- my $doc = shift;
- my $node = shift;
- my $parent = shift;
-
- if ($node->getTagName() eq 'a' && $node->getAttribute('href') ne '') {
- my $href = $node->getAttribute('href');
- if ($href =~ /^(.*)?([\?\&])(.*)$/) {
- my $prefix = $1;
- my $sep = $2;
- my $rest = $3;
-
- $rest =~ s/[\s\&\?\{\}\|\\\/\^\~\[\]\`\%\+]/sprintf("%%%02X", ord($&))/eg;
-
- $node->setAttribute('href', $prefix . $sep . $rest);
- }
- }
-}
-
-'hrefencode';
-
-
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:param name="prefix" select="''"/>
+
+<xsl:output method="text"/>
+
+<xsl:template match="autolayout">
+ <xsl:text>website: </xsl:text>
+ <xsl:apply-templates select="toc" mode="all"/>
+ <xsl:apply-templates select="notoc" mode="all"/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="toc"/>
+ <xsl:apply-templates select="notoc"/>
+ <xsl:text> </xsl:text>
+ <xsl:text>clean:
+	rm -f </xsl:text>
+ <xsl:apply-templates select="toc" mode="all"/>
+ <xsl:apply-templates select="notoc" mode="all"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="toc">
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@page"/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select=".//tocentry"/>
+</xsl:template>
+
+<xsl:template match="tocentry|notoc">
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text>: </xsl:text>
+ <xsl:value-of select="@page"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="toc" mode="all">
+ <xsl:apply-templates select=".//tocentry" mode="all"/>
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="tocentry|notoc" mode="all">
+<!--
+ <xsl:apply-templates select="." mode="calculate-dir"/>
+-->
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$prefix"/>
+ <xsl:value-of select="@filename"/>
+ <xsl:text> </xsl:text>
+</xsl:template>
+
+<xsl:template match="*" mode="calculate-dir">
+ <xsl:choose>
+ <xsl:when test="starts-with(@dir, '/')">
+ <!-- if the directory on this begins with a "/", we're done... -->
+ <xsl:value-of select="substring-after(@dir, '/')"/>
+<!--
+ <xsl:if test="@dir != '/'">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+-->
+ </xsl:when>
+
+ <xsl:when test="parent::*">
+ <!-- if there's a parent, try it -->
+ <xsl:apply-templates select="parent::*" mode="calculate-dir"/>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+<!--
+ <xsl:text>/</xsl:text>
+-->
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:if test="@dir">
+ <xsl:value-of select="@dir"/>
+<!--
+ <xsl:text>/</xsl:text>
+-->
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:html='http://www.w3.org/1999/xhtml'
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc html"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<!-- ==================================================================== -->
+<xsl:param name="header.hr" select="1"/>
+
+<doc:param name="header.hr" xmlns="">
+<refpurpose>Toggle <HR> after header</refpurpose>
+<refdescription>
+<para>If non-zero, an <HR> is generated at the top of each web page,
+after the heaader.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="footer.hr" select="1"/>
+
+<doc:param name="footer.hr" xmlns="">
+<refpurpose>Toggle <HR> before footer</refpurpose>
+<refdescription>
+<para>If non-zero, an <HR> is generated at the bottom of each web page,
+before the footer.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="feedback.href"></xsl:param>
+
+<doc:param name="feedback.href" xmlns="">
+<refpurpose>HREF for feedback link</refpurpose>
+<refdescription>
+<para>The <varname>feedback.href</varname> value is used as the value
+for the <sgmltag class="attribute">href</sgmltag> attribute on the feedback
+link. If <varname>feedback.href</varname>
+is empty, no feedback link is generated.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="feedback.with.ids" select="0"/>
+
+<doc:param name="feedback.with.ids" xmlns="">
+<refpurpose>Toggle use of IDs in feedback</refpurpose>
+<refdescription>
+<para>If <varname>feedback.with.ids</varname> is non-zero, the ID of the
+current page will be added to the feedback link. This can be used, for
+example, if the <varname>feedback.href</varname> is a CGI script.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="feedback.link.text">Feedback</xsl:param>
+
+<doc:param name="feedback.link.text" xmlns="">
+<refpurpose>The text of the feedback link</refpurpose>
+<refdescription>
+<para>The contents of this variable is used as the text of the feedback
+link if <varname>feedback.href</varname> is not empty. If
+<varname>feedback.href</varname> is empty, no feedback link is
+generated.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="filename-prefix" select="''"/>
+
+<doc:param name="filename-prefix" xmlns="">
+<refpurpose>Prefix added to all filenames</refpurpose>
+<refdescription>
+<para>To produce the <quote>text-only</quote> (that is, non-tabular) layout
+of a website simultaneously with the tabular layout, the filenames have to
+be distinguished. That's accomplished by adding the
+<varname>filename-prefix</varname> to the front of each filename.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="autolayout-file" select="'autolayout.xml'"/>
+
+<doc:param name="autolayout-file" xmlns="">
+<refpurpose>Identifies the autolayout.xml file</refpurpose>
+<refdescription>
+<para>When the source pages are spread over several directories, this
+parameter can be set (for example, from the command line of a batch-mode
+XSLT processor) to indicate the location of the autolayout.xml file.</para>
+<para>FIXME: for browser-based use, there needs to be a PI for this...
+</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="output-root" select="'.'"/>
+
+<doc:param name="ouput-root" xmlns="">
+<refpurpose>Specifies the root directory of the website</refpurpose>
+<refdescription>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to indicate the root directory
+where the resulting pages are placed.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="dry-run" select="'0'"/>
+
+<doc:param name="dry-run" xmlns="">
+<refpurpose>Indicates that no files should be produced</refpurpose>
+<refdescription>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to suppress the generation of
+new and updated files. Effectively, this allows you to see what the
+stylesheet would do, without actually making any changes.</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="rebuild-all" select="'0'"/>
+
+<doc:param name="" xmlns="">
+<refpurpose>Indicates that all files should be produced</refpurpose>
+<refdescription>
+<para>When using the XSLT processor to manage dependencies and construct
+the website, this parameter can be used to regenerate the whole website,
+updating even pages that don't appear to need to be updated.</para>
+<para>The dependency extension only looks at the source documents. So
+if you change something in the stylesheet, for example, that has a global
+effect, you can use this parameter to force the stylesheet to rebuild the
+whole website.
+</para>
+<para>Only applies when XSLT-based chunking is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="nav.table.summary">Navigation</xsl:param>
+
+<doc:param name="nav.table.summary" xmlns="">
+<refpurpose>HTML Table summary attribute value for navigation tables</refpurpose>
+<refdescription>
+<para>The value of this parameter is used as the value of the table
+summary attribute for the navigation table.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="navtocwidth">220</xsl:param>
+
+<doc:param name="navtocwidth" xmlns="">
+<refpurpose>Specifies the width of the navigation table TOC</refpurpose>
+<refdescription>
+<para>The width, in pixels, of the navigation column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="navbodywidth"></xsl:param>
+
+<doc:param name="navbodywidth" xmlns="">
+<refpurpose>Specifies the width of the navigation table body</refpurpose>
+<refdescription>
+<para>The width of the body column.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="textbgcolor">white</xsl:param>
+
+<doc:param name="textbgcolor" xmlns="">
+<refpurpose>The background color of the table body</refpurpose>
+<refdescription>
+<para>The background color of the table body.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="navbgcolor">#4080FF</xsl:param>
+
+<doc:param name="navbgcolor" xmlns="">
+<refpurpose>The background color of the navigation TOC</refpurpose>
+<refdescription>
+<para>The background color of the navigation TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.spacer.graphic" select="1"/>
+
+<doc:param name="toc.space.graphic" xmlns="">
+<refpurpose>Use graphic for TOC spacer?</refpurpose>
+<refdescription>
+<para>If non-zero, the indentation in the TOC will be accomplished
+with the graphic identified by <varname>toc.spacer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.spacer.text">   </xsl:param>
+
+<doc:param name="toc.spacer.text" xmlns="">
+<refpurpose>The text for spacing the TOC</refpurpose>
+<refdescription>
+<para>If <varname>toc.spacer.graphic</varname> is zero, this text string
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param>
+
+<doc:param name="toc.spacer.image" xmlns="">
+<refpurpose>The image for spacing the TOC</refpurpose>
+<refdescription>
+<para>If <varname>toc.spacer.graphic</varname> is non-zero, this image
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.pointer.graphic" select="1"/>
+
+<doc:param name="toc.space.graphic" xmlns="">
+<refpurpose>Use graphic for TOC pointer?</refpurpose>
+<refdescription>
+<para>If non-zero, the indentation in the TOC will be accomplished
+with the graphic identified by <varname>toc.pointer.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.pointer.text">   </xsl:param>
+
+<doc:param name="toc.pointer.text" xmlns="">
+<refpurpose>The text for spacing the TOC</refpurpose>
+<refdescription>
+<para>If <varname>toc.pointer.graphic</varname> is zero, this text string
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.pointer.image">graphics/blank.gif</xsl:param>
+
+<doc:param name="toc.pointer.image" xmlns="">
+<refpurpose>The image for spacing the TOC</refpurpose>
+<refdescription>
+<para>If <varname>toc.pointer.graphic</varname> is non-zero, this image
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.blank.graphic" select="1"/>
+
+<doc:param name="toc.space.graphic" xmlns="">
+<refpurpose>Use graphic for TOC blank?</refpurpose>
+<refdescription>
+<para>If non-zero, the indentation in the TOC will be accomplished
+with the graphic identified by <varname>toc.blank.image</varname>.
+</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.blank.text">   </xsl:param>
+
+<doc:param name="toc.blank.text" xmlns="">
+<refpurpose>The text for spacing the TOC</refpurpose>
+<refdescription>
+<para>If <varname>toc.blank.graphic</varname> is zero, this text string
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="toc.blank.image">graphics/blank.gif</xsl:param>
+
+<doc:param name="toc.blank.image" xmlns="">
+<refpurpose>The image for spacing the TOC</refpurpose>
+<refdescription>
+<para>If <varname>toc.blank.graphic</varname> is non-zero, this image
+will be used to indent the TOC.</para>
+<para>Only applies with the tabular presentation is being used.</para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="suppress.homepage.title" select="'1'"/>
+
+<doc:param name="" xmlns="">
+<refpurpose></refpurpose>
+<refdescription>
+<para></para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:attribute-set name="body.attributes">
+ <xsl:attribute name="bgcolor">white</xsl:attribute>
+ <xsl:attribute name="text">black</xsl:attribute>
+ <xsl:attribute name="link">#0000FF</xsl:attribute>
+ <xsl:attribute name="vlink">#840084</xsl:attribute>
+ <xsl:attribute name="alink">#0000FF</xsl:attribute>
+</xsl:attribute-set>
+
+<doc:attribute-set name="body.attributes" xmlns="">
+<refpurpose></refpurpose>
+<refdescription>
+<para></para>
+</refdescription>
+</doc:attribute-set>
+
+<!-- ==================================================================== -->
+<xsl:param name="sequential.links" select="'0'"/>
+
+<doc:param name="sequential.links" xmlns="">
+<refpurpose></refpurpose>
+<refdescription>
+<para></para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+<xsl:param name="currentpage.marker" select="'@'"/>
+
+<doc:param name="currentpage.marker" xmlns="">
+<refpurpose></refpurpose>
+<refdescription>
+<para></para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<doc:param name="" xmlns="">
+<refpurpose></refpurpose>
+<refdescription>
+<para></para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+<doc:param name="" xmlns="">
+<refpurpose></refpurpose>
+<refdescription>
+<para></para>
+</refdescription>
+</doc:param>
+
+<!-- ==================================================================== -->
+
+
+</xsl:stylesheet>
-<?xml version='1.0'?>
+<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html='http://www.w3.org/1999/xhtml'
xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
exclude-result-prefixes="html doc"
- version='1.0'>
+ version="1.0">
-<xsl:import href="website.xsl"/>
+<xsl:import href="website-common.xsl"/>
+<xsl:include href="toc-tabular.xsl"/>
-<!-- ==================================================================== -->
-
-<xsl:param name="textbgcolor">white</xsl:param>
+<xsl:output method="html"
+ indent="no"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ doctype-system="http://www.w3.org/TR/html4/loose.dtd"
+/>
-<doc:param name="textbgcolor" xmlns="">
-<refpurpose>Background color of the text panel of the page</refpurpose>
-<refdescription>
-<para>The <varname>textbgcolor</varname> specifies the background color
-used in the text panel of the web page.</para>
-</refdescription>
-</doc:param>
+<xsl:param name="autolayout-file" select="'autolayout.xml'"/>
+<xsl:param name="autolayout" select="document($autolayout-file, /*)"/>
<!-- ==================================================================== -->
-<xsl:param name="navbgcolor">red</xsl:param>
-
-<doc:param name="navbgcolor" xmlns="">
-<refpurpose>Background color of the navigation panel of the page</refpurpose>
-<refdescription>
-<para>The <varname>navbgcolor</varname> specifies the background color
-used in the navigation panel of the web page.</para>
-</refdescription>
-</doc:param>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="navtocwidth">220</xsl:param>
-
-<doc:param name="navtocwidth" xmlns="">
-<refpurpose>Width of the navigation panel of the page</refpurpose>
-<refdescription>
-<para>The <varname>navtocwidth</varname> specifies the width (generally
-in pixels) of the navigation panel (column) of the web page.</para>
-</refdescription>
-</doc:param>
+<!-- Netscape gets badly confused if it sees a CSS style... -->
+<xsl:param name="admon.style" select="''"/>
+<xsl:param name="admon.graphics" select="1"/>
+<xsl:param name="admon.graphics.path">graphics/</xsl:param>
+<xsl:param name="admon.graphics.extension">.gif</xsl:param>
+
+<xsl:attribute-set name="table.properties">
+ <xsl:attribute name="border">0</xsl:attribute>
+ <xsl:attribute name="cellpadding">0</xsl:attribute>
+ <xsl:attribute name="cellspacing">0</xsl:attribute>
+ <xsl:attribute name="width">100%</xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="table.navigation.cell.properties">
+ <xsl:attribute name="valign">top</xsl:attribute>
+ <xsl:attribute name="align">left</xsl:attribute>
+ <!-- width is set with $navotocwidth -->
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$navbgcolor"/>
+ </xsl:attribute>
+</xsl:attribute-set>
+
+<xsl:attribute-set name="table.body.cell.properties">
+ <xsl:attribute name="valign">top</xsl:attribute>
+ <xsl:attribute name="align">left</xsl:attribute>
+ <!-- width is set with $navobodywidth -->
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="$textbgcolor"/>
+ </xsl:attribute>
+</xsl:attribute-set>
<!-- ==================================================================== -->
-<xsl:param name="toc.pointer.graphic" select="0"/>
-
-<doc:param name="toc.pointer.graphic" xmlns="">
-<refpurpose>Toggle use of graphic for indicating the current position
-in the navigation panel</refpurpose>
-<refdescription>
-<para>If <varname>toc.pointer.graphic</varname> is non-zero, a graphic
-will be used to indicate the current position in the navigation panel.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="toc.pointer.image">images/rarrow.gif</xsl:param>
-
-<doc:param name="toc.pointer.image" xmlns="">
-<refpurpose>Filename of the graphic to use to indicate the current
-position in the navigation panel</refpurpose>
-<refdescription>
-<para>If <varname>toc.pointer.graphic</varname> is non-zero, the
-graphic specified by <varname>toc.pointer.image</varname> will be used
-to highlight the current position in the navigation panel.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="toc.pointer.text">></xsl:param>
-
-<doc:param name="toc.pointer.text" xmlns="">
-<refpurpose>Text to use to indicate the current
-position in the navigation panel</refpurpose>
-<refdescription>
-<para>If <varname>toc.pointer.graphic</varname> is zero, the
-text specified by <varname>toc.pointer.text</varname> will be used
-to highlight the current position in the navigation panel.</para>
-</refdescription>
-</doc:param>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="toc.spacer.graphic" select="0"/>
-
-<doc:param name="toc.spacer.graphic" xmlns="">
-<refpurpose>Toggle use of graphic for indenting the lines
-in the navigation panel</refpurpose>
-<refdescription>
-<para>If <varname>toc.spacer.graphic</varname> is non-zero, a graphic
-will be used to indent the lines in the navigation panel.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="toc.spacer.image"></xsl:param>
-
-<doc:param name="toc.spacer.image" xmlns="">
-<refpurpose>Filename of the graphic to use to indent the lines
-in the navigation panel</refpurpose>
-<refdescription>
-<para>If <varname>toc.spacer.graphic</varname> is non-zero, the
-graphic specified by <varname>toc.spacer.image</varname> will be used
-to indent the lines in the navigation panel.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="toc.spacer.text">   </xsl:param>
-
-<doc:param name="toc.spacer.text" xmlns="">
-<refpurpose>Text to use to indent the lines
-in the navigation panel</refpurpose>
-<refdescription>
-<para>If <varname>toc.spacer.graphic</varname> is zero, the
-text specified by <varname>toc.spacer.text</varname> will be used
-to indent the lines in the navigation panel.</para>
-</refdescription>
-</doc:param>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="footer.spans.page" select="1"/>
-
-<doc:param name="footer.spans.page" xmlns="">
-<refpurpose>Toggle footer width</refpurpose>
-<refdescription>
-<para>If non-zero, the page footer will span the entire page. If zero,
-the footer spans only the text panel.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="nav.table.summary"></xsl:param>
-
-<doc:param name="nav.table.summary" xmlns="">
-<refpurpose>Summary attribute for HTML Table</refpurpose>
-<refdescription>
-<para>If not-empty, this value will be used for the summary
-attribute on the navigation tables.</para>
-</refdescription>
-</doc:param>
-
-<!-- ==================================================================== -->
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
<xsl:template name="home.navhead">
-<xsl:text>home.navhead</xsl:text>
+<xsl:text>Navhead</xsl:text>
</xsl:template>
<xsl:template name="home.navhead.upperright">
-<xsl:text>home.navhead.upperright</xsl:text>
+<xsl:text>Upper-right</xsl:text>
</xsl:template>
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
-
- <table border="0" cellpadding="5" cellspacing="0" width="100%">
- <xsl:if test="$nav.table.summary!=''">
- <xsl:attribute name="summary">
- <xsl:value-of select="$nav.table.summary"/>
- </xsl:attribute>
- </xsl:if>
- <tr>
- <td width="{$navtocwidth}" bgcolor="{$navbgcolor}"
- valign="top" align="left" rowspan="3">
- <p class="navtoc">
- <xsl:call-template name="nav.toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- </xsl:call-template>
- </p>
- </td>
- <td valign="bottom" bgcolor="{$textbgcolor}"> </td>
- <td align="left" valign="bottom" bgcolor="{$textbgcolor}" height="35">
- <xsl:call-template name="home.navhead"/>
- </td>
- <td align="right" valign="bottom" bgcolor="{$textbgcolor}" height="35">
- <xsl:call-template name="home.navhead.upperright"/>
- </td>
- </tr>
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:text> </xsl:text>
- </td>
- </tr>
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:apply-templates/>
- <xsl:call-template name="process.footnotes"/>
- </td>
- </tr>
-
- <xsl:if test="$footer.spans.page = '0'">
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:call-template name="webpage.footer"/>
- </td>
- </tr>
- </xsl:if>
-
- </table>
-
- <xsl:if test="$footer.spans.page != '0'">
- <xsl:call-template name="webpage.footer"/>
- </xsl:if>
- </div>
+<xsl:template name="home.navhead.separator">
+ <hr/>
</xsl:template>
<xsl:template match="webpage">
</xsl:call-template>
</xsl:variable>
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
-
- <table border="0" cellpadding="5" cellspacing="0" width="100%">
- <xsl:if test="$nav.table.summary!=''">
- <xsl:attribute name="summary">
- <xsl:value-of select="$nav.table.summary"/>
- </xsl:attribute>
- </xsl:if>
- <tr>
- <td width="{$navtocwidth}" bgcolor="{$navbgcolor}"
- valign="top" align="left">
- <p class="navtoc">
- <xsl:call-template name="nav.toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- </xsl:call-template>
- </p>
- </td>
- <td bgcolor="{$textbgcolor}"> </td>
- <td align="left" valign="top" bgcolor="{$textbgcolor}">
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
- <xsl:apply-templates/>
- <xsl:call-template name="process.footnotes"/>
- <br/>
- </td>
- </tr>
- </table>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
-</xsl:template>
-
-<xsl:template name="nav.toc">
- <xsl:param name="curpage" select="."/>
- <xsl:param name="pages"></xsl:param>
-
- <xsl:variable name="homebanner"
- select="/website/homepage/config[@param='homebanner']/@value"/>
- <xsl:variable name="homebanneralt"
- select="/website/homepage/config[@param='homebanner']/@altval"/>
- <xsl:variable name="banner"
- select="/website/homepage/config[@param='banner']/@value"/>
- <xsl:variable name="banneralt"
- select="/website/homepage/config[@param='banner']/@altval"/>
-
- <xsl:variable name="hometitle" select="/website/homepage/head/title[1]"/>
-
- <xsl:variable name="relpath">
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$curpage"/>
- </xsl:call-template>
+ <xsl:variable name="filename">
+ <xsl:apply-templates select="." mode="filename"/>
</xsl:variable>
- <xsl:choose>
- <xsl:when test="/website/homepage=$curpage">
- <img src="{$relpath}{$homebanner}"
- alt="{$homebanneralt}" align="left" border="0"/>
- <br clear="all"/>
- <br/>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="object" select="/website/homepage"/>
- </xsl:call-template>
- </xsl:attribute>
- <img src="{$relpath}{$banner}"
- alt="{$banneralt}" align="left" border="0"/>
- </a>
- <br clear="all"/>
- <br/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:apply-templates select="$pages" mode="table.toc">
- <xsl:with-param name="curpage" select="$curpage"/>
- </xsl:apply-templates>
- <br/>
-</xsl:template>
-
-<xsl:template match="webpage" mode="table.toc">
- <xsl:param name="curpage" select="."/>
- <xsl:param name="toclevel" select="1"/>
-
- <xsl:variable name="notoc" select="config[@param='notoc']/@value"/>
-
- <xsl:choose>
- <xsl:when test="$notoc='1'">
-<!--
- <xsl:message>
- <xsl:text>Not in TOC: </xsl:text>
- <xsl:value-of select="head/title"/>
- </xsl:message>
--->
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="webpage.nav.toc">
- <xsl:with-param name="curpage" select="$curpage"/>
- <xsl:with-param name="toclevel" select="$toclevel"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="insert.spacers">
- <xsl:param name="count" select="0"/>
- <xsl:param name="relpath"></xsl:param>
- <xsl:if test="$count>0">
- <xsl:choose>
- <xsl:when test="$toc.spacer.graphic">
- <img src="{$relpath}{$toc.spacer.image}" alt="{$toc.spacer.text}"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$toc.spacer.text"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:call-template name="insert.spacers">
- <xsl:with-param name="count" select="$count - 1"/>
- <xsl:with-param name="relpath" select="$relpath"/>
- </xsl:call-template>
- </xsl:if>
-</xsl:template>
+ <xsl:variable name="tocentry" select="$autolayout/autolayout//*[$id=@id]"/>
+ <xsl:variable name="toc" select="($tocentry/ancestor-or-self::toc
+ |$autolayout/autolayout/toc[1])[last()]"/>
-<xsl:template name="webpage.nav.toc">
- <xsl:param name="curpage" select="."/>
- <xsl:param name="toclevel" select="1"/>
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="title" select="(head/title|head/titleabbrev)[last()]"/>
-
- <xsl:variable name="summary" select="head/summary[1]"/>
-
- <xsl:variable name="relpath">
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$curpage"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="insert.spacers">
- <xsl:with-param name="count" select="$toclevel"/>
- <xsl:with-param name="relpath" select="$relpath"/>
- </xsl:call-template>
-
- <span>
- <xsl:if test="$toclevel>1">
- <xsl:attribute name="class">
- <xsl:text>shrink</xsl:text>
- <xsl:value-of select="$toclevel - 1"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:variable name="isdescendant">
- <xsl:call-template name="isdescendant">
- <xsl:with-param name="curpage" select="$curpage"/>
- <xsl:with-param name="here" select="."/>
- </xsl:call-template>
- </xsl:variable>
+ <html>
+ <xsl:apply-templates select="head" mode="head.mode"/>
+ <xsl:apply-templates select="config" mode="head.mode"/>
+ <body xsl:use-attribute-sets="body.attributes">
- <xsl:choose>
- <xsl:when test=".=$curpage">
- <span class="xnavtoc">
- <xsl:choose>
- <xsl:when test="$toc.pointer.graphic != 0">
- <img src="{$relpath}{$toc.pointer.image}"
- alt="{$toc.pointer.text}"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$toc.pointer.text"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates select="$title" mode="table.toc"/>
- </span>
- <br/>
- </xsl:when>
- <xsl:otherwise>
- <span>
- <xsl:choose>
- <xsl:when test="$isdescendant='0'">
- <xsl:attribute name="class">navtoc</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="class">ynavtoc</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
+ <div id="{$id}" class="{name(.)}">
+ <a name="{$id}"/>
- <xsl:call-template name="insert.spacers">
- <xsl:with-param name="count" select="1"/>
- <xsl:with-param name="relpath" select="$relpath"/>
- </xsl:call-template>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="from-page" select="$curpage"/>
- </xsl:call-template>
+ <table xsl:use-attribute-sets="table.properties">
+ <xsl:if test="$nav.table.summary!=''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$nav.table.summary"/>
</xsl:attribute>
- <xsl:apply-templates select="$title" mode="table.toc"/>
- </a>
- </span>
- <br/>
- </xsl:otherwise>
- </xsl:choose>
- </span>
-
- <xsl:variable name="isancestor">
- <xsl:call-template name="isancestor">
- <xsl:with-param name="curpage" select="$curpage"/>
- <xsl:with-param name="here" select="."/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:if test="$isancestor='1'">
- <xsl:apply-templates select="webpage" mode="table.toc">
- <xsl:with-param name="curpage" select="$curpage"/>
- <xsl:with-param name="toclevel" select="$toclevel + 1"/>
- </xsl:apply-templates>
- </xsl:if>
-</xsl:template>
-
-<xsl:template name="isancestor">
- <!-- returns 1 iff here is an ancestor of curpage -->
- <xsl:param name="curpage" select="."/>
- <xsl:param name="here" select="."/>
-
- <xsl:choose>
- <xsl:when test="$curpage = $here">1</xsl:when>
- <xsl:when test="count($curpage/parent::*)>0">
- <xsl:call-template name="isancestor">
- <xsl:with-param name="curpage" select="($curpage/parent::*)[1]"/>
- <xsl:with-param name="here" select="$here"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="isdescendant">
- <!-- returns 1 iff here is an descendant of curpage -->
- <xsl:param name="curpage" select="."/>
- <xsl:param name="here" select="."/>
-
- <xsl:choose>
- <xsl:when test="$curpage = $here">1</xsl:when>
- <xsl:when test="count($here/parent::*)>0">
- <xsl:call-template name="isdescendant">
- <xsl:with-param name="curpage" select="$curpage"/>
- <xsl:with-param name="here" select="($here/parent::*)[1]"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="head/title" mode="navtoc.title.mode">
- <b><xsl:apply-templates/></b>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="title" mode="table.toc">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="titleabbrev" mode="table.toc">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="summary" mode="table.toc">
- <xsl:apply-templates/>
+ </xsl:if>
+ <tr>
+ <td xsl:use-attribute-sets="table.navigation.cell.properties">
+ <xsl:if test="$navtocwidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$navtocwidth"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$toc">
+ <p class="navtoc">
+ <xsl:apply-templates select="$toc">
+ <xsl:with-param name="pageid" select="@id"/>
+ </xsl:apply-templates>
+ </p>
+ </xsl:when>
+ <xsl:otherwise> </xsl:otherwise>
+ </xsl:choose>
+ </td>
+
+ <td xsl:use-attribute-sets="table.body.cell.properties">
+ <xsl:if test="$navbodywidth != ''">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$navbodywidth"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$autolayout/autolayout/toc[1]/@id = $id">
+ <table border="0" summary="home page extra headers"
+ cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td width="50%" valign="middle" align="left">
+ <xsl:call-template name="home.navhead"/>
+ </td>
+ <td width="50%" valign="middle" align="right">
+ <xsl:call-template name="home.navhead.upperright"/>
+ </td>
+ </tr>
+ </table>
+ <xsl:call-template name="home.navhead.separator"/>
+ </xsl:if>
+
+ <xsl:if test="$autolayout/autolayout/toc[1]/@id != $id
+ or $suppress.homepage.title = 0">
+ <xsl:apply-templates select="./head/title" mode="title.mode"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="child::*[name(.) != 'webpage']"/>
+ <xsl:call-template name="process.footnotes"/>
+ <br/>
+ </td>
+ </tr>
+ <xsl:call-template name="webpage.table.footer"/>
+ </table>
+
+ <xsl:call-template name="webpage.footer"/>
+ </div>
+
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="config[@param='filename']" mode="head.mode">
</xsl:template>
<xsl:template match="webtoc">
-</xsl:template>
-
-<xsl:template match="config[@param='filename']">
+ <!-- nop -->
</xsl:template>
</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="nav.graphics" select="1"/>
+<xsl:param name="nav.pointer" select="1"/>
+
+<xsl:param name="toc.spacer.text">   </xsl:param>
+<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param>
+
+<xsl:param name="nav.icon.path">graphics/navicons/</xsl:param>
+<xsl:param name="nav.icon.extension">.gif</xsl:param>
+
+<!-- styles: folder, folder16, plusminus, triangle, arrow -->
+<xsl:param name="nav.icon.style">triangle</xsl:param>
+
+<xsl:param name="nav.text.spacer"> </xsl:param>
+<xsl:param name="nav.text.current.open">+</xsl:param>
+<xsl:param name="nav.text.current.page">+</xsl:param>
+<xsl:param name="nav.text.other.open"> </xsl:param>
+<xsl:param name="nav.text.other.closed"> </xsl:param>
+<xsl:param name="nav.text.other.page"> </xsl:param>
+
+<xsl:param name="nav.text.pointer"><-</xsl:param>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="toc/title|tocentry/title|titleabbrev">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="toc">
+ <xsl:param name="pageid" select="@id"/>
+
+ <xsl:variable name="relpath">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="homebanner"
+ select="/autolayout/config[@param='homebanner-tabular'][1]"/>
+
+ <xsl:variable name="banner"
+ select="/autolayout/config[@param='banner-tabular'][1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <img align="left" border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$homebanner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$homebanner/@altval"/>
+ </xsl:attribute>
+ </img>
+ <br clear="all"/>
+ <br/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$relpath}{@dir}{$filename-prefix}{@filename}">
+ <img align="left" border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$banner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$banner/@altval"/>
+ </xsl:attribute>
+ </img>
+ </a>
+ <br clear="all"/>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ <br/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="tocentry">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="toclevel" select="count(ancestor::*)"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:variable name="page" select="."/>
+ <xsl:variable name="target"
+ select="($page/descendant-or-self::tocentry[@tocskip = '0']
+ |$page/following::tocentry[@tocskip='0'])[1]"/>
+
+ <xsl:variable name="isdescendant">
+ <xsl:choose>
+ <xsl:when test="ancestor::*[@id=$pageid]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="hasdescendant">
+ <xsl:choose>
+ <xsl:when test="descendant::tocentry != ''">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="isancestor">
+ <xsl:choose>
+ <xsl:when test="descendant::*[@id=$pageid]">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- For any entry in the TOC:
+ 1. It is the current page
+ a. it is a leaf current/leaf
+ b. it is an open page current/open
+ 2. It is not the current page
+ a. it is a leaf other/leaf
+ b. it is an open page other/open
+ c. it is a closed page other/closed
+ -->
+
+ <xsl:variable name="preceding-icon">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$nav.icon.path"/>
+ <xsl:value-of select="$nav.icon.style"/>
+ <xsl:choose>
+ <xsl:when test="$pageid=@id">
+ <xsl:choose>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:text>/current/open</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/current/leaf</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$isancestor != 0">
+ <xsl:text>/other/open</xsl:text>
+ </xsl:when>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:text>/other/closed</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>/other/leaf</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$nav.icon.extension"/>
+ </xsl:variable>
+
+ <xsl:variable name="preceding-text">
+ <xsl:choose>
+ <xsl:when test="$pageid=@id">
+ <xsl:choose>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:value-of select="$nav.text.current.open"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nav.text.current.page"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$isancestor != 0">
+ <xsl:value-of select="$nav.text.other.open"/>
+ </xsl:when>
+ <xsl:when test="$hasdescendant != 0">
+ <xsl:value-of select="$nav.text.other.closed"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$nav.text.other.page"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="following-icon">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$nav.icon.path"/>
+ <xsl:value-of select="$nav.icon.style"/>
+ <xsl:text>/current/pointer</xsl:text>
+ <xsl:value-of select="$nav.icon.extension"/>
+ </xsl:variable>
+
+ <xsl:variable name="following-text">
+ <xsl:value-of select="$nav.text.pointer"/>
+ </xsl:variable>
+
+ <span>
+ <xsl:if test="$toclevel = 2">
+ <xsl:attribute name="class">
+ <xsl:text>toplevel</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$toclevel > 2">
+ <xsl:attribute name="class">
+ <xsl:text>shrink</xsl:text>
+ <xsl:value-of select="$toclevel - 2"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:call-template name="insert.spacers">
+ <xsl:with-param name="count" select="$toclevel - 1"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="$nav.graphics">
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="href" select="@href"/>
+ <xsl:with-param name="page" select="$target"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ <xsl:with-param name="linktext">
+ <img src="{$preceding-icon}" alt="{$preceding-text}" border="0"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$preceding-text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <span class="curpage">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$nav.pointer != '0'">
+ <xsl:value-of select="$nav.text.spacer"/>
+ <xsl:choose>
+ <xsl:when test="$nav.graphics = '1'">
+ <img src="{$following-icon}" alt="{$following-text}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$following-text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </span>
+ <br/>
+ </xsl:when>
+ <xsl:otherwise>
+ <span>
+ <xsl:choose>
+ <xsl:when test="$isdescendant='0'">
+ <xsl:choose>
+ <xsl:when test="$isancestor='1'">
+ <xsl:attribute name="class">ancestor</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="class">otherpage</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- IS a descendant of curpage -->
+ <xsl:attribute name="class">descendant</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="href" select="@href"/>
+ <xsl:with-param name="page" select="$target"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ <xsl:with-param name="linktext">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </span>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+
+ <xsl:if test="$pageid = @id or $isancestor='1'">
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="insert.spacers">
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="relpath"/>
+ <xsl:if test="$count>0">
+ <xsl:choose>
+ <xsl:when test="$nav.graphics != 0">
+ <img src="{$relpath}{$toc.spacer.image}" alt="{$toc.spacer.text}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$toc.spacer.text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="insert.spacers">
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="toc-rel-path">
+ <xsl:call-template name="toc-rel-path"/>
+</xsl:template>
+
+<xsl:template name="toc-rel-path">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:variable name="entry" select="//*[@id=$pageid]"/>
+ <xsl:variable name="filename" select="concat($entry/@dir,$entry/@filename)"/>
+
+ <xsl:variable name="slash-count">
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:choose>
+ <xsl:when test="starts-with($filename, '/')">
+ <xsl:value-of select="$slash-count - 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$slash-count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>
+ <xsl:value-of select="$filename"/>
+ <xsl:text> depth=</xsl:text>
+ <xsl:value-of select="$depth"/>
+ </xsl:message>
+-->
+
+ <xsl:if test="$depth > 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">../</xsl:with-param>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc-directory-depth">
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test='contains($filename,"/")'>
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename"
+ select="substring-after($filename,'/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:param name="max.toc.width" select="7"/>
+
+<xsl:template match="toc/title|tocentry/title|titleabbrev">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="toc">
+ <xsl:param name="pageid" select="@id"/>
+
+ <xsl:variable name="relpath">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="homebanner"
+ select="/autolayout/config[@param='homebanner'][1]"/>
+
+ <xsl:variable name="banner"
+ select="/autolayout/config[@param='banner'][1]"/>
+
+ <xsl:variable name="homebannertext"
+ select="/autolayout/config[@param='homebannertext'][1]"/>
+
+ <xsl:variable name="bannertext"
+ select="/autolayout/config[@param='bannertext'][1]"/>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <xsl:choose>
+ <xsl:when test="$homebanner">
+ <img border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$homebanner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$homebanner/@altval"/>
+ </xsl:attribute>
+ </img>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:when>
+ <xsl:when test="$homebannertext">
+ <xsl:value-of select="$homebannertext/@value"/>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Home</xsl:text>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{$relpath}{@dir}{$filename-prefix}{@filename}">
+ <xsl:choose>
+ <xsl:when test="$banner">
+ <img border="0">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="$banner/@value"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$banner/@altval"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:when test="$bannertext">
+ <xsl:value-of select="$bannertext/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Home</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:text> | </xsl:text>
+
+ <xsl:call-template name="process-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="tocentry">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:if test="preceding-sibling::tocentry">
+ <xsl:text> | </xsl:text>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$pageid = @id">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$currentpage.marker"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:choose>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="toc|tocentry|notoc" mode="toc-rel-path">
+ <xsl:call-template name="toc-rel-path"/>
+</xsl:template>
+
+<xsl:template name="toc-rel-path">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:variable name="entry" select="//*[@id=$pageid]"/>
+ <xsl:variable name="filename" select="concat($entry/@dir,$entry/@filename)"/>
+
+ <xsl:variable name="depth">
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename" select="$filename"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:if test="$depth > 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string">../</xsl:with-param>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="toc-directory-depth">
+ <xsl:param name="filename"></xsl:param>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test='contains($filename,"/")'>
+ <xsl:call-template name="toc-directory-depth">
+ <xsl:with-param name="filename"
+ select="substring-after($filename,'/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-children">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="tocentry[descendant-or-self::*[@id=$pageid]]">
+ <xsl:call-template name="process-tocentry-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="process-toc-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process-tocentry-children">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="count(tocentry) > $max.toc.width">
+ <xsl:variable name="cur"
+ select="tocentry[descendant-or-self::*[@id=$pageid]]"/>
+
+ <xsl:variable name="half" select="$max.toc.width div 2"/>
+
+ <xsl:variable name="all-nodes"
+ select="$cur/preceding-sibling::tocentry[position() < $half]
+ | $cur
+ | $cur/following-sibling::tocentry"/>
+
+ <xsl:variable name="nodes"
+ select="$all-nodes[position() < $max.toc.width]"/>
+
+ <xsl:if test="count($cur/preceding-sibling::tocentry) > $half">
+ <xsl:text>...</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="$nodes">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ <xsl:if test="count($all-nodes) > $max.toc.width">
+ <xsl:text> | ...</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <br/>
+
+ <!-- if the current page isn't in this list, keep digging... -->
+ <xsl:if test="not(tocentry[$pageid=@id])">
+ <xsl:for-each select="tocentry">
+ <xsl:if test="descendant::*[@id=$pageid]">
+ <xsl:call-template name="process-children">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="process-toc-children">
+ <xsl:param name="pageid" select="@id"/>
+ <xsl:param name="relpath" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="count(tocentry) > $max.toc.width">
+ <xsl:variable name="half" select="$max.toc.width div 2"/>
+
+ <xsl:variable name="all-nodes" select="tocentry"/>
+ <xsl:variable name="nodes"
+ select="$all-nodes[position() < $max.toc.width]"/>
+
+ <xsl:apply-templates select="$nodes">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+
+ <xsl:if test="count($all-nodes) > $max.toc.width">
+ <xsl:text> | ...</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="tocentry">
+ <xsl:with-param name="pageid" select="$pageid"/>
+ <xsl:with-param name="relpath" select="$relpath"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <br/>
+</xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:html='http://www.w3.org/1999/xhtml'
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc html"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id$
+ ********************************************************************
+
+ This file is part of the WebSite distribution.
+ See ../README or http://nwalsh.com/website/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/snapshot/html/docbook.xsl"/>
+<xsl:import href="xbel.xsl"/>
+<xsl:include href="VERSION"/>
+<xsl:include href="param.xsl"/>
+<xsl:include href="head.xsl"/>
+
+<xsl:preserve-space elements="*"/>
+<xsl:strip-space elements="website webpage"/>
+
+<xsl:output method="html"
+ indent="no"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ doctype-system="http://www.w3.org/TR/html4/loose.dtd"
+/>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:value-of select="$admon.graphics.path"/>
+ <xsl:choose>
+ <xsl:when test="name($node)='note'">note</xsl:when>
+ <xsl:when test="name($node)='warning'">warning</xsl:when>
+ <xsl:when test="name($node)='caution'">caution</xsl:when>
+ <xsl:when test="name($node)='tip'">tip</xsl:when>
+ <xsl:when test="name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$admon.graphics.extension"/>
+</xsl:template>
+
+<doc:template name="admon.graphic">
+<refpurpose>Select appropriate admonition graphic</refpurpose>
+<refdescription>
+<para>Selects the appropriate admonition graphic file and returns the
+fully qualified path to it.</para>
+</refdescription>
+<refparam>
+<variablelist>
+<varlistentry><term>node</term>
+<listitem>
+<para>The source node to use for the purpose of selection. It should
+be one of the admonition elements (<sgmltag>note</sgmltag>,
+<sgmltag>warning</sgmltag>, etc.). The default node is the context
+node.</para>
+</listitem>
+</varlistentry>
+</variablelist>
+</refparam>
+<refreturns>
+<para>The fully qualified path to the admonition graphic. If the
+<varname>node</varname> is not an admonition element, the
+ <quote>note</quote> graphic is returned.</para>
+</refreturns>
+</doc:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="webpage.table.footer"/>
+
+<xsl:template name="webpage.footer">
+ <xsl:variable name="page" select="."/>
+ <xsl:variable name="rcsdate" select="$page/config[@param='rcsdate']/@value"/>
+ <xsl:variable name="footers" select="$page/config[@param='footer']
+ |$page/config[@param='footlink']"/>
+
+ <xsl:variable name="tocentry" select="$autolayout//*[@id=$page/@id]"/>
+ <xsl:variable name="toc" select="($tocentry/ancestor-or-self::toc[1]
+ | $autolayout//toc[1])[last()]"/>
+
+ <xsl:variable name="feedback">
+ <xsl:choose>
+ <xsl:when test="$page/config[@param='feedback.href']">
+ <xsl:value-of select="($page/config[@param='feedback.href'])[1]/@value"/>
+ </xsl:when>
+ <xsl:when test="$autolayout/autolayout/config[@param='feedback.href']">
+ <xsl:value-of select="($autolayout/autolayout/config[@param='feedback.href'])[1]/@value"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$feedback.href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div class="navfoot">
+ <xsl:if test="$footer.hr != 0"><hr/></xsl:if>
+ <table width="100%" border="0" summary="Footer navigation">
+ <tr>
+ <td width="33%" align="left">
+ <span class="footdate"><xsl:value-of select="$rcsdate"/></span>
+ </td>
+ <td width="34%" align="center">
+ <xsl:choose>
+ <xsl:when test="not($toc)">
+ <xsl:message>
+ <xsl:text>Cannot determine TOC for </xsl:text>
+ <xsl:value-of select="$page/@id"/>
+ </xsl:message>
+ </xsl:when>
+ <xsl:when test="$toc/@id = $page/@id">
+ <!-- nop; this is the home page -->
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="foothome">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="homeuri"/>
+ </xsl:attribute>
+ <xsl:text>Home</xsl:text>
+ </a>
+ <xsl:if test="$footers">
+ <xsl:text> | </xsl:text>
+ </xsl:if>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="$footers" mode="footer.link.mode"/>
+ </td>
+ <td width="33%" align="right">
+ <xsl:choose>
+ <xsl:when test="$feedback != ''">
+ <span class="footfeed">
+ <a>
+ <xsl:choose>
+ <xsl:when test="$feedback.with.ids != 0">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$feedback"/>
+ <xsl:value-of select="$page/@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$feedback"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$feedback.link.text"/>
+ </a>
+ </span>
+ </xsl:when>
+ <xsl:otherwise> </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3" align="right">
+ <span class="footcopy">
+ <xsl:choose>
+ <xsl:when test="head/copyright">
+ <xsl:apply-templates select="head/copyright" mode="footer.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="footer.mode"
+ select="$autolayout/autolayout/copyright"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ </td>
+ </tr>
+ <xsl:if test="$sequential.links != 0">
+ <tr>
+ <xsl:variable name="prev">
+ <xsl:call-template name="prev.page"/>
+ </xsl:variable>
+ <xsl:variable name="next">
+ <xsl:call-template name="next.page"/>
+ </xsl:variable>
+ <xsl:variable name="ptoc"
+ select="$autolayout/autolayout//*[$prev=@id]"/>
+ <xsl:variable name="ntoc"
+ select="$autolayout/autolayout//*[$next=@id]"/>
+
+ <td align="left" valign="top">
+ <xsl:choose>
+ <xsl:when test="$prev != ''">
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="page" select="$ptoc"/>
+ <xsl:with-param name="linktext" select="'Prev'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise> </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td> </td>
+ <td align="right" valign="top">
+ <xsl:choose>
+ <xsl:when test="$next != ''">
+ <xsl:call-template name="link.to.page">
+ <xsl:with-param name="page" select="$ntoc"/>
+ <xsl:with-param name="linktext" select="'Next'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise> </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="config" mode="footer.link.mode">
+ <span class="foothome">
+ <xsl:if test="position() > 1">
+ <xsl:text> | </xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="@param='footlink'">
+ <xsl:variable name="id" select="@value"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:if test="count($tocentry) != 1">
+ <xsl:message>
+ <xsl:text>Footlink to </xsl:text>
+ <xsl:value-of select="$id"/>
+ <xsl:text> does not id a unique page.</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="starts-with($tocentry/@dir, '/')">
+ <xsl:value-of select="substring($tocentry/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tocentry/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:value-of select="$dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$tocentry/@filename"/>
+ </xsl:attribute>
+ <xsl:value-of select="@altval"/>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="{@value}">
+ <xsl:value-of select="@altval"/>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="homeuri">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:variable name="toc" select="$tocentry/ancestor::toc"/>
+ <xsl:variable name="first-toc"
+ select="$autolayout/autolayout/toc[1]"/>
+
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:choose>
+ <xsl:when test="$toc">
+ <xsl:choose>
+ <xsl:when test="starts-with($toc/@dir, '/')">
+ <xsl:value-of select="substring($toc/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$toc/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$toc/@filename"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="starts-with($first-toc/@dir, '/')">
+ <xsl:value-of select="substring($first-toc/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$first-toc/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$first-toc/@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="copyright" mode="footer.mode">
+ <span class="{name(.)}">
+ <xsl:call-template name="gentext.element.name"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="year" mode="footer.mode"/>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="footer.mode"/>
+ <xsl:value-of select="$biblioentry.item.separator"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="year" mode="footer.mode">
+ <xsl:apply-templates/><xsl:text>, </xsl:text>
+</xsl:template>
+
+<xsl:template match="year[position()=last()]" mode="footer.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="holder" mode="footer.mode">
+ <xsl:apply-templates/>
+ <xsl:if test="position() != last()">, </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="config">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="head">
+</xsl:template>
+
+<xsl:template match="head/title" mode="title.mode">
+ <h1><xsl:apply-templates/></h1>
+</xsl:template>
+
+<xsl:template match="head/title">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="directory-depth">
+ <xsl:param name="dir"></xsl:param>
+ <xsl:param name="count" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test='contains($dir,"/")'>
+ <xsl:call-template name="directory-depth">
+ <xsl:with-param name="dir" select="substring-after($dir,'/')"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test='$dir=""'>
+ <xsl:value-of select="$count"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="root-rel-path">
+ <xsl:param name="webpage" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="tocentry" select="$autolayout//*[$webpage/@id=@id]"/>
+ <xsl:apply-templates select="$tocentry" mode="toc-rel-path"/>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="footnote" mode="footnote.number">
+ <xsl:choose>
+ <xsl:when test="ancestor::table|ancestor::informaltable">
+ <xsl:number level="any" from="table|informaltable" format="a"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:number level="any" from="webpage" format="1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="process.footnotes">
+ <!-- we're only interested in footnotes that occur on this page, not
+ on descendants of this page (which will be similarly processed) -->
+ <xsl:variable name="thispage"
+ select="ancestor-or-self::webpage"/>
+ <xsl:variable name="footnotes"
+ select=".//footnote[ancestor-or-self::webpage=$thispage]"/>
+ <xsl:variable name="table.footnotes"
+ select=".//table//footnote[ancestor-or-self::webpage=$thispage]
+ |.//informaltable//footnote[ancestor-or-self::webpage
+ =$thispage]"/>
+
+ <!-- Only bother to do this if there's at least one non-table footnote -->
+ <xsl:if test="count($footnotes)>count($table.footnotes)">
+ <div class="footnotes">
+ <hr width="100" align="left"/>
+ <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="@*" mode="copy">
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="html:*">
+ <xsl:element name="{local-name(.)}" namespace="">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="rddl:*" xmlns:rddl='http://www.rddl.org/'>
+ <xsl:element name="{name(.)}">
+ <xsl:apply-templates select="@*" mode="copy"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="section[@rddl]" xmlns:rddl='http://www.rddl.org/'>
+ <xsl:variable name="rddl" select="id(@rddl)"/>
+ <xsl:choose>
+ <xsl:when test="local-name($rddl) != 'resource'">
+ <xsl:message>
+ <xsl:text>Warning: section rddl isn't an rddl:resource: </xsl:text>
+ <xsl:value-of select="@rddl"/>
+ </xsl:message>
+ <xsl:apply-imports/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{name($rddl)}">
+ <xsl:apply-templates select="$rddl/@*" mode="copy"/>
+ <xsl:apply-imports/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="olink">
+ <xsl:variable name="xmlfile"
+ select="document(unparsed-entity-uri(@targetdocent),$autolayout)"/>
+ <xsl:variable name="webpage"
+ select="$xmlfile/webpage"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[$webpage/@id=@id]"/>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="starts-with($tocentry/@dir, '/')">
+ <xsl:value-of select="substring($tocentry/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tocentry/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+<!--
+ <xsl:message>Olink for <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/></xsl:message>
+ <xsl:message>Page id <xsl:value-of select="$webpage/@id"/></xsl:message>
+-->
+
+ <xsl:choose>
+ <xsl:when test="@type = 'embed'">
+ <xsl:apply-templates select="$xmlfile"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- @type = 'replace' or @type = 'new' -->
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+<!--
+ <xsl:message>
+ <xsl:text>href: </xsl:text>
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$dir"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:text>::</xsl:text>
+ <xsl:value-of select="$tocentry/@filename"/>
+ <xsl:text>::</xsl:text>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:message>
+-->
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="root-rel-path"/>
+ <xsl:value-of select="$dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="$tocentry/@filename"/>
+ <xsl:if test="@localinfo">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@localinfo"/>
+ </xsl:if>
+ </xsl:attribute>
+
+ <xsl:if test="@type = 'new'">
+ <xsl:attribute name="target">_blank</xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="count(node()) = 0">
+ <xsl:apply-templates select="$webpage/head/title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="link.to.page">
+ <xsl:param name="href" select="''"/>
+ <xsl:param name="page" select="ancestor-or-self::tocentry"/>
+ <xsl:param name="linktext" select="'???'"/>
+ <xsl:param name="relpath">
+ <xsl:call-template name="toc-rel-path">
+ <xsl:with-param name="pageid" select="$page/@id"/>
+ </xsl:call-template>
+ </xsl:param>
+
+ <xsl:variable name="dir">
+ <xsl:choose>
+ <xsl:when test="starts-with($page/@dir, '/')">
+ <xsl:value-of select="substring($page/@dir, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$page/@dir"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="html.href">
+ <xsl:choose>
+ <xsl:when test="$href != ''">
+ <xsl:value-of select="$href"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($relpath,$dir,$filename-prefix)"/>
+ <xsl:value-of select="$page/@filename"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <a href="{$html.href}">
+ <xsl:if test="summary">
+ <xsl:attribute name="title">
+ <xsl:value-of select="summary"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:copy-of select="$linktext"/>
+ </a>
+</xsl:template>
+
+
+<xsl:template name="next.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:variable name="next-following"
+ select="$tocentry/following::tocentry[1]"/>
+ <xsl:variable name="next-child"
+ select="$tocentry/descendant::tocentry[1]"/>
+
+ <xsl:variable name="nextid">
+ <xsl:choose>
+ <xsl:when test="$next-child">
+ <xsl:value-of select="$next-child/@id"/>
+ </xsl:when>
+ <xsl:when test="$next-following">
+ <xsl:value-of select="$next-following/@id"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$nextid"/>
+</xsl:template>
+
+<xsl:template name="prev.page">
+ <xsl:param name="page" select="ancestor-or-self::webpage"/>
+ <xsl:variable name="id" select="$page/@id"/>
+ <xsl:variable name="tocentry"
+ select="$autolayout//*[@id=$id]"/>
+ <xsl:variable name="prev-ancestor"
+ select="($tocentry/ancestor::tocentry
+ |$tocentry/ancestor::toc)[last()]"/>
+ <xsl:variable name="prev-sibling"
+ select="$tocentry/preceding-sibling::tocentry[1]"/>
+
+ <xsl:variable name="previd">
+ <xsl:choose>
+ <xsl:when test="$prev-sibling">
+ <xsl:value-of select="$prev-sibling/@id"/>
+ </xsl:when>
+ <xsl:when test="$prev-ancestor">
+ <xsl:value-of select="$prev-ancestor/@id"/>
+ </xsl:when>
+ <xsl:otherwise></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$previd"/>
+</xsl:template>
+
+</xsl:stylesheet>
<!-- ==================================================================== -->
-<xsl:import href="/share/xsl/docbook/xhtml/docbook.xsl"/>
-<xsl:import href="xbel.xsl"/>
-<xsl:include href="VERSION"/>
-<xsl:include href="head.xsl"/>
+<xsl:include href="website-common.xsl"/>
+<xsl:include href="toc.xsl"/>
-<xsl:param name="using.chunker">1</xsl:param>
-
-<xsl:preserve-space elements="*"/>
-<xsl:strip-space elements="website homepage webpage"/>
-
-<xsl:output method="xml"
+<xsl:output method="html"
indent="no"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html4/loose.dtd"
/>
-<!-- ==================================================================== -->
-
-<xsl:param name="footer.hr" select="1"/>
-
-<doc:param name="footer.hr" xmlns="">
-<refpurpose>Toggle <HR> before footer</refpurpose>
-<refdescription>
-<para>If non-zero, an <HR> is generated at the bottom of each web page,
-before the footer.</para>
-</refdescription>
-</doc:param>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="feedback.href"></xsl:param>
-
-<doc:param name="feedback.href" xmlns="">
-<refpurpose>HREF for feedback link</refpurpose>
-<refdescription>
-<para>The <varname>feedback.href</varname> value is used as the value
-for the <sgmltag class="attribute">href</sgmltag> attribute on the feedback
-link, if it is not the empty string. If <varname>feedback.href</varname>
-is empty, no feedback link is generated.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="feedback.title" select="0"/>
-
-<doc:param name="feedback.title" xmlns="">
-<refpurpose>Toggle use of titles in feedback</refpurpose>
-<refdescription>
-<para>If <varname>feedback.title</varname> is non-zero, the title of the
-current page will be added to the feedback link. This can be used, for
-example, if the <varname>feedback.href</varname> is a CGI script.</para>
-</refdescription>
-</doc:param>
-
-<xsl:param name="feedback.link.text">Feedback</xsl:param>
-
-<doc:param name="feedback.link.text" xmlns="">
-<refpurpose>The text of the feedback link</refpurpose>
-<refdescription>
-<para>The contents of this variable is used as the text of the feedback
-link if <varname>feedback.href</varname> is not empty. If
-<varname>feedback.href</varname> is empty, no feedback link is
-generated.</para>
-</refdescription>
-</doc:param>
-
-<!-- ==================================================================== -->
-
-<xsl:template name="admon.graphic">
- <xsl:param name="node" select="."/>
- <xsl:call-template name="root-rel-path"/>
- <xsl:value-of select="$admon.graphics.path"/>
- <xsl:choose>
- <xsl:when test="name($node)='note'">note</xsl:when>
- <xsl:when test="name($node)='warning'">warning</xsl:when>
- <xsl:when test="name($node)='caution'">caution</xsl:when>
- <xsl:when test="name($node)='tip'">tip</xsl:when>
- <xsl:when test="name($node)='important'">important</xsl:when>
- <xsl:otherwise>note</xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$admon.graphics.extension"/>
-</xsl:template>
-
-<doc:template name="admon.graphic">
-<refpurpose>Select appropriate admonition graphic</refpurpose>
-<refdescription>
-<para>Selects the appropriate admonition graphic file and returns the
-fully qualified path to it.</para>
-</refdescription>
-<refparam>
-<variablelist>
-<varlistentry><term>node</term>
-<listitem>
-<para>The source node to use for the purpose of selection. It should
-be one of the admonition elements (<sgmltag>note</sgmltag>,
-<sgmltag>warning</sgmltag>, etc.). The default node is the context
-node.</para>
-</listitem>
-</varlistentry>
-</variablelist>
-</refparam>
-<refreturns>
-<para>The fully qualified path to the admonition graphic. If the
-<varname>node</varname> is not an admonition element, the
- <quote>note</quote> graphic is returned.</para>
-</refreturns>
-</doc:template>
+<xsl:param name="autolayout" select="document($autolayout-file,/*[1])"/>
-<!-- ==================================================================== -->
-
-<xsl:template match="/">
- <html>
- <head>
- <title>nothing matters here since the chunker reworks the head</title>
- </head>
- <body>
- <xsl:apply-templates/>
- </body>
- </html>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="website">
- <xsl:apply-templates/>
-</xsl:template>
+<xsl:attribute-set name="body.attributes"/>
<!-- ==================================================================== -->
-<xsl:template name="home.navhead">
- <div class="navhomehead">
- <div class="navbar">
- <xsl:text>Home</xsl:text>
- <xsl:text>@</xsl:text>
- <xsl:call-template name="webpage.header">
- <xsl:with-param name="thispage" select="."/>
- <xsl:with-param name="pages" select="/website/webpage"/>
- <xsl:with-param name="text.before"> | </xsl:with-param>
- </xsl:call-template>
- <hr/>
- </div>
- </div>
-</xsl:template>
-
-<xsl:template match="homepage">
+<xsl:template match="webpage">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
-
- <xsl:call-template name="home.navhead"/>
-
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
-
- <xsl:apply-templates/>
-
- <xsl:call-template name="process.footnotes"/>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
-</xsl:template>
-
-<xsl:template name="page.navhead">
- <div class="navhead">
- <div class="navbar">
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="object" select="/website/homepage"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text>Home</xsl:text>
- </a>
- <xsl:call-template name="webpage.header">
- <xsl:with-param name="thispage" select="."/>
- <xsl:with-param name="pages" select="/website/webpage"/>
- <xsl:with-param name="text.before"> | </xsl:with-param>
- </xsl:call-template>
- </div>
-
- <div class="navbar">
- <xsl:if test="ancestor::webpage">
- <xsl:call-template name="webpage.subheaders">
- <xsl:with-param name="pages" select="ancestor::webpage"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="./head/title[1]" mode="toc.mode"/>
- <xsl:text>@</xsl:text>
- </xsl:if>
-
- <hr/>
- </div>
- </div>
-</xsl:template>
-
-<xsl:template match="webpage">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
+ <xsl:variable name="filename">
+ <xsl:apply-templates select="." mode="filename"/>
+ </xsl:variable>
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
+ <xsl:variable name="tocentry" select="$autolayout/autolayout//*[$id=@id]"/>
+ <xsl:variable name="toc" select="$tocentry/ancestor-or-self::toc"/>
+ <html>
<xsl:apply-templates select="head" mode="head.mode"/>
<xsl:apply-templates select="config" mode="head.mode"/>
+ <body xsl:use-attribute-sets="body.attributes">
+
+ <div id="{$id}" class="{name(.)}">
+ <a name="{$id}"/>
+
+ <xsl:if test="$toc">
+ <div class="navhead">
+ <xsl:apply-templates select="$toc">
+ <xsl:with-param name="pageid" select="@id"/>
+ </xsl:apply-templates>
+ <xsl:if test="$header.hr != 0"><hr/></xsl:if>
+ </div>
+ </xsl:if>
- <xsl:call-template name="page.navhead"/>
-
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
-
- <xsl:apply-templates/>
-
- <xsl:call-template name="process.footnotes"/>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
-</xsl:template>
+ <xsl:apply-templates select="./head/title" mode="title.mode"/>
-<xsl:template name="webpage.subheaders">
- <xsl:param name="pages"></xsl:param>
- <xsl:param name="count" select="count($pages)"/>
+ <xsl:apply-templates select="child::*[name(.)!='webpage']"/>
- <xsl:call-template name="webpage.header">
- <xsl:with-param name="thispage" select="pages[$count=position()]"/>
- <xsl:with-param name="pages" select="$pages"/>
- <xsl:with-param name="text.after"> - </xsl:with-param>
- </xsl:call-template>
-</xsl:template>
+ <xsl:call-template name="process.footnotes"/>
-<xsl:template name="webpage.header">
- <xsl:param name="thispage" select="."/>
- <xsl:param name="pages"></xsl:param>
- <xsl:param name="text.before"></xsl:param>
- <xsl:param name="text.after"></xsl:param>
- <xsl:param name="count" select="1"/>
- <xsl:choose>
- <xsl:when test="$count>count($pages)"></xsl:when>
- <xsl:otherwise>
- <xsl:variable name="curpage" select="$pages[$count=position()]"/>
- <xsl:variable name="title">
- <xsl:apply-templates select="$curpage/head/title[1]" mode="toc.mode"/>
- </xsl:variable>
-
- <xsl:value-of select="$text.before"/>
- <xsl:choose>
- <xsl:when test="$thispage=$curpage">
- <xsl:copy-of select="$title"/>
- <xsl:text>@</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="object" select="$curpage"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:copy-of select="$title"/>
- </a>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$text.after"/>
- <xsl:call-template name="webpage.header">
- <xsl:with-param name="thispage" select="$thispage"/>
- <xsl:with-param name="pages" select="$pages"/>
- <xsl:with-param name="text.before" select="$text.before"/>
- <xsl:with-param name="text.after" select="$text.after"/>
- <xsl:with-param name="count" select="$count+1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:call-template name="webpage.footer"/>
+ </div>
+ </body>
+ </html>
</xsl:template>
-<!-- ============================================================ -->
+<!-- ==================================================================== -->
-<xsl:template name="webpage.footer">
- <xsl:variable name="page" select="."/>
- <xsl:variable name="rcsdate" select="$page/config[@param='rcsdate']/@value"/>
- <xsl:variable name="title">
- <xsl:value-of select="$page/head/title[1]"/>
+<xsl:template match="webtoc">
+ <xsl:variable name="webpage" select="ancestor::webpage"/>
+ <xsl:variable name="relpath">
+ <xsl:call-template name="root-rel-path">
+ <xsl:with-param name="webpage" select="$webpage"/>
+ </xsl:call-template>
</xsl:variable>
- <xsl:variable name="footers" select="$page/config[@param='footer']"/>
- <xsl:variable name="copyright" select="/website/homepage/head/copyright[1]"/>
+ <xsl:variable name="pageid" select="$webpage/@id"/>
+
+ <xsl:variable name="pages"
+ select="$autolayout//*[$pageid=@id]/tocentry"/>
- <div class="navfoot">
- <xsl:if test="$footer.hr != 0"><hr/></xsl:if>
- <table width="100%" border="0" summary="Footer navigation">
- <tr>
- <td width="33%" align="left">
- <span class="footdate"><xsl:value-of select="$rcsdate"/></span>
- </td>
- <td width="34%" align="center">
- <xsl:variable name="id">
- <xsl:call-template name="object.id">
- <xsl:with-param name="object" select="/website/homepage"/>
- </xsl:call-template>
- </xsl:variable>
- <span class="foothome">
+ <xsl:if test="count($pages) > 0">
+ <ul class="toc">
+ <xsl:for-each select="$pages">
+ <li>
<a>
<xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="object" select="/website/homepage"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text>Home</xsl:text>
- </a>
- </span>
-
- <xsl:apply-templates select="$footers" mode="footer.link.mode"/>
- </td>
- <td width="33%" align="right">
- <span class="footfeed">
- <xsl:if test="$feedback.href != ''">
- <a>
<xsl:choose>
- <xsl:when test="$feedback.title != 0">
- <xsl:attribute name="href">
- <xsl:value-of select="$feedback.href"/>
- <xsl:value-of select="$title"/>
- </xsl:attribute>
+ <xsl:when test="@href">
+ <xsl:value-of select="@href"/>
</xsl:when>
<xsl:otherwise>
- <xsl:attribute name="href">
- <xsl:value-of select="$feedback.href"/>
- </xsl:attribute>
+ <xsl:value-of select="$relpath"/>
+ <xsl:value-of select="@dir"/>
+ <xsl:value-of select="$filename-prefix"/>
+ <xsl:value-of select="@filename"/>
</xsl:otherwise>
</xsl:choose>
- <xsl:value-of select="$feedback.link.text"/>
- </a>
+ </xsl:attribute>
+ <xsl:apply-templates select="title"/>
+ </a>
+ <xsl:if test="summary">
+ <xsl:text>--</xsl:text>
+ <xsl:apply-templates select="summary"/>
</xsl:if>
- </span>
- </td>
- </tr>
- <tr>
- <td colspan="3" align="right">
- <span class="footcopy">
- <xsl:apply-templates select="$copyright" mode="footer.mode"/>
- </span>
- </td>
- </tr>
- </table>
- </div>
-</xsl:template>
-
-<xsl:template match="config" mode="footer.link.mode">
- <span class="foothome">
- <xsl:text> | </xsl:text>
- <a href="{@value}"><xsl:value-of select="@altval"/></a>
- </span>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="copyright" mode="footer.mode">
- <span class="{name(.)}">
- <xsl:call-template name="gentext.element.name"/>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="dingbat">
- <xsl:with-param name="dingbat">copyright</xsl:with-param>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:apply-templates select="year" mode="footer.mode"/>
- <xsl:call-template name="gentext.space"/>
- <xsl:apply-templates select="holder" mode="footer.mode"/>
- <xsl:value-of select="$biblioentry.item.separator"/>
- </span>
-</xsl:template>
-
-<xsl:template match="year" mode="footer.mode">
- <xsl:apply-templates/><xsl:text>, </xsl:text>
-</xsl:template>
-
-<xsl:template match="year[position()=last()]" mode="footer.mode">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="holder" mode="footer.mode">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="holder[@role]" mode="footer.mode">
- <a href="{@role}">
- <xsl:apply-templates/>
- </a>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="config">
-</xsl:template>
-
-<xsl:template match="config[@param='filename']" mode="head.mode">
- <xsl:variable name="dir" select="../config[@param='dir']"/>
- <xsl:if test="$using.chunker = '1'">
- <xsl:choose>
- <xsl:when test="$dir">
- <xsl:processing-instruction name="dbhtml">
- <xsl:text>filename="</xsl:text>
- <xsl:value-of select="$dir/@value"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="@value"/>
- <xsl:text>"</xsl:text>
- </xsl:processing-instruction>
- </xsl:when>
- <xsl:otherwise>
- <xsl:processing-instruction name="dbhtml">
- <xsl:text>filename="</xsl:text>
- <xsl:value-of select="@value"/>
- <xsl:text>"</xsl:text>
- </xsl:processing-instruction>
- </xsl:otherwise>
- </xsl:choose>
+ </li>
+ </xsl:for-each>
+ </ul>
</xsl:if>
</xsl:template>
-<!-- ============================================================ -->
-
-<xsl:template match="head">
-</xsl:template>
-
-<xsl:template match="head/title" mode="title.mode">
- <h1><xsl:apply-templates/></h1>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template name="directory-depth">
- <xsl:param name="dir"></xsl:param>
- <xsl:param name="count" select="0"/>
-
- <xsl:choose>
- <xsl:when test='contains($dir,"/")'>
- <xsl:call-template name="directory-depth">
- <xsl:with-param name="dir" select="substring-after($dir,'/')"/>
- <xsl:with-param name="count" select="$count + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test='$dir=""'>
- <xsl:value-of select="$count"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$count + 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="root-rel-path">
- <xsl:param name="webpage" select="ancestor-or-self::webpage"/>
- <xsl:variable name="dir" select="$webpage[last()]/config[@param='dir']"/>
- <xsl:variable name="depth">
- <xsl:call-template name="directory-depth">
- <xsl:with-param name="dir" select="$dir/@value"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$dir">
- <xsl:call-template name="copy-string">
- <xsl:with-param name="string">../</xsl:with-param>
- <xsl:with-param name="count" select="$depth"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template match="webtoc">
- <xsl:choose>
- <xsl:when test="ancestor::homepage">
- <xsl:call-template name="toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- <xsl:with-param name="from-page"
- select="(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="toc">
- <xsl:with-param name="pages" select="ancestor::webpage[1]/webpage"/>
- <xsl:with-param name="from-page"
- select="(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="toc">
- <xsl:param name="pages"></xsl:param>
- <xsl:param name="from-page"></xsl:param>
- <ul>
- <xsl:apply-templates select="$pages" mode="toc.mode">
- <xsl:with-param name="from-page" select="$from-page"/>
- </xsl:apply-templates>
- </ul>
-</xsl:template>
-
-<xsl:template match="webpage" mode="toc.mode">
- <xsl:variable name="notoc" select="config[@param='notoc']/@value"/>
- <xsl:param name="from-page"></xsl:param>
-
- <xsl:choose>
- <xsl:when test="$notoc='1'">
-<!--
- <xsl:message>
- <xsl:text>Not in TOC: </xsl:text>
- <xsl:value-of select="head/title"/>
- </xsl:message>
--->
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="title" select="./head/title[1]"/>
- <xsl:variable name="summary" select="./head/summary[1]"/>
- <li>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="from-page" select="$from-page"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:apply-templates select="$title" mode="toc.mode"/>
- </a>
- <xsl:if test="$summary">
- <xsl:text> - </xsl:text>
- <xsl:apply-templates select="$summary" mode="toc.mode"/>
- </xsl:if>
- </li>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="title" mode="toc.mode">
+<xsl:template match="toc/summary|tocentry/summary|notoc/summary">
<xsl:apply-templates/>
</xsl:template>
-<xsl:template match="summary" mode="toc.mode">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="titleabbrev">
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="footnote" mode="footnote.number">
- <xsl:choose>
- <xsl:when test="ancestor::table|ancestor::informaltable">
- <xsl:number level="any" from="table|informaltable" format="a"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:number level="any" from="webpage|homepage" format="1"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="process.footnotes">
- <!-- we're only interested in footnotes that occur on this page, not
- on descendants of this page (which will be similarly processed) -->
- <xsl:variable name="thispage"
- select="(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]"/>
- <xsl:variable name="footnotes"
- select=".//footnote[(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]
- =$thispage]"/>
- <xsl:variable name="table.footnotes"
- select=".//table//footnote[(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]
- =$thispage]
- |.//informaltable//footnote[(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]
- =$thispage]"/>
-
- <!-- Only bother to do this if there's at least one non-table footnote -->
- <xsl:if test="count($footnotes)>count($table.footnotes)">
- <div class="footnotes">
- <hr width="100" align="left"/>
- <xsl:apply-templates select="$footnotes" mode="process.footnote.mode"/>
- </div>
- </xsl:if>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="xlink">
- <xsl:choose>
- <xsl:when test="@actuate='auto'">
- <xsl:choose>
- <xsl:when test="@role='dynamic'">
- <xsl:apply-templates select="document(@href,.)" mode="dynamic"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="document(@href,.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="@role='olink'">
- <a href="/cgi-bin/olink?{@href}"><xsl:apply-templates/></a>
- </xsl:when>
- <xsl:otherwise>
- <a href="{@href}"><xsl:apply-templates/></a>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="olink">
- <xsl:text disable-output-escaping="yes"></p></xsl:text>
- <xsl:apply-templates select="document(unparsed-entity-uri(@targetdocent),.)"/>
- <xsl:text disable-output-escaping="yes"><p></xsl:text>
-</xsl:template>
-
-<xsl:template match="html:*">
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
<!-- ==================================================================== -->
</xsl:stylesheet>
+++ /dev/null
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:html='http://www.w3.org/1999/xhtml'
- xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
- version="1.0"
- exclude-result-prefixes="html doc">
-
-<!-- ********************************************************************
- $Id$
- ******************************************************************** -->
-
-<xsl:import href="tabular.xsl"/>
-<xsl:include href="/share/xsl/docbook/html/xtchunker.xsl"/>
-
-<xsl:output method="html"
- encoding="iso-8859-1"
-/>
-
-<!-- ==================================================================== -->
-
-<xsl:param name="using.chunker">0</xsl:param>
-
-<xsl:template match="/">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="website">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="filename">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <!-- Note that we can't call apply-imports in here because we must -->
- <!-- process webpage children *outside* of xt:document or interior -->
- <!-- webpages inherit the directory specified on their parent as -->
- <!-- their default base directory. Which is not the intended -->
- <!-- semantic. -->
-
- <xsl:variable name="page-content">
- <html>
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
- <body>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <xsl:if test="$nav.table.summary!=''">
- <xsl:attribute name="summary">
- <xsl:value-of select="$nav.table.summary"/>
- </xsl:attribute>
- </xsl:if>
- <tr>
- <td width="{$navtocwidth}" bgcolor="{$navbgcolor}"
- valign="top" align="left" rowspan="3">
- <p class="navtoc">
- <xsl:call-template name="nav.toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- </xsl:call-template>
- </p>
- </td>
- <td valign="bottom" bgcolor="{$textbgcolor}"> </td>
- <td align="left" valign="bottom" bgcolor="{$textbgcolor}"
- height="35">
- <xsl:call-template name="home.navhead"/>
- </td>
- <td align="center" valign="bottom" bgcolor="{$textbgcolor}"
- height="35">
- <xsl:call-template name="home.navhead.upperright"/>
- </td>
- </tr>
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:if test="$footer.hr != '0'"><hr/></xsl:if>
- </td>
- </tr>
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:apply-templates select="child::*[name(.) != 'webpage']"/>
- <xsl:call-template name="process.footnotes"/>
- </td>
- </tr>
-
- <xsl:if test="$footer.spans.page = '0'">
- <tr>
- <td bgcolor="{$textbgcolor}"> </td>
- <td colspan="2" bgcolor="{$textbgcolor}">
- <xsl:call-template name="webpage.footer"/>
- </td>
- </tr>
- </xsl:if>
-
- </table>
-
- <xsl:if test="$footer.spans.page != '0'">
- <xsl:call-template name="webpage.footer"/>
- </xsl:if>
- </div>
- </body>
- </html>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="method" select="'html'"/>
- <xsl:with-param name="encoding" select="'ISO-8859-1'"/>
- <xsl:with-param name="content" select="$page-content"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="webpage"/>
-
-</xsl:template>
-
-<xsl:template match="webpage">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
-
- <xsl:variable name="relpath">
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="."/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="filename">
- <xsl:apply-templates select="." mode="filename"/>
- </xsl:variable>
-
- <!-- Note that we can't call apply-imports in here because we must -->
- <!-- process webpage children *outside* of xt:document or interior -->
- <!-- webpages inherit the directory specified on their parent as -->
- <!-- their default base directory. Which is not the intended -->
- <!-- semantic. -->
-
- <xsl:variable name="page-content">
- <html>
- <xsl:apply-templates select="head" mode="head.mode"/>
- <xsl:apply-templates select="config" mode="head.mode"/>
- <body>
-
- <div id="{$id}" class="{name(.)}">
- <a name="{$id}"/>
-
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <xsl:if test="$nav.table.summary!=''">
- <xsl:attribute name="summary">
- <xsl:value-of select="$nav.table.summary"/>
- </xsl:attribute>
- </xsl:if>
- <tr>
- <td width="{$navtocwidth}" bgcolor="{$navbgcolor}"
- valign="top" align="left">
- <p class="navtoc">
- <xsl:call-template name="nav.toc">
- <xsl:with-param name="pages" select="/website/webpage"/>
- </xsl:call-template>
- </p>
- </td>
- <td bgcolor="{$textbgcolor}"> </td>
- <td align="left" valign="top" bgcolor="{$textbgcolor}">
- <xsl:apply-templates select="./head/title" mode="title.mode"/>
- <xsl:apply-templates select="child::*[name(.) != 'webpage']"/>
- <xsl:call-template name="process.footnotes"/>
- <br/>
- </td>
- </tr>
- </table>
-
- <xsl:call-template name="webpage.footer"/>
- </div>
-
- </body>
- </html>
- </xsl:variable>
-
- <xsl:call-template name="write.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="method" select="'html'"/>
- <xsl:with-param name="encoding" select="'ISO-8859-1'"/>
- <xsl:with-param name="content" select="$page-content"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="webpage"/>
-
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-<xsl:template match="homepage|webpage" mode="filename">
- <xsl:variable name="dir">
- <xsl:choose>
- <xsl:when test="config[@param='dir']/@value">
- <xsl:value-of select="config[@param='dir']/@value"/>
- <xsl:text>/</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="fname">
- <xsl:choose>
- <xsl:when test="config[@param='filename']/@value">
- <xsl:value-of select="config[@param='filename']/@value"/>
- </xsl:when>
- <xsl:otherwise>index.html</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($dir, $fname)"/>
-</xsl:template>
-
-<xsl:template name="href.target">
- <xsl:param name="object" select="."/>
- <xsl:param name="from-page" select="(ancestor-or-self::webpage
- |ancestor-or-self::homepage)[last()]"/>
-
- <xsl:variable name="ischunk">
- <xsl:if test="local-name($object) = 'webpage'
- or local-name($object) = 'homepage'">1</xsl:if>
- <xsl:text>0</xsl:text>
- </xsl:variable>
- <xsl:variable name="chunk" select="($object/ancestor-or-self::webpage
- |$object/ancestor-or-self::homepage)[last()]"/>
-
- <xsl:call-template name="root-rel-path">
- <xsl:with-param name="webpage" select="$from-page"/>
- </xsl:call-template>
- <xsl:apply-templates select="$chunk" mode="filename"/>
-
- <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="html:*">
- <xsl:element name="{local-name(.)}" namespace="">
- <xsl:apply-templates select="@*" mode="copy"/>
- <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="@*" mode="copy">
- <xsl:attribute name="{local-name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
-</xsl:stylesheet>
+++ /dev/null
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:html='http://www.w3.org/1999/xhtml'
- xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
- version="1.0"
- exclude-result-prefixes="html doc">
-
-<!-- ********************************************************************
- $Id$
- ******************************************************************** -->
-
-<xsl:import href="chunk-website-common.xsl"/>
-<xsl:include href="/share/xsl/docbook/html/xtchunker.xsl"/>
-
-<xsl:output method="html"
- encoding="iso-8859-1"
-/>
-
-</xsl:stylesheet>