This commit was manufactured by cvs2svn to create tag
'xalan_2_0_D04'.

git-svn-id: https://svn.apache.org/repos/asf/xalan/java/tags/xalan_2_0_D04@334065 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/samples/DOM2DOM/DOM2DOM.java b/samples/DOM2DOM/DOM2DOM.java
deleted file mode 100644
index be55ec5..0000000
--- a/samples/DOM2DOM/DOM2DOM.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgment may appear in the software itself,
- *    if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xalan" and "Apache Software Foundation" must
- *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- *    nor may "Apache" appear in their name, without prior written
- *    permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, Lotus
- * Development Corporation., http://www.lotus.com.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-// Imported TraX classes
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.dom.DOMResult;
-
-// Imported java.io classes
-import java.io.IOException;
-import java.io.FileNotFoundException;
-
-// Imported SAX classes
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-// Imported DOM classes
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-// Imported Serializer classes
-import org.apache.xalan.serialize.Serializer;
-import org.apache.xalan.serialize.SerializerFactory;
-
-import org.apache.xalan.templates.OutputProperties;
-
-// Imported JAVA API for XML Parsing classes
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException; 
-
-  /**
-   * Show how to transform a DOM tree into another DOM tree.  
-   * This uses the javax.xml.parsers to parse an XML file into a 
-   * DOM, and create an output DOM.
-   */
-public class DOM2DOM
-{
-	public static void main(String[] args)
-    throws TransformerException, TransformerConfigurationException, FileNotFoundException,
-           ParserConfigurationException, SAXException, IOException
-  {    
-	  TransformerFactory tFactory = TransformerFactory.newInstance();
-
-    if(tFactory.getFeature(DOMSource.FEATURE) && tFactory.getFeature(DOMResult.FEATURE))
-    {
-      // Process the stylesheet StreamSource and generate a Transformer.
-      Transformer transformer = tFactory.newTransformer(new StreamSource("birds.xsl"));
-      
-      //Instantiate a DocumentBuilderFactory.
-      DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
-      
-      //Use the DocumentBuilderFactory to create a DocumentBuilder.
-      DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
-      
-      //Use the DocumentBuilder to parse the XML input.
-      Document doc = dBuilder.parse("birds.xml");
-      
-      // Use the DOM Document to define a DOMSource object.
-      DOMSource domSource = new DOMSource(doc);
-      
-      // Set the base URI for the DOMSource so any relative URIs it contains can
-      // be resolved.
-      domSource.setSystemId("birds.xml");
-      
-      // Create an empty DOMResult for the Result.
-      DOMResult domResult = new DOMResult();
-  
-  	  // Perform the transformation, placing the output in the DOMResult.
-      transformer.transform(domSource, domResult);
-	  
-	    //Instantiate an XML serializer and use it to serialize the output DOM to System.out
-	    // using a default output format.
-      Serializer serializer = SerializerFactory.getSerializer
-                                   (OutputProperties.getDefaultMethodProperties("xml"));
-      serializer.setOutputStream(System.out);
-      serializer.asDOMSerializer().serialize(domResult.getNode());
-	}
-    else
-    {
-      throw new org.xml.sax.SAXNotSupportedException("DOM node processing not supported!");
-    }
-  }
-}
diff --git a/samples/DOM2DOM/birds.xml b/samples/DOM2DOM/birds.xml
deleted file mode 100644
index 7027642..0000000
--- a/samples/DOM2DOM/birds.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Class>
-<Order Name="TINAMIFORMES">
-        <Family Name="TINAMIDAE">
-            <Species Scientific_Name="Tinamus major">  Great Tinamou.</Species>
-            <Species Scientific_Name="Nothocercus">Highland Tinamou.</Species>
-            <Species Scientific_Name="Crypturellus soui">Little Tinamou.</Species>
-            <Species Scientific_Name="Crypturellus cinnamomeus">Thicket Tinamou.</Species>
-            <Species Scientific_Name="Crypturellus boucardi">Slaty-breasted Tinamou.</Species>
-            <Species Scientific_Name="Crypturellus kerriae">Choco Tinamou.</Species>
-        </Family>
-    </Order>
-<Order Name="GAVIIFORMES">
-        <Family Name="GAVIIDAE">
-            <Species Scientific_Name="Gavia stellata">Red-throated Loon.</Species>
-            <Species Scientific_Name="Gavia arctica">Arctic Loon.</Species>
-            <Species Scientific_Name="Gavia pacifica">Pacific Loon.</Species>
-            <Species Scientific_Name="Gavia immer">Common Loon.</Species>
-            <Species Scientific_Name="Gavia adamsii">Yellow-billed Loon.</Species>
-        </Family>
-    </Order>
-
-
-<Order Name="PODICIPEDIFORMES">
-        <Family Name="PODICIPEDIDAE">
-            <Species Scientific_Name="Tachybaptus dominicus">Least Grebe.</Species>
-            <Species Scientific_Name="Podilymbus podiceps">Pied-billed Grebe.</Species>
-            <Species Scientific_Name="">Atitlan Grebe.</Species>
-            <Species Scientific_Name="">Horned Grebe.</Species>
-            <Species Scientific_Name="">Red-necked Grebe.</Species>
-            <Species Scientific_Name="">Eared Grebe.</Species>
-            <Species Scientific_Name="">Western Grebe.</Species>
-            <Species Scientific_Name="">Clark's Grebe.</Species>
-            <Species Scientific_Name=""/>
-        </Family>
-    </Order>
-
-
-<Order Name="PROCELLARIIFORMES">
-        <Family Name="DIOMEDEIDAE">
-            <Species Scientific_Name="Thalassarche chlororhynchos">Yellow-nosed Albatross. (A)</Species>
-            <Species Scientific_Name="Thalassarche cauta">Shy Albatross. (A)</Species>
-            <Species Scientific_Name="Thalassarche melanophris">Black-browed Albatross. (A)</Species>
-            <Species Scientific_Name="Phoebetria palpebrata">Light-mantled Albatross. (A)</Species>
-            <Species Scientific_Name="Diomedea exulans">Wandering Albatross. (A)</Species>
-            <Species Scientific_Name="Phoebastria immutabilis">Laysan Albatross.</Species>
-            <Species Scientific_Name="Phoebastria nigripes">Black-footed Albatross.</Species>
-            <Species Scientific_Name="Phoebastria albatrus">Short-tailed Albatross. (N)</Species>
-        </Family>
-        <Family Name="PROCELLARIIDAE">
-            <Species Scientific_Name="Fulmarus glacialis">Northern Fulmar.</Species>
-            <Species Scientific_Name="Pterodroma neglecta">Kermadec Petrel. (A)</Species>
-            <Species Scientific_Name="Pterodroma arminjoniana">Herald Petrel. (A)</Species>
-            <Species Scientific_Name="Pterodroma ultima">Murphy's Petrel. (N)</Species>
-            <Species Scientific_Name="Pterodroma inexpectata">Mottled Petrel. (A)</Species>
-            <Species Scientific_Name="Pterodroma cahow">Bermuda Petrel.</Species>
-            <Species Scientific_Name="Pterodroma hasitata">Black-capped Petrel.</Species>
-            <Species Scientific_Name="Pterodroma externa">Juan Fernandez Petrel. (N)</Species>
-            <Species Scientific_Name="Pterodroma phaeopygia">Dark-rumped Petrel.</Species>
-            <Species Scientific_Name="Pterodroma cervicalis">White-necked Petrel. (H)</Species>
-            <Species Scientific_Name="Pterodroma hypoleuca">Bonin Petrel. (H)</Species>
-            <Species Scientific_Name="Pterodroma nigripennis">Black-winged Petrel. (H, A)</Species>
-            <Species Scientific_Name="Pterodroma cookii">Cook's Petrel. (N)</Species>
-            <Species Scientific_Name="Pterodroma longirostris">Stejneger's Petrel. (A)</Species>
-            <Species Scientific_Name="Bulweria bulwerii">Bulwer's Petrel. (H)</Species>
-            <Species Scientific_Name="Bulweria fallax">Jouanin's Petrel. (H, A)</Species>
-            <Species Scientific_Name="Procellaria parkinsoni">Parkinson's Petrel. (N)</Species>
-            <Species Scientific_Name="Calonectris leucomelas">Streaked Shearwater. (A)</Species>
-            <Species Scientific_Name="Calonectris diomedea">Cory's Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus creatopus">Pink-footed Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus carneipes">Flesh-footed Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus gravis">Greater Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus pacificus">Wedge-tailed Shearwater.</Species>
-            <Species Scientific_Name="Puffinus bulleri">Buller's Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus griseus">Sooty Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus tenuirostris">Short-tailed Shearwater. (N)</Species>
-            <Species Scientific_Name="Puffinus nativitatis">Christmas Shearwater. (H)</Species>
-            <Species Scientific_Name="Puffinus puffinus">Manx Shearwater.</Species>
-            <Species Scientific_Name="Puffinus auricularis">Townsend's Shearwater.</Species>
-            <Species Scientific_Name="Puffinus opisthomelas">Black-vented Shearwater.</Species>
-            <Species Scientific_Name="Puffinus lherminieri">Audubon's Shearwater.</Species>
-            <Species Scientific_Name="Puffinus assimilis">Little Shearwater. (A)</Species>
-        </Family>
-        <Family Name="HYDROBATIDAE">
-            <Species Scientific_Name="Oceanites oceanicus">Wilson's Storm-Petrel. (N)</Species>
-            <Species Scientific_Name="Pelagodroma marina">White-faced Storm-Petrel. (A)</Species>
-            <Species Scientific_Name="Hydrobates pelagicus">European Storm-Petrel. (A)</Species>
-            <Species Scientific_Name="Oceanodroma furcata">Fork-tailed Storm-Petrel.</Species>
-            <Species Scientific_Name="Oceanodroma leucorhoa">Leach's Storm-Petrel.</Species>
-            <Species Scientific_Name="Oceanodroma homochroa">Ashy Storm-Petrel.</Species>
-            <Species Scientific_Name="Oceanodroma castro">Band-rumped Storm-Petrel. (N)</Species>
-            <Species Scientific_Name="Oceanodroma tethys">Wedge-rumped Storm-Petrel. (N)</Species>
-            <Species Scientific_Name="Oceanodroma melania">Black Storm-Petrel.</Species>
-            <Species Scientific_Name="Oceanodroma macrodactyla">Guadalupe Storm-Petrel.</Species>
-            <Species Scientific_Name="Oceanodroma markhami">Markham's Storm-Petrel. (A)</Species>
-            <Species Scientific_Name="Oceanodroma tristrami">Tristram's Storm-Petrel. (H)</Species>
-            <Species Scientific_Name="Oceanodroma microsoma">Least Storm-Petrel.</Species>
-        </Family>
-    </Order>
-
-<Order Name="PELECANIFORMES">
-        <Family Name="PHAETHONTIDAE">
-            <Species Scientific_Name="Phaethon lepturus">White-tailed Tropicbird.</Species>
-            <Species Scientific_Name="Phaethon aethereus">Red-billed Tropicbird.</Species>
-            <Species Scientific_Name="Phaethon rubricauda">Red-tailed Tropicbird.</Species>
-        </Family>
-        <Family Name="SULIDAE">
-            <Species Scientific_Name="Sula dactylatra">Masked Booby.</Species>
-            <Species Scientific_Name="Sula nebouxii">Blue-footed Booby.</Species>
-            <Species Scientific_Name="Sula variegata">Peruvian Booby. (A)</Species>
-            <Species Scientific_Name="Sula leucogaster">Brown Booby.</Species>
-            <Species Scientific_Name="Sula sula">Red-footed Booby.</Species>
-            <Species Scientific_Name="Morus bassanus">Northern Gannet.</Species>
-        </Family>
-        <Family Name="PELECANIDAE">
-            <Species Scientific_Name="Pelecanus erythrorhynchos">American White Pelican.</Species>
-            <Species Scientific_Name="Pelecanus occidentalis">Brown Pelican.</Species>
-        </Family>
-        <Family Name="PHALACROCORACIDAE">
-            <Species Scientific_Name="Phalacrocorax penicillatus">Brandt's Cormorant.</Species>
-            <Species Scientific_Name="Phalacrocorax brasilianus">Neotropic Cormorant.</Species>
-            <Species Scientific_Name="Phalacrocorax auritus">Double-crested Cormorant.</Species>
-            <Species Scientific_Name="Phalacrocorax carbo">Great Cormorant.</Species>
-            <Species Scientific_Name="Phalacrocorax urile">Red-faced Cormorant.</Species>
-            <Species Scientific_Name="Phalacrocorax pelagicus">Pelagic Cormorant.</Species>
-        </Family>
-        <Family Name="ANHINGIDAE">
-            <Species Scientific_Name="Anhinga anhinga">Anhinga.</Species>
-        </Family>
-        <Family Name="FREGATIDAE">
-            <Species Scientific_Name="Fregata magnificens">Magnificent Frigatebird.</Species>
-            <Species Scientific_Name="Fregata minor">Great Frigatebird.</Species>
-            <Species Scientific_Name="Fregata ariel">Lesser Frigatebird. (A)</Species>
-        </Family>
-    </Order>
-</Class>
diff --git a/samples/DOM2DOM/birds.xsl b/samples/DOM2DOM/birds.xsl
deleted file mode 100644
index 4d6f8e1..0000000
--- a/samples/DOM2DOM/birds.xsl
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?> 
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:output method="xml" indent="yes"/>
-
-<xsl:template match="Class">
-<BirdInfo>
-	<xsl:apply-templates select="Order"/>
-</BirdInfo>
-</xsl:template>
-
-<xsl:template match="Order">
-Order is:  <xsl:value-of select="@Name"/>
-	<xsl:apply-templates select="Family"/><xsl:text>
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="Family">
-	Family is:  <xsl:value-of select="@Name"/>
-	<xsl:apply-templates select="Species | SubFamily | text()"/>
-</xsl:template>
-
-<xsl:template match="SubFamily">
-		SubFamily is <xsl:value-of select="@Name"/>
-    <xsl:apply-templates select="Species | text()"/>
-</xsl:template>
-
-<xsl:template match="Species">
-	<xsl:choose>
-	  <xsl:when test="name(..)='SubFamily'">
-		<xsl:text>	</xsl:text><xsl:value-of select="."/><xsl:text> </xsl:text><xsl:value-of select="@Scientific_Name"/>
-	  </xsl:when>
-	  <xsl:otherwise>
-		<xsl:value-of select="."/><xsl:text> </xsl:text><xsl:value-of select="@Scientific_Name"/>
-	  </xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/samples/DOM2DOM/readme.html b/samples/DOM2DOM/readme.html
deleted file mode 100644
index ec8936f..0000000
--- a/samples/DOM2DOM/readme.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<html>
-<head>
-	<title>Xalan Samples</title>
-</head>
-<body>
-<h2>Xalan Samples</h2>
-<p>For information about the samples (what they illustrate and how to run them), see <a href="../../docs/samples.html">Samples</a>.</p>
-
-
-</body>
-</html>
diff --git a/xdocs/sources/trax/trax.xml b/xdocs/sources/trax/trax.xml
deleted file mode 100644
index 9d2aa87..0000000
--- a/xdocs/sources/trax/trax.xml
+++ /dev/null
@@ -1,803 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE spec SYSTEM "../../style/dtd/spec.dtd">
-<spec> 
-  <title>Transformation API For XML (TrAX)</title>
-  <frontmatter> 
-  <pubdate>November 12, 2000</pubdate> 
-  <copyright>Copyright 2000 Java Community Process (Sun Microsystems,
-	 Inc.)</copyright> 
-  <author><firstname>Scott</firstname> 
-	 <surname>Boag</surname> 
-	 <orgname>IBM Research</orgname> 
-	 <address> 
-		<email>sboag@lotus.com</email> 
-	 </address> 
-  </author></frontmatter> 
-  <introduction> 
-  <title>Introduction</title> 
-  <para>This overview describes the set of APIs contained in
-	 <ulink url="package-summary.html">javax.xml.transform</ulink>, <ulink url="package-summary.html">javax.xml.transform.stream</ulink>, <ulink url="package-summary.html">javax.xml.transform.dom</ulink>, and <ulink url="package-summary.html">javax.xml.transform.sax</ulink>. For the sake of brevity, these interfaces are referred to
-	 as TrAX (Transformation API for XML). </para> 
-  <para>There is a broad need for Java applications to be able to transform XML
-	 and related tree-shaped data structures. In fact, XML is not normally very
-	 useful to an application without going through some sort of transformation,
-	 unless the semantic structure is used directly as data. Almost all XML-related
-	 applications need to perform transformations. Transformations may be described
-	 by Java code, Perl code, <ulink url="http://www.w3.org/TR/xslt">XSLT</ulink>
-	 Stylesheets, other types of script, or by proprietary formats. The inputs, one
-	 or multiple, to a transformation, may be a URL, XML stream, a DOM tree, SAX
-	 Events, or a proprietary format or data structure. The output types are the
-	 pretty much the same types as the inputs, but different inputs may need to be
-	 combined with different outputs.</para> 
-  <para>The great challenge of a transformation API is how to deal with all the
-	 possible combinations of inputs and outputs, without becoming specialized for
-	 any of the given types.</para> 
-  <para>The Java community will greatly benefit from a common API that will
-	 allow them to understand and apply a single model, write to consistent
-	 interfaces, and apply the transformations polymorphically. TrAX attempts to
-	 define a model that is clean and generic, yet fills general application
-	 requirements across a wide variety of uses. </para> 
-  <sect2> 
-	 <title>General Terminology</title> 
-	 <para>This section will explain some general terminology used in this
-		document. Technical terminology will be explained in the Model section. In many
-		cases, the general terminology overlaps with the technical terminology.</para> 
-	 <variablelist> 
-		<varlistentry> 
-		  <term>Tree</term> 
-		  <listitem>This term, as used within this document, describes an
-			 abstract structure that consists of nodes or events that may be produced by
-			 XML. A Tree physically may be a DOM tree, a series of well balanced parse
-			 events (such as those coming from a SAX2 ContentHander), a series of requests
-			 (the result of which can describe a tree), or a stream of marked-up
-			 characters.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Source Tree(s)</term> 
-		  <listitem>One or more trees that are the inputs to the
-			 transformation.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Result Tree(s)</term> 
-		  <listitem>One or more trees that are the output of the
-			 transformation.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Transformation</term> 
-		  <listitem>The processor of consuming a stream or tree to produce
-			 another stream or tree.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Identity (or Copy) Transformation</term> 
-		  <listitem>The process of transformation from a source to a result,
-			 making as few structural changes as possible and no informational changes. The
-			 term is somewhat loosely used, as the process is really a copy. from one
-			 "format" (such as a DOM tree, stream, or set of SAX events) to
-			 another.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Serialization</term> 
-		  <listitem>The process of taking a tree and turning it into a stream. In
-			 some sense, a serialization is a specialized transformation.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Parsing</term> 
-		  <listitem>The process of taking a stream and turning it into a tree. In
-			 some sense, parsing is a specialized transformation.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Transformer</term> 
-		  <listitem>A Transformer is the object that executes the transformation.
-			 </listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Transformation instructions</term> 
-		  <listitem>Describes the transformation. A form of code, script, or
-			 simply a declaration or series of declarations.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Stylesheet</term> 
-		  <listitem>The same as "transformation instructions," except it is
-			 likely to be used in conjunction with <ulink
-			 url="http://www.w3.org/TR/xslt">XSLT</ulink>.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Templates</term> 
-		  <listitem>Another form of "transformation instructions." In the TrAX
-			 interface, this term is used to describe processed or compiled transformation
-			 instructions. The Source flows through a Templates object to be formed into the
-			 Result.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>Processor</term> 
-		  <listitem>A general term for the thing that may both process the
-			 transformation instructions, and perform the transformation.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>DOM</term> 
-		  <listitem>Document Object Model, specifically referring to the
-			 <termref link-url="http://www.w3.org/TR/DOM-Level-2 ">Document Object Model
-			 (DOM) Level 2 Specification</termref>.</listitem> 
-		</varlistentry> 
-		<varlistentry> 
-		  <term>SAX</term> 
-		  <listitem>Simple API for XML, specifically referring to the
-			 <termref link-url="http://www.megginson.com/SAX/SAX2">SAX 2.0
-			 release</termref>.</listitem> 
-		</varlistentry> 
-	 </variablelist> 
-  </sect2></introduction>
-  <requirements> 
-  <title>Requirements</title> 
-  <para>The following requirements have been determined from broad experience
-	 with XML projects from the various members participating on the JCP.</para> 
-  <orderedlist> 
-	 <listitem id="requirement-simple">TrAX must provide a clean, simple
-		interface for simple uses.</listitem> 
-	 <listitem id="requirement-general">TrAX must be powerful enough to be
-		applied to a wide range of uses, such as, e-commerce, content management,
-		server content delivery, and client applications.</listitem> 
-	 <listitem id="requirement-optimizeable">A processor that implements a TrAX
-		interface must be optimizeable. Performance is a critical issue for most
-		transformation use cases.</listitem> 
-	 <listitem id="requirement-compiled-model">As a specialization of the above
-		requirement, a TrAX processor must be able to support a compiled model, so that
-		a single set of transformation instructions can be compiled, optimized, and
-		applied to a large set of input sources.</listitem> 
-	 <listitem id="requirement-independence">TrAX must not be dependent an any
-		given type of transformation instructions. For instance, it must remain
-		independent of <ulink url="http://www.w3.org/TR/xslt">XSLT</ulink>.</listitem> 
-	 <listitem id="requirement-from-dom">TrAX must be able to allow processors
-		to transform DOM trees.</listitem> 
-	 <listitem id="requirement-to-dom">TrAX must be able to allow processors to
-		produce DOM trees.</listitem> 
-	 <listitem id="requirement-from-sax">TrAX must allow processors to transform
-		SAX events.</listitem> 
-	 <listitem id="requirement-to-sax">TrAX must allow processors to produce SAX
-		events.</listitem> 
-	 <listitem id="requirement-from-stream">TrAX must allow processors to
-		transform streams of XML.</listitem> 
-	 <listitem id="requirement-to-stream">TrAX must allow processors to produce
-		XML, HTML, and other types of streams.</listitem> 
-	 <listitem id="requirement-combo-input-output">TrAX must allow processors to
-		implement the various combinations of inputs and outputs within a single
-		processor.</listitem> 
-	 <listitem id="requirement-limited-input-output">TrAX must allow processors
-		to implement only a limited set of inputs. For instance, it should be possible
-		to write a processor that implements the TrAX interfaces and that only
-		processes DOM trees, not streams or SAX events.</listitem> 
-	 <listitem id="requirement-proprietary-data-structures">TrAX should allow a
-		processor to implement transformations of proprietary data structures. For
-		instance, it should be possible to implement a processor that provides TrAX
-		interfaces that performs transformation of JDOM trees.</listitem> 
-	 <listitem id="requirement-serialization-props">TrAX must allow the setting
-		of serialization properties, without constraint as to what the details of those
-		properties are.</listitem> 
-	 <listitem id="requirement-setting-parameters">TrAX must allow the setting
-		of parameters to the transformation instructions.</listitem> 
-	 <listitem id="requirement-namespaced-properties">TrAX must support the
-		setting of parameters and properties as XML Namespaced items (i.e., qualified
-		names).</listitem> 
-	 <listitem id="requirement-relative-url-resolution">TrAX must support URL
-		resolution from within the transformation, and have it return the needed data
-		structure.</listitem> 
-	 <listitem id="requirement-error-reporting">TrAX must have a mechanism for
-		reporting errors and warnings to the calling application.</listitem> 
-  </orderedlist> </requirements> 
-  <model> 
-  <title>Model</title> 
-  <para>The section defines the abstract model for TrAX, apart from the details
-	 of the interfaces.</para> 
-  <para>A TRaX <termref
-	 link-url="pattern-TransformerFactory">TransformerFactory</termref> is an object
-	 that processes transformation instructions, and produces
-	 <termref link-url="pattern-Templates">Templates</termref> (in the technical
-	 terminology). A <termref link-url="pattern-Templates">Templates</termref>
-	 object provides a <termref
-	 link-url="pattern-Transformer">Transformer</termref>, which transforms one or
-	 more <termref link-url="pattern-Source">Source</termref>s into one or more
-	 <termref link-url="pattern-Result">Result</termref>s.</para> 
-  <para>To use the TRaX interface, you create a
-	 <termref link-url="pattern-TransformerFactory">TransformerFactory</termref>,
-	 which may directly provide a <termref
-	 link-url="pattern-Transformers">Transformers</termref>, or which can provide
-	 <termref link-url="pattern-Templates">Templates</termref> from a variety of
-	 <termref link-url="pattern-Source">Source</termref>s. The
-	 <termref link-url="pattern-Templates">Templates</termref> object is a processed
-	 or compiled representation of the transformation instructions, and provides a
-	 <termref link-url="pattern-Transformer">Transformer</termref>. The
-	 <termref link-url="pattern-Transformer">Transformer</termref> processes a
-	 <termref link-url="pattern-Transformer">Source</termref> according to the
-	 instructions found in the <termref
-	 link-url="pattern-Templates">Templates</termref>, and produces a
-	 <termref link-url="pattern-Result">Result</termref>.</para> 
-  <para>The process of transformation from a tree, either in the form of an
-	 object model, or in the form of parse events, into a stream, is known as
-	 <termref>serialization</termref>. We believe this is the most suitable term for
-	 this process, despite the overlap with Java object serialization.</para> 
-  <patterns module="TRaX"> <pattern><pattern-name
-  id="pattern-Processor">Processor</pattern-name><intent>Generic concept for the
-  set of objects that implement the TrAX interfaces.</intent>
-  <responsibilities>Create compiled transformation instructions, transform
-  sources, and manage transformation parameters and
-  properties.</responsibilities><thread-safety>Only the Templates object can be
-  used concurrently in multiple threads. The rest of the processor does not do
-  synchronized blocking, and so may not be used to perform multiple concurrent
-  operations.</thread-safety></pattern><pattern> 
-  <pattern-name id="pattern-TransformerFactory">TransformerFactory</pattern-name>
-  <intent>Serve as a vendor-neutral Processor interface for
-  <ulink url="http://www.w3.org/TR/xslt">XSLT</ulink> and similar
-  processors.</intent> <responsibilities>Serve as a factory for a concrete
-  implementation of an TransformerFactory, serve as a direct factory for
-  Transformer objects, serve as a factory for Templates objects, and manage
-  processor specific features.</responsibilities> <thread-safety>A
-  TransformerFactory may not perform mulitple concurrent
-  operations.</thread-safety> </pattern> <pattern> 
-  <pattern-name id="pattern-Templates">Templates</pattern-name> <intent>The
-  runtime representation of the transformation instructions.</intent> 
-  <responsibilities>A data bag for transformation instructions; act as a factory
-  for Transformers.</responsibilities> <thread-safety>Threadsafe for concurrent
-  usage over multiple threads once construction is complete.</thread-safety>
-  </pattern> <pattern> <pattern-name
-  id="pattern-Transformer">Transformer</pattern-name> <intent>Act as a per-thread
-  execution context for transformations, act as an interface for performing the
-  transformation.</intent><responsibilities>Perform the
-  transformation.</responsibilities> <thread-safety>Only one instance per thread
-  is safe.</thread-safety> <notes>The Transformer is bound to the Templates
-  object that created it.</notes> </pattern> <pattern> 
-  <pattern-name id="pattern-Source">Source</pattern-name> <intent>Serve as a
-  single vendor-neutral object for multiple types of input.</intent> 
-  <responsibilities>Act as simple data holder for System IDs, DOM nodes, streams,
-  etc.</responsibilities> <thread-safety>Threadsafe concurrently over multiple
-  threads for read-only operations; must be synchronized for edit
-  operations.</thread-safety> </pattern><pattern> 
-  <pattern-name id="pattern-Result">Result</pattern-name> 
-  <potential-alternate-name>ResultTarget</potential-alternate-name> <intent>Serve
-  as a single object for multiple types of output, so there can be simple process
-  method signatures.</intent> <responsibilities>Act as simple data holder for
-  output stream, DOM node, ContentHandler, etc.</responsibilities> 
-  <thread-safety>Threadsafe concurrently over multiple threads for read-only,
-  must be synchronized for edit.</thread-safety> </pattern> </patterns></model> 
-  <sect1 id="package"> 
-	 <title>javax.xml.transform</title> 
-	 <para>This package defines the generic APIs for processing transformation instructions,
-		and performing a transformation from source to result. For an overview, see 
-    <ulink url="trax.html">Transformation API for XML (TrAX)</ulink>. The TrAX 
-		interfaces have no dependencies on SAX or the DOM standard, and try to make as
-		few assumptions as possible about the details of the source and result of a
-		transformation. TrAX achieves this by defining 
-		<plink>javax.xml.transform.Source</plink> and 
-		<plink>javax.xml.transform.Result</plink> interfaces.</para> 
-	 <para>To define concrete classes for the user, TrAX defines specializations
-		of the interfaces found at the TrAX root level. These interfaces are found in 
-		<plink>javax.xml.transform.sax</plink>, <plink>javax.xml.transform.dom</plink>,
-		and <plink>javax.xml.transform.stream</plink>.</para> 
-	 <para>The following illustrates a simple transformation from input URI to
-		result stream.</para> 
-	 <programlisting>    // Create a transform factory instance.
-    TransformerFactory tfactory = TransformerFactory.newInstance();
-    
-    // Create a transformer for the stylesheet.
-    Transformer transformer 
-      = tfactory.newTransformer(new StreamSource(xslID));
-    
-    // Transform the source XML to System.out.
-    transformer.transform( new StreamSource(sourceID),
-                           new StreamResult(System.out));
-</programlisting> 
-	 <sect2> 
-		<title>Creating Objects</title> 
-		<para>TrAX allows a concrete 
-		  <plink>javax.xml.transform.TransformerFactory</plink> object to be created from
-		  the static function 
-		  <plink>javax.xml.transform.TransformerFactory#newInstance</plink>. The
-		  "javax.xml.transform.TransformerFactory" system property determines which
-		  factory implementation to instantiate. This property names a concrete subclass
-		  of the TransformerFactory abstract class. If this system property is not
-		  defined, a platform default is used.</para> 
-	 </sect2> 
-	 <sect2> 
-		<title>Specification of Inputs and Outputs</title> 
-		<para>TrAX defines two interface objects called 
-		  <plink>javax.xml.transform.Source</plink> and 
-		  <plink>javax.xml.transform.Result</plink>. In order to pass Source and Result
-		  objects to the TrAX interfaces, concrete classes must be used. TrAX defines
-		  three concrete representations for each of these objects: 
-		  <plink>javax.xml.transform.stream.StreamSource</plink> and 
-		  <plink>javax.xml.transform.stream.StreamResult</plink>,
-		  <plink>javax.xml.transform.sax.SAXSource</plink> and 
-		  <plink>javax.xml.transform.sax.SAXResult</plink>, and 
-		  <plink>javax.xml.transform.dom.DOMSource</plink> and 
-		  <plink>javax.xml.transform.dom.DOMResult</plink>. Each of these objects defines
-		  a FEATURE string (which is i the form of a URL), which can be passed into 
-		  <plink>javax.xml.transform.TransformerFactory#getFeature</plink> to see if the
-		  given type of Source or Result object is supported. For instance, to test if a
-		  DOMSource and a StreamResult is supported, you can apply the following
-		  test.</para> 
-		<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    if (tfactory.getFeature(DOMSource.FEATURE) &amp;&amp; tfactory.getFeature(StreamResult.FEATURE))
-    {
-       ...
-    }</programlisting>
-  </sect2> 
-  <sect2> 
-	 <title id="qname-delimiter">Qualified Name representation</title> 
-	 <para><ulink url="http://www.w3.org/TR/REC-xml-names">Namespaces</ulink>
-		present something of a problem area when dealing with XML objects. Qualified
-		Names appear in XML markup as prefixed names. But the prefixes themselves do
-		not hold identity. Rather, it is the URIs that they contextually map to that
-		hold the identity. Therefore, when passing a Qualified Name like "xyz:foo"
-		among Java programs, one must provide a means to map "xyz" to a namespace.
-		</para> 
-	 <para>One solution has been to create a "QName" object that holds the
-		namespace URI, as well as the prefix and local name, but this is not always an
-		optimal solution, as when, for example, you want to use unique strings as keys
-		in a dictionary object. Not having a string representation also makes it
-		difficult to specify a namespaced identity outside the context of an XML
-		document.</para> 
-	 <para>In order to pass namespaced values to transformations, for instance
-		as a set of properties to the Serializer, this specification defines that a
-		String "qname" object parameter be passed as two-part string, the namespace URI
-		enclosed in curly braces ({}), followed by the local name. If the qname has a
-		null URI, then the String object only contains the local name. An application
-		can safely check for a non-null URI by testing to see if the first character of
-		the name is a '{' character.</para> 
-	 <para>For example, if a URI and local name were obtained from an element
-		defined with &lt;xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/&gt;,
-		then the TrAX Qualified Name would be "{http://xyz.foo.com/yada/baz.html}foo".
-		Note that the prefix is lost.</para> 
-  </sect2> 
-  <sect2> 
-	 <title>Result Tree Serialization</title> 
-	 <para>Serialization of the result tree to a stream can be controlled with
-		the <plink>javax.xml.transform.Transformer#setOutputProperties</plink> and the 
-		<plink>javax.xml.transform.Transformer#setOutputProperty</plink> methods.
-		Strings that match the <ulink url="http://www.w3.org/TR/xslt#output">XSLT
-		specification for xsl:output attributes</ulink> can be referenced from the 
-		<plink>javax.xml.transform.OutputKeys</plink> class. Other strings can be
-		specified as well. If the transformer does not recognize an output key, a 
-		<plink>java.lang.IllegalArgumentException</plink> is thrown, unless the 
-		<emphasis>unless</emphasis> the key name is <link
-		linkend="qname-delimiter">namespace qualified</link>. Output key names that are
-		qualified by a namespace are ignored or passed on to the serializer
-		mechanism.</para> 
-	 <para>If all that is desired is the simple identity transformation of a
-		source to a result, then <plink>javax.xml.transform.TransformerFactory</plink>
-		provides a
-		<plink>javax.xml.transform.TransformerFactory#newTransformer()</plink> method
-		with no arguments. This method creates a Transformer that effectively copies
-		the source to the result. This method may be used to create a DOM from SAX
-		events or to create an XML or HTML stream from a DOM or SAX events. The
-		following example illustrates the serialization of a DOM node to an XML
-		stream.</para> 
-	 <programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();    
-    Transformer serializer = tfactory.newTransformer();
-    Properties oprops = new Properties();
-    oprops.put("method", "html");
-    oprops.put("indent-amount", "2");
-    serializer.setOutputProperties(oprops);
-    serializer.transform(new DOMSource(doc), 
-                         new StreamResult(System.out));</programlisting> 
-</sect2> 
-<sect2> 
-  <title>Exceptions and Error Reporting</title> 
-  <para>The TrAX APIs throw three types of specialized exceptions. A
-	 <plink>javax.xml.transform.TFactoryConfigurationError</plink> is parallel to
-	 the <plink>javax.xml.parsers.FactoryConfigurationError</plink>, and is thrown
-	 when a configuration problem with the TransformerFactory exists. This error
-	 will typically be thrown when the transformation factory class specified with
-	 the "javax.xml.transform.TransformerFactory" system property cannot be found or
-	 instantiated.</para> 
-  <para>A <plink>javax.xml.transform.TransformerConfigurationException</plink>
-	 may be thrown if for any reason a Transformer can not be created. A
-	 TransformerConfigurationException may be thrown if there is a syntax error in
-	 the transformation instructions, for example when
-	 <plink>javax.xml.transform.TransformerFactory#newTransformer</plink> is
-	 called.</para> 
-  <para><plink>javax.xml.transform.TransformerException</plink> is a general
-	 exception that occurs during the course of a transformation. A transformer
-	 exception may wrap another exception, and if any of the
-	 <plink>javax.xml.transform.TransformerException#printStackTrace()</plink>
-	 methods are called on it, it will produce a list of stack dumps, starting from
-	 the most recent. The transformer exception also provides a
-	 <plink>javax.xml.transform.SourceLocator</plink> object which indicates where
-	 in the source tree or transformation instructions the error occurred.
-	 <plink>javax.xml.transform.TransformerException#getMessageAndLocation()</plink>
-	 may be called to get an error message with location info, and
-	 <plink>javax.xml.transform.TransformerException#getLocationAsString()</plink>
-	 may be called to get just the location string.</para> 
-  <para>Transformation warnings and errors are normally first sent to a
-	 <plink>javax.xml.transform.ErrorListener</plink>, at which point the
-	 implementor may decide to report the error or warning, and may decide to throw
-	 an exception for a non-fatal error. The error listener may be set via
-	 <plink>javax.xml.transform.TransformerFactory#setErrorListener</plink> for
-	 reporting errors that have to do with syntax errors in the transformation
-	 instructions, or via
-	 <plink>javax.xml.transform.Transformer#setErrorListener</plink> to report
-	 errors that occur during the transformation. The error listener on both objects
-	 should always be valid and non-null, whether set by the user or a default
-	 implementation provided by the processor.</para> 
-</sect2> 
-<sect2> 
-  <title>Resolution of URIs within a transformation</title> 
-  <para>TrAX provides a way for URIs referenced from within the stylesheet
-	 instructions or within the transformation to be resolved by the calling
-	 application. This can be done by creating a class that implements the
-	 URIResolver interface, with its one method,
-	 <plink>javax.xml.transform.URIResolver#resolve</plink>, and use this class to
-	 set the URI resolution for the transformation instructions or transformation
-	 with <plink>javax.xml.transform.TransformerFactory#setURIResolver</plink> or
-	 <plink>javax.xml.transform.Transformer#setURIResolver</plink>. The
-	 URIResolver.resolve method takes two String arguments, the URI found in the
-	 stylesheet instructions or built as part of the transformation process, and the
-	 base URI in effect when the URI passed as the first argument was encountered.
-	 The returned <plink>javax.xml.transform.Source</plink> object must be usable by
-	 the transformer, as specified in its implemented features.</para> 
-  <para>The following example illustrates the use of the URI resolver to
-	 resolve URIs to DOM nodes, in a transformation whose input is totally DOM
-	 based.</para> 
-  <programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    if (tfactory.getFeature(DOMSource.FEATURE) &amp;&amp; tfactory.getFeature(StreamResult.FEATURE))
-    {
-      DocumentBuilderFactory dfactory =
-                                       DocumentBuilderFactory.newInstance();
-      dfactory.setNamespaceAware(true); // Always, required for XSLT
-      DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
-      
-      // Set up to resolve URLs that correspond to our inc1.xsl, 
-      // to a DOM node. Use an anonymous class for the URI resolver.
-      final Node xslInc1 = docBuilder.parse("xsl/inc1/inc1.xsl");
-      final Node xslInc2 = docBuilder.parse("xsl/inc2/inc2.xsl");
-      tfactory.setURIResolver(new URIResolver() { 
-        public Source resolve(String href, String base) 
-        throws TransformerException
-        {
-        // ignore base because we're lazy, or we don't care.
-        return (href.equals("inc1/inc1.xsl"))  
-        ? new DOMSource(xslInc1) : 
-          (href.equals("inc2/inc2.xsl")) 
-          ? new DOMSource(xslInc2) : null;
-        }});
-
-      // The TransformerFactory will call the anonymous URI 
-      // resolver set above when it encounters 
-      // &lt;xsl:include href="inc1/inc1.xsl"/&gt;
-      Templates templates 
-        = tfactory.newTemplates(new DOMSource(docBuilder.parse(xslID), xslID));
-
-      // Get a transformer from the templates.
-      Transformer transformer = templates.newTransformer();
-      
-      // Set up to resolve URLs that correspond to our foo2.xml, to 
-      // a DOM node.  Use an anonymous class for the URI resolver.
-      // Be sure to return the same DOM tree every time for the 
-      // given URI.
-      final Node xmlSubdir1Foo2Node = docBuilder.parse("xml/subdir1/foo2.xml");
-      transformer.setURIResolver(new URIResolver() { 
-        public Source resolve(String href, String base) 
-        throws TransformerException
-        {
-        // ignore base because we're lazy, or we don't care.
-        return (href.equals("subdir1/foo2.xml"))  
-        ? new DOMSource(xmlSubdir1Foo2Node) : null;
-        }});
-
-      // Now the transformer will call our anonymous URI resolver 
-      // when it encounters the document('subdir1/foo2.xml') invocation.
-      transformer.transform(new DOMSource(docBuilder.parse(sourceID), sourceID), 
-                            new StreamResult(System.out));
-    }
-</programlisting>
-</sect2> 
-<sect2 id="specialized-packages"> 
-<title>Specialized Packages</title> 
-<sect3> 
-  <title>javax.xml.transform.stream</title> 
-  <para>This package implements stream- and URI- specific transformation APIs.
-	 </para> 
-  <para>The <plink>javax.xml.transform.stream.StreamSource</plink> class
-	 provides methods for specifying <plink>java.io.InputStream</plink> input,
-	 <plink>java.io.Reader</plink> input, and URL input in the form of strings. Even
-	 if an input stream or reader is specified as the source,
-	 <plink>javax.xml.transform.stream.StreamSource#setSystemId</plink> should still
-	 be called, so that the transformer can know from where it should resolve
-	 relative URIs. The public identifier is always optional: if the application
-	 writer includes one, it will be provided as part of the
-	 <plink>javax.xml.transform.SourceLocator</plink> information.</para> 
-  <para>The <plink>javax.xml.transform.stream.StreamResult</plink> class
-	 provides methods for specifying <plink>java.io.OutputStream</plink>,
-	 <plink>java.io.Writer</plink>, or an output system ID, as the output of the
-	 transformation result.</para> 
-  <para>Normally streams should be used rather than readers or writers, for
-	 both the Source and Result, since readers and writers already have the encoding
-	 established to and from the internal Unicode format. However, there are times
-	 when it is useful to write to a character stream, such as when using a
-	 StringWriter in order to write to a String, or in the case of reading source
-	 XML from a StringReader.</para> 
-  <para>The following code fragment illustrates the use of the stream Source
-	 and Result objects.</para> 
-  <programlisting>    // Create a TransformerFactory instance.
-    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    InputStream xslIS = new BufferedInputStream(new FileInputStream(xslID));
-    StreamSource xslSource = new StreamSource(xslIS);
-    // Note that if we don't do this, relative URLs cannot be resolved correctly!
-    xslSource.setSystemId(xslID);
-
-    // Create a transformer for the stylesheet.
-    Transformer transformer = tfactory.newTransformer(xslSource);
-    
-    InputStream xmlIS = new BufferedInputStream(new FileInputStream(sourceID));
-    StreamSource xmlSource = new StreamSource(xmlIS);
-    // Note that if we don't do this, relative URLs cannot be resolved correctly!
-    xmlSource.setSystemId(sourceID);
-    
-    // Transform the source XML to System.out.
-    transformer.transform( xmlSource, new StreamResult(System.out));
-</programlisting>
-</sect3> 
-<sect3> 
-<title>javax.xml.transform.sax</title> 
-<para>This package implements SAX2-specific transformation APIs. It provides
-  classes which allow input from <plink>org.xml.sax.ContentHandler</plink>
-  events, and also classes that produce org.xml.sax.ContentHandler events. It
-  also provides methods to set the input source as an
-  <plink>org.xml.sax.XMLReader</plink>, or to use a
-  <plink>org.xml.sax.InputSource</plink> as the source. It also allows the
-  creation of a <plink>org.xml.sax.XMLFilter</plink>, which enables
-  transformations to "pull" from other transformations, and lets the transformer
-  to be used polymorphically as an <plink>org.xml.sax.XMLReader</plink>.</para> 
-<para>The <plink>javax.xml.transform.sax.SAXSource</plink> class allows the
-  setting of an <plink>org.xml.sax.XMLReader</plink> to be used for "pulling"
-  parse events, and an <plink>org.xml.sax.InputSource</plink> that may be used to
-  specify the SAX source.</para> 
-<para>The <plink>javax.xml.transform.sax.SAXResult</plink> class allows the
-  setting of a <plink>org.xml.sax.ContentHandler</plink> to be the receiver of
-  SAX2 events from the transformation. The following code fragment illustrates
-  the use of the SAXSource and SAXResult objects.</para> 
-<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    // Does this factory support SAX features?
-    if (tfactory.getFeature(SAXSource.FEATURE) &amp;&amp; tfactory.getFeature(SAXResult.FEATURE))
-    {      
-      // Get a transformer.
-      Transformer transformer 
-        = tfactory.newTransformer(new StreamSource(xslID));
-      
-      // Create an reader for reading.
-      XMLReader reader = XMLReaderFactory.createXMLReader();
-
-      transformer.transform(new SAXSource(reader, new InputSource(sourceID)),
-                            new SAXResult(new ExampleContentHandler()));
-    }
-</programlisting> 
-<para>The <plink>javax.xml.transform.sax.SAXTransformerFactory</plink> extends
-  <plink>javax.xml.transform.TransformerFactory</plink> to provide factory
-  methods for creating <plink>javax.xml.transform.sax.TemplatesHandler</plink>,
-  <plink>javax.xml.transform.sax.TransformerHandler</plink>, and
-  <plink>org.xml.sax.XMLReader</plink> instances.</para> 
-<para>To obtain a <plink>javax.xml.transform.sax.SAXTransformerFactory</plink>,
-  the caller must cast the <plink>javax.xml.transform.TransformerFactory</plink>
-  instance returned from
-  <plink>javax.xml.transform.TransformerFactory#newInstance</plink>. For
-  example:</para> 
-<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    // Does this factory support the SAXTransformerFactory feature?
-    if (tfactory.getFeature(SAXTransformerFactory.FEATURE))
-    {
-      // If so, we can safely cast.
-      SAXTransformerFactory stfactory = ((SAXTransformerFactory) tfactory);
-      
-      // A TransformerHandler is a ContentHandler that will listen for 
-      // SAX events, and transform them to the result.
-      TransformerHandler handler 
-        = stfactory.newTransformerHandler(new StreamSource(xslID));
-      // ...
-    }
-</programlisting> 
-<para>The <plink>javax.xml.transform.sax.TransformerHandler</plink> interface
-  allows a transformation to be created from SAX2 parse events, which is a "push"
-  model rather than the "pull" model that normally occurs for a transformation.
-  Normal parse events are received through the
-  <plink>org.xml.sax.ContentHandler</plink> interface, lexical events such as
-  startCDATA and endCDATA are received through the
-  <plink>org.xml.sax.ext.LexicalHandler</plink> interface, and events that signal
-  the start or end of disabling output escaping are received via
-  <plink>org.xml.sax.ContentHandler#processingInstruction</plink>, with the
-  target parameter being
-  <plink>javax.xml.transform.Result#PI_DISABLE_OUTPUT_ESCAPING</plink> and
-  <plink>javax.xml.transform.Result#PI_ENABLE_OUTPUT_ESCAPING</plink>. If
-  parameters, output properties, or other features need to be set on the
-  Transformer handler, a <plink>javax.xml.transform.Transformer</plink> reference
-  will need to be obtained from
-  <plink>javax.xml.transform.sax.TransformerHandler#getTransformer</plink>, and
-  the methods invoked from that reference. The following illustrates the feeding
-  of SAX events from an <plink>org.xml.sax.XMLReader</plink> to a
-  Transformer.</para> 
-<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    // Does this factory support SAX features?
-    if (tfactory.getFeature(SAXTransformerFactory.FEATURE))
-    {
-      // If so, we can safely cast.
-      SAXTransformerFactory stfactory = ((SAXTransformerFactory) tfactory);
-      
-      // A TransformerHandler is a ContentHandler that will listen for 
-      // SAX events, and transform them to the result.
-      TransformerHandler handler 
-        = stfactory.newTransformerHandler(new StreamSource(xslID));
-
-      // Set the result handling to be a serialization to System.out.
-      handler.setResult(new StreamResult(System.out));
-      
-      handler.getTransformer().setParameter("a-param",
-                                            "hello to you!");
-      
-      // Create a reader, and set it's content handler to be the TransformerHandler.
-      XMLReader reader = XMLReaderFactory.createXMLReader();
-      reader.setContentHandler(handler);
-      
-      // It's a good idea for the parser to send lexical events.
-      // The TransformerHandler is also a LexicalHandler.
-      reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
-      
-      // Parse the source XML, and send the parse events to the TransformerHandler.
-      reader.parse(sourceID);
-    }
-</programlisting> 
-<para>The <plink>javax.xml.transform.sax.TemplatesHandler</plink> interface
-  allows the creation of <plink>javax.xml.transform.Templates</plink> objects
-  from SAX2 parse events. Once the <plink>org.xml.sax.ContentHandler</plink>
-  events are complete, the Templates object may be obtained from
-  <plink>javax.xml.transform.sax.TemplatesHandler#getTemplates</plink>. Note that 
-  <plink>javax.xml.transform.sax.TemplatesHandler#setSystemId</plink> should
-  normally be called in order to establish a base system ID from which relative
-  URLs may be resolved. The following code fragment illustrates the creation of a
-  Templates object from SAX2 events sent from an XMLReader.</para> 
-<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    // Does this factory support SAX features?
-    if (tfactory.getFeature(SAXTransformerFactory.FEATURE))
-    {
-      // If so, we can safely cast.
-      SAXTransformerFactory stfactory = ((SAXTransformerFactory) tfactory);
-      
-      // Have the factory create a special ContentHandler that will 
-      // create a Templates object.
-      TemplatesHandler handler = stfactory.newTemplatesHandler();
-      
-      // If you don't do this, the TemplatesHandler won't know how to 
-      // resolve relative URLs.
-      handler.setSystemId(xslID);
-      
-      // Create a reader, and set it's content handler to be the TemplatesHandler.
-      XMLReader reader = XMLReaderFactory.createXMLReader();
-      reader.setContentHandler(handler);
-      
-      // Parse the source XML, and send the parse events to the TemplatesHandler.
-      reader.parse(xslID);
-      
-      // Get the Templates reference from the handler.
-      Templates templates = handler.getTemplates();
-      
-      // Ready to transform.
-      Transformer transformer = templates.newTransformer();
-      transformer.transform(new StreamSource(sourceID), new StreamResult(System.out));
-    }
-</programlisting> 
-<para>The
-  <plink>javax.xml.transform.sax.SAXTransformerFactory#newXMLFilter</plink>
-  method allows the creation of a <plink>org.xml.sax.XMLFilter</plink>, which
-  encapsulates the SAX2 notion of a "pull" transformation. The following
-  illustrates several transformations chained together. Each filter points to a
-  parent <plink>org.xml.sax.XMLReader</plink>, and the final transformation is
-  caused by invoking <plink>org.xml.sax.XMLReader#parse</plink> on the final
-  reader in the chain.</para> 
-<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-    
-    // Does this factory support SAX features?
-    if (tfactory.getFeature(SAXTransformerFactory.FEATURE))
-    {
-      Templates stylesheet1 = tfactory.newTemplates(new StreamSource(xslID_1));
-      Transformer transformer1 = stylesheet1.newTransformer();
-      
-      SAXTransformerFactory stf = (SAXTransformerFactory)tfactory;
-      XMLReader reader = XMLReaderFactory.createXMLReader();
-
-      XMLFilter filter1 = stf.newXMLFilter(new StreamSource(xslID_1));
-      XMLFilter filter2 = stf.newXMLFilter(new StreamSource(xslID_2));
-      XMLFilter filter3 = stf.newXMLFilter(new StreamSource(xslID_3));
-
-      // transformer1 will use a SAX parser as it's reader.    
-      filter1.setParent(reader);
-
-      // transformer2 will use transformer1 as it's reader.
-      filter2.setParent(filter1);
-
-      // transform3 will use transform2 as it's reader.
-      filter3.setParent(filter2);
-
-      filter3.setContentHandler(new ExampleContentHandler());
-      // filter3.setContentHandler(new org.xml.sax.helpers.DefaultHandler());
-
-      // Now, when you call transformer3 to parse, it will set  
-      // itself as the ContentHandler for transform2, and 
-      // call transform2.parse, which will set itself as the 
-      // content handler for transform1, and call transform1.parse, 
-      // which will set itself as the content listener for the 
-      // SAX parser, and call parser.parse(new InputSource("xml/foo.xml")).
-      filter3.parse(new InputSource(sourceID));
-    }</programlisting>
-</sect3> 
-<sect3> 
-<title>javax.xml.transform.dom</title> 
-<para>This package implements DOM-specific transformation APIs.</para> 
-<para>The <plink>javax.xml.transform.dom.DOMSource</plink> class allows the
-client of the TrAX implementation to specify a DOM
-<plink>org.w3c.dom.Node</plink> as the source of the input tree. The model of
-how the Transformer deals with the DOM tree in terms of mismatches with the
-<ulink url="http://www.w3.org/TR/xslt#data-model">XSLT data model</ulink> or
-other data models is beyond the scope of this document. Any of the nodes
-derived from <plink>org.w3c.dom.Node</plink> are legal input.</para>
-<para>The <plink>javax.xml.transform.dom.DOMResult</plink> class allows a
-<plink>org.w3c.dom.Node</plink> to be specified to which result DOM nodes will
-be appended. If an output node is not specified, the transformer will use 
-<plink>javax.xml.parsers.DocumentBuilder#newDocument</plink> to create an
-output <plink>org.w3c.dom.Document</plink> node. If a node is specified, it
-should be one of the following: <plink>org.w3c.dom.Document</plink>, 
-<plink>org.w3c.dom.Element</plink>, or 
-<plink>org.w3c.dom.DocumentFragment</plink>. Specification of any other node
-type is implementation dependent and undefined by this API. If the result is a 
-<plink>org.w3c.dom.Document</plink>, the output of the transformation must have
-a single element root to set as the document element.</para>
-<para>The <plink>javax.xml.transform.dom.DOMLocator</plink> node may be passed
-to <plink>javax.xml.transform.TransformerException</plink> objects, and
-retrieved by trying to cast the result of
-the <plink>javax.xml.transform.TransformerException#getLocator()</plink> method.
-The implementation has no responsibility to use a DOMLocator instead of
-a <plink>javax.xml.transform.SourceLocator</plink> (though line numbers and the
-like do not make much sense for a DOM), so the result of getLocator must always
-be tested with an instanceof. </para>
-<para>The following example performs a transformation using DOM nodes as input
-for the TransformerFactory, as input for the Transformer, and as the output of
-the transformation.</para>
-<programlisting>    TransformerFactory tfactory = TransformerFactory.newInstance();
-
-    // Make sure the TransformerFactory supports the DOM feature.
-    if (tfactory.getFeature(DOMSource.FEATURE) &amp;&amp; tfactory.getFeature(DOMResult.FEATURE))
-    {
-      // Use javax.xml.parsers to create our DOMs.
-      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
-      dfactory.setNamespaceAware(true); // do this always for XSLT
-      DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
-      
-      // Create the Templates from a DOM.
-      Node xslDOM = docBuilder.parse(xslID);
-      DOMSource dsource = new DOMSource(xslDOM, xslID);
-      Templates templates = tfactory.newTemplates(dsource);
-
-      // Create the source tree in the form of a DOM.
-      Node sourceNode = docBuilder.parse(sourceID);
-      
-      // Create a DOMResult that the transformation will fill in.
-      DOMResult dresult = new DOMResult();
-      
-      // And transform from the source DOM tree to a result DOM tree.
-      Transformer transformer = templates.newTransformer();
-      transformer.transform(new DOMSource(sourceNode, sourceID), dresult);
-      
-      // The root of the result tree may now be obtained from 
-      // the DOMResult object.
-      Node out = dresult.getNode();
-      
-      // Serialize it to System.out for diagnostics.
-      Transformer serializer = tfactory.newTransformer();
-      serializer.transform(new DOMSource(out), new StreamResult(System.out));
-    }</programlisting>
-</sect3> 
-</sect2>
-</sect1>
-</spec>
\ No newline at end of file
diff --git a/xdocs/style/dtd/spec.dtd b/xdocs/style/dtd/spec.dtd
deleted file mode 100644
index 8720289..0000000
--- a/xdocs/style/dtd/spec.dtd
+++ /dev/null
@@ -1,578 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- ============================================================= -->
-<!--  MODULE:    spec DTD                                          -->
-<!--  VERSION:   1.0                                               -->
-<!--  DATE:      October 18, 2000                                  -->
-
-
-<!-- ============================================================= -->
-<!--                   ISO STANDARD SPECIAL CHARACTER SETS         -->
-<!-- ============================================================= -->
-<!--
-<!ENTITY % isolat1      PUBLIC
-"ISO 8879-1986//ENTITIES Added Latin 1//EN"
-"entities/ISOlat1.pen"
-                                                                    >
-
-<!ENTITY % isonum       PUBLIC
-"ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN"
-"entities/ISOnum.pen"
-                                                                    >
-
-<!ENTITY % isopub       PUBLIC
-"ISO 8879-1986//ENTITIES Publishing//EN"
-"entities/ISOpub.pen"
-                                                                    >
-
-<!ENTITY % isotech      PUBLIC
-"ISO 8879-1986//ENTITIES General Technical//EN"
-"entities/ISOtech.pen"
-                                                                    >
-
-%isolat1; %isonum; %isopub; %isotech;
--->
-
-<!-- ============================================================= -->
-<!--                    parameter entities for content models      -->
-<!-- ============================================================= -->
-
-
-<!--                    list elements                              -->
-<!ENTITY % lists       "itemizedlist | orderedlist | variablelist"   >
-
-
-<!--                    linespecific elements                      -->
-<!--                    elements where line endings and whitespace
-                        are significant                            -->
-<!ENTITY % linespecific
-                       "literallayout | programlisting"              >
-
-
-<!--                    phrase-level elements                      -->
-<!--                    elements allowed at the same level as text -->
-<!ENTITY % phraselevel "citation | emphasis | inlinegraphic | link | plink |
-                        subscript | superscript | ulink | termref"   >
-
-
-<!--                    paragraph-level elements                   -->
-<!--                    elements (including paragraphs) allowed at
-                        the level of paragraphs                    -->
-<!ENTITY % paralevel   "%linespecific; | %lists; | note | para | issue |
-                        table | figure | graphic"                    >
-
-
-<!-- ============================================================= -->
-<!--                    parameter entities for attributes          -->
-<!-- ============================================================= -->
-
-
-<!--                    common attributes                          -->
-<!ENTITY % common.atts
-             "id         ID                                 #IMPLIED
-              link-url   CDATA                              #IMPLIED" >
-
-<!--                    graphic-related attributes                 -->
-<!ENTITY % graphic.atts
-            "fileref    CDATA                              #IMPLIED
-             alt        CDATA                              #IMPLIED
-             srccredit  CDATA                              #IMPLIED
-             width      NMTOKEN                            #IMPLIED
-             depth      NMTOKEN                            #IMPLIED
-             scale      NMTOKEN                            #IMPLIED
-             scalefit   NMTOKEN                            #IMPLIED" >
-
-<!-- ============================================================= -->
-<!--                    external modules                           -->
-<!-- ============================================================= -->
-
-<!--
-<!ENTITY % table.ent SYSTEM "table.ent"                              >
-%table.ent;
--->
-
-<!-- ============================================================= -->
-<!--                    element definitions                        -->
-<!-- ============================================================= -->
-
-
-<!--                    specification                              -->
-<!ELEMENT  spec         (title, frontmatter, introduction, requirements, model, sect1+,
-                         appendix*, bibliography?)                   >
-
-<!ATTLIST  spec
-            %common.atts;                                            >
-
-<!ELEMENT  frontmatter   (pubdate, copyright, author*, abstract?)    >
-
-<!--                    title                                      -->
-<!ELEMENT  title        (#PCDATA | %phraselevel;)*                   >
-<!ATTLIST  title
-            %common.atts;                                            >
-
-
-<!--                    issue                                      -->
-<!ELEMENT  issue        (#PCDATA | %phraselevel;)*                   >
-<!ATTLIST  issue
-            %common.atts;                                            >
-
-
-<!--                    publication date                           -->
-<!--                    publication date and, possibly, time       -->
-<!ELEMENT  pubdate      (#PCDATA)                                    >
-<!ATTLIST  pubdate
-            %common.atts;                                            >
-
-
-<!--                    copyright statement                        -->
-<!ELEMENT  copyright    (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  copyright
-            %common.atts;                                            >
-
-
-<!--                    author                                     -->
-<!ELEMENT  author       (firstname, surname, jobtitle?, orgname?,
-                         address?)                                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  author
-            %common.atts;                                            >
-
-
-<!--                    abstract                                   -->
-<!ELEMENT  abstract     (para+)                                      >
-<!--         id         unique identifier                          -->
-<!ATTLIST  abstract
-            %common.atts;                                            >
-
-<!ELEMENT  introduction        (title, (((%paralevel;)+, sect2*) | sect2+)) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  introduction
-            %common.atts;                                            >
-
-<!ELEMENT  requirements        (title, (((%paralevel;)+, sect2*) | sect2+)) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  requirements
-            %common.atts; >    
-
-<!ELEMENT  model        (title, (((%paralevel;)+, patterns) | sect2+)) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  model
-            %common.atts;                                            >
-
-<!ELEMENT  patterns        (pattern+) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  patterns
-            %common.atts; 
-			module  CDATA                              #IMPLIED
-            > 
-                        
-<!ELEMENT  pattern        (pattern-name, potential-alternate-name?, intent, responsibilities, thread-safety, notes?) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  pattern
-            %common.atts;  
-                                                      >
-<!ELEMENT  pattern-name        (#PCDATA | %phraselevel;)* >
-<!--         id         unique identifier                          -->
-<!ATTLIST  pattern-name
-            %common.atts; >
-            
-<!ELEMENT  potential-alternate-name        (#PCDATA | %phraselevel;)* >
-<!--         id         unique identifier                          -->
-<!ATTLIST  potential-alternate-name
-            %common.atts; >  
-
-<!ELEMENT  intent        (#PCDATA | %phraselevel;)* >
-<!--         id         unique identifier                          -->
-<!ATTLIST  intent
-            %common.atts; >  
-
-<!ELEMENT  responsibilities        (#PCDATA | %phraselevel;)* >
-<!--         id         unique identifier                          -->
-<!ATTLIST  responsibilities
-            %common.atts; >  
-
-<!ELEMENT  thread-safety        (#PCDATA | %phraselevel;)* >
-<!--         id         unique identifier                          -->
-<!ATTLIST  thread-safety
-            %common.atts; >
-
-<!ELEMENT  notes         (#PCDATA | %phraselevel;)*                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  notes
-            %common.atts;                                            >
-
-<!--         id         unique identifier                          -->
-<!ATTLIST  sect1
-            %common.atts;                                            >
-
-<!--                    section 1                                  -->
-<!ELEMENT  sect1        (title, (((%paralevel;)+, sect2*) | sect2+)) >						   
-<!--                    section 2                                  -->
-<!ELEMENT  sect2        (title, (((%paralevel;)+, sect3*) | sect3+)) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  sect2
-            %common.atts;                                            >
-
-
-<!--                    section 3                                  -->
-<!ELEMENT  sect3        (title, (((%paralevel;)+, sect4*) | sect4+)) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  sect3
-            %common.atts;                                            >
-
-
-<!--                    section 4                                  -->
-<!ELEMENT  sect4        (title, (%paralevel;)+)                      >
-<!--         id         unique identifier                          -->
-<!ATTLIST  sect4
-            %common.atts;                                            >
-
-
-<!--                    appendix                                   -->
-<!ELEMENT  appendix     (title, (((%paralevel;)+, sect1*) | sect1+)) >
-<!--         id         unique identifier                          -->
-<!ATTLIST  appendix
-            %common.atts;                                            >
-
-
-<!--                    bibliography                               -->
-<!ELEMENT  bibliography (title, biblioitem+)                         >
-<!--         id         unique identifier                          -->
-<!ATTLIST  bibliography
-            %common.atts;                                            >
-
-
-<!--                    bibliography item                          -->
-<!ELEMENT  biblioitem   (designator, biblioentry)                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  biblioitem
-            %common.atts;                                            >
-
-
-<!--                    bibliography item designator               -->
-<!--                    designator contains whatever designator the
-                        author uses to identify publications listed in
-                        the bibliography (e.g., [lab 87]).  the
-                        stylesheet generates the square "[]" brackets
-                        fore & aft.                                -->
-<!ELEMENT  designator   (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  designator
-            %common.atts;                                            >
-
-
-<!--                    bibliography entry                         -->
-<!ELEMENT  biblioentry  (#PCDATA | %phraselevel;)*                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  biblioentry
-            %common.atts;                                            >
-
-
-<!-- ============================================================= -->
-<!--                    author-related elements                    -->
-<!-- ============================================================= -->
-
-
-<!--                    first name                                 -->
-<!ELEMENT  firstname    (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  firstname
-            %common.atts;                                            >
-
-
-<!--                    surname                                    -->
-<!ELEMENT  surname      (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  surname
-            %common.atts;                                            >
-
-
-<!--                    job title                                  -->
-<!ELEMENT  jobtitle     (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  jobtitle
-            %common.atts;                                            >
-
-
-<!--                    organization name                          -->
-<!ELEMENT  orgname      (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  orgname
-            %common.atts;                                            >
-
-
-<!--                    address                                    -->
-<!ELEMENT  address      (street?, pob?, city?, state?, postcode?, 
-                         country?, phone?, fax?, email?)             >
-<!--         id         unique identifier                          -->
-<!ATTLIST  address
-            %common.atts;                                            >
-
-
-<!-- ============================================================= -->
-<!--                    address elements                           -->
-<!-- ============================================================= -->
-
-
-<!--                    street address                             -->
-<!ELEMENT  street       (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  street
-            %common.atts;                                            >
-
-
-<!--                    post office box                            -->
-<!ELEMENT  pob          (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  pob
-            %common.atts;                                            >
-
-
-<!--                    postcode                                   -->
-<!ELEMENT  postcode     (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  postcode
-            %common.atts;                                            >
-
-
-<!--                    city                                       -->
-<!ELEMENT  city         (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  city
-            %common.atts;                                            >
-
-
-<!--                    state                                      -->
-<!ELEMENT  state        (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  state
-            %common.atts;                                            >
-
-
-<!--                    country                                    -->
-<!ELEMENT  country      (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  country
-            %common.atts;                                            >
-
-
-<!--                    phone number                               -->
-<!ELEMENT  phone        (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  phone
-            %common.atts;                                            >
-
-
-<!--                    fax number                                 -->
-<!ELEMENT  fax          (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  fax
-            %common.atts;                                            >
-
-
-<!--                    email address                              -->
-<!ELEMENT  email        (#PCDATA)                                    >
-<!--         id         unique identifier                          -->
-<!ATTLIST  email
-            %common.atts;                                            >
-
-
-<!-- ============================================================= -->
-<!--                    paragraph-level elements                   -->
-<!-- ============================================================= -->
-
-
-<!--                    paragraph                                  -->
-<!ELEMENT  para         (#PCDATA | %phraselevel;)*                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  para
-            %common.atts;                                            >
-
-
-<!--                    note                                       -->
-<!ELEMENT  note         (%paralevel;)+                               >
-<!--         id         unique identifier                          -->
-<!ATTLIST  note
-            %common.atts;                                            >
-
-
-<!--                    itemized list                              -->
-<!ELEMENT  itemizedlist (listitem+)                                  >
-<!--         id         unique identifier                          -->
-<!ATTLIST  itemizedlist
-            %common.atts;                                            >
-
-
-<!--                    ordered list                               -->
-<!ELEMENT  orderedlist  (listitem+)                                  >
-<!--         id         unique identifier                          -->
-<!ATTLIST  orderedlist
-            %common.atts;                                            >
-
-
-<!--                    variable list                              -->
-<!ELEMENT  variablelist (varlistentry+)                              >
-<!--         id         unique identifier                          -->
-<!ATTLIST  variablelist
-            %common.atts;                                            >
-
-
-<!--                    list item                                  -->
-<!ELEMENT  listitem     (#PCDATA | %phraselevel; | %paralevel;)*     >
-<!--         id         unique identifier                          -->
-<!ATTLIST  listitem
-            %common.atts;                                            >
-
-
-<!--                    variable list entry                        -->
-<!ELEMENT  varlistentry (term+, listitem)                            >
-<!--         id         unique identifier                          -->
-<!ATTLIST  varlistentry
-            %common.atts;                                            >
-
-
-<!--                    term                                       -->
-<!ELEMENT  term         (#PCDATA | %phraselevel;)*                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  term
-            %common.atts;                                            >
-
-<!--                    termref                                       -->
-<!ELEMENT  termref         (#PCDATA | %phraselevel;)*                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  termref
-            %common.atts;	   >
-
-<!--                    literal layout                             -->
-<!ELEMENT  literallayout
-                        (#PCDATA | %phraselevel;)*                   >
-<!--         xml:space  whitespace handling
-             id         unique identifier                          -->
-<!ATTLIST  literallayout
-            %common.atts;                                            >
-
-
-<!--                    program listing                            -->
-<!ELEMENT  programlisting
-                        (#PCDATA | %phraselevel;)*                   >
-<!--         xml:space  whitespace handling
-             id         unique identifier                          -->
-<!ATTLIST  programlisting
-            %common.atts;                                            >
-
-
-<!--                    figure                                     -->
-<!ELEMENT  figure       (title, graphic)                             >
-<!--         id         unique identifier                          -->
-<!ATTLIST  figure
-            %common.atts;                                            >
-
-
-<!--                    graphic                                    -->
-<!ELEMENT  graphic      EMPTY                                        >
-<!--         align      alignment of graphic image.  values are:
-                          left          left aligned
-                          right         right aligned
-                          center        centered
-             fileref    path to external file
-             alt        alternate text
-             srccredit  source of graphic
-             width      width of area in which to fit graphic
-             depth      depth of area in which to fit graphic
-             scale      percentage scaling factor
-             scalefit   scale to fit width and/or depth
-             id         unique identifier                          -->
-<!ATTLIST  graphic
-             align      (left |right |center)              #IMPLIED
-            %graphic.atts;
-            %common.atts;                                            >
-
-<!--                    inline graphic                             -->
-<!ELEMENT  inlinegraphic
-                        EMPTY                                        >
-<!--         fileref    path to external file
-             alt        alternate text
-             srccredit  source of graphic
-             width      width of area in which to fit graphic
-             depth      depth of area in which to fit graphic
-             scale      percentage scaling factor
-             scalefit   scale to fit width and/or depth
-             id         unique identifier                          -->
-<!ATTLIST  inlinegraphic
-            %graphic.atts;
-            %common.atts;                                            >
-
-<!-- ============================================================= -->
-<!--                    text-level elements                        -->
-<!-- ============================================================= -->
-
-
-<!--                    bibliographic citation                     -->
-<!--                    a <citation> appears in the body of the
-                        article, and it refers through its
-                        "linkend" attribute to the id of the
-                        relevant bibliography item.
-                          the <citation> receives the same
-                        formatting as the <designator> element
-                        within the <biblioitem> being referenced.
-                        for example, when for the bibitem
-                        <biblioitem id="bib1"><designator>lab
-                        87</designator>...</biblioitem> is
-                        formatted as "[lab 87]", the bibliographic
-                        citation <citation linkend="bib1">lab
-                        87</citation> also formats as "[lab 87]".  -->
-<!ELEMENT  citation     (#PCDATA | emphasis | inlinegraphic |
-                         subscript | superscript)*                   >
-<!--         linkend    id of referenced bibliography entry
-             id         unique identifier                          -->
-<!ATTLIST  citation
-             linkend    IDREF                              #REQUIRED
-            %common.atts;                                            >
-
-
-<!--                    emphasis                                   -->
-<!ELEMENT  emphasis     (#PCDATA | %phraselevel;)*                   >
-<!--         id         unique identifier                          -->
-<!ATTLIST  emphasis
-            %common.atts;                                            >
-
-
-<!--                    subscript                                  -->
-<!ELEMENT  subscript    (#PCDATA | emphasis | subscript |
-                         superscript)*                               >
-<!--         id         unique identifier                          -->
-<!ATTLIST  subscript
-            %common.atts;                                            >
-
-
-<!--                    superscript                                -->
-<!ELEMENT  superscript  (#PCDATA | emphasis | subscript |
-                         superscript)*                               >
-<!--         id         unique identifier                          -->
-<!ATTLIST  superscript
-            %common.atts;                                            >
-
-
-<!--                    link                                       -->
-<!ELEMENT  link         (#PCDATA)                                    >
-<!--         linkend    id of referenced element
-             id         unique identifier                          -->
-<!ATTLIST  link
-             linkend    IDREF                              #REQUIRED
-            %common.atts;                                            >
-
-<!--  package link (for {@link org.xml.trax.Processor} type links, for javadocs.                              -->
-<!ELEMENT  plink         (#PCDATA)                                   >
-<!ATTLIST  plink
-            %common.atts;                                            >
-
-<!--                    ulink (external link)                      -->
-<!ELEMENT  ulink        (#PCDATA)                                    >
-<!--         url        uniform resource locator; the target of the
-                        ulink
-             id         unique identifier                          -->
-<!ATTLIST  ulink
-             url        CDATA                              #REQUIRED
-            %common.atts;                                            >
-
-
diff --git a/xdocs/style/dtd/xsl-html40s.dtd b/xdocs/style/dtd/xsl-html40s.dtd
deleted file mode 100644
index a8848bd..0000000
--- a/xdocs/style/dtd/xsl-html40s.dtd
+++ /dev/null
@@ -1,1505 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-     XSLT (WD-19990813) DTD and HTML 4.0 Strict (REC-HTML40-19980424) DTD
-     This DTD defines a XSLT stylesheet with a result-ns of html
-
-     Credits:
-       Original XSLT DTD from W3C XSLT WD-19990813
-       Original XML  DTD for HTML 4.0 Strict by
-         TAMURA, Kent <kent@trl.ibm.co.jp>, for IBM's XML4J package
-       Minor fixes to XSLT & HTML DTDs by 
-         Scott Boag <scott_boag@lotus.com>
-         Henrique M. Holschuh <henriqmh@dca.fee.unicamp.br>
-       HTML/XSLT composite DTD by
-         Henrique M. Holschuh <henriqmh@dca.fee.unicamp.br>
-
-     Caveats: It is possible to generate invalid XSLT and HTML documents 
-       using this DTD, as the result-ns elements (HTML) must allow all 
-       possible xsl elements as content, and all result-ns elements had 
-       to be relaxed on their element content rules.
-
-     TODO:
-       - A XSLT/XHTML1.0 Strict DTD to use instead of this one. Lowercase
-         element names allow for better compression ratios, at least in
-         English documents.
-       - Update to HTML 4.01
-
-     $Id$
--->
-
-<!-- Predefined XML (REC-XML-19980210) entities -->
-<!ENTITY lt     "&#38;#60;">
-<!ENTITY gt     "&#62;">
-<!ENTITY amp    "&#38;#38;">
-<!ENTITY apos   "&#39;">
-<!ENTITY quot   "&#34;">
-
-<!-- 
-  Result elements allowed (inside xsl elements). These are actually
-  all of the HTML40 Strict elements. 
--->
-
-<!ENTITY % result-elements "
-  | TT
-  | I
-  | B
-  | BIG
-  | SMALL
-  | EM
-  | STRONG
-  | DFN
-  | CODE
-  | SAMP
-  | KBD
-  | VAR
-  | CITE
-  | ABBR
-  | ACRONYM
-  | SUP
-  | SUB
-  | SPAN
-  | BDO
-  | BR
-  | BODY
-  | ADDRESS
-  | DIV
-  | A
-  | MAP
-  | AREA
-  | LINK
-  | IMG
-  | OBJECT
-  | PARAM
-  | HR
-  | P
-  | H1
-  | H2
-  | H3
-  | H4
-  | H5
-  | H6
-  | PRE
-  | Q
-  | BLOCKQUOTE
-  | INS
-  | DEL
-  | DL
-  | DT
-  | DD
-  | OL
-  | UL
-  | LI
-  | FORM
-  | LABEL
-  | INPUT
-  | SELECT
-  | OPTGROUP
-  | OPTION
-  | TEXTAREA
-  | FIELDSET
-  | LEGEND
-  | BUTTON
-  | TABLE
-  | CAPTION
-  | THEAD
-  | TFOOT
-  | TBODY
-  | COLGROUP
-  | COL
-  | TR
-  | TH
-  | TD
-  | HEAD
-  | TITLE
-  | BASE
-  | META
-  | STYLE
-  | SCRIPT
-  | NOSCRIPT
-  | HTML
-">
-
-<!-- begin XSLT DTD, patched -->
-
-<!ENTITY % char-instructions "
- | xsl:apply-templates
- | xsl:call-template
- | xsl:apply-imports
- | xsl:for-each
- | xsl:value-of
- | xsl:copy-of
- | xsl:number
- | xsl:choose
- | xsl:if
- | xsl:text
- | xsl:copy
- | xsl:variable
- | xsl:message
-">
-
-<!ENTITY % instructions "
- %char-instructions;
- | xsl:processing-instruction
- | xsl:comment
- | xsl:element
- | xsl:attribute
-">
-
-<!ENTITY % char-template "
-(#PCDATA
- %char-instructions;)*
-">
-
-<!ENTITY % template "
-(#PCDATA
- %instructions;
- %result-elements;)*
-">
-
-<!-- Used for the type of an attribute value that is a URI reference.-->
-<!ENTITY % URI "CDATA">
-
-<!-- Used for the type of an attribute value that is a pattern.-->
-<!ENTITY % pattern "CDATA">
-
-<!-- Used for the type of an attribute value that is an
-    attribute value template.-->
-<!ENTITY % avt "CDATA">
-
-<!-- Used for the type of an attribute value that is a QName; the prefix
-    gets expanded by the XSLT processor. -->
-<!ENTITY % qname "NMTOKEN">
-
-<!-- Like qname but a whitespace-separated list of QNames. -->
-<!ENTITY % qnames "NMTOKENS">
-
-<!-- Used for the type of an attribute value that is an expression.-->
-<!ENTITY % expr "CDATA">
-
-<!-- Used for the type of an attribute value that consists
-    of a single character.-->
-<!ENTITY % char "CDATA">
-
-<!-- Used for the type of an attribute value that is a priority. -->
-<!ENTITY % priority "NMTOKEN">
-
-<!ENTITY % space-att "xml:space (default|preserve) #IMPLIED">
-
-<!-- This may be overridden to customize the set of elements allowed
-at the top-level. -->
-
-<!ENTITY % non-xsl-top-level "">
-
-<!ENTITY % top-level "
-(xsl:import*,
- (xsl:include
- | xsl:strip-space
- | xsl:preserve-space
- | xsl:output
- | xsl:key
- | xsl:locale
- | xsl:attribute-set
- | xsl:variable
- | xsl:param
- | xsl:template
- %non-xsl-top-level;)*)
-">
-
-<!-- added xmlns attribute suitable for this DTD -->
-<!ENTITY % top-level-atts '
- extension-element-prefixes CDATA #IMPLIED
- id ID #IMPLIED
- xmlns:xsl CDATA #FIXED "http://www.w3.org/XSL/1999/Transform"
- xmlns CDATA #FIXED "http://www.w3.org/TR/REC-html40"
- %space-att;
-'>
-
-<!-- This entity is defined for use in the ATTLIST declaration
-for result elements. -->
-
-<!ENTITY % result-element-atts '
- xsl:extension-element-prefixes CDATA #IMPLIED
- xsl:use-attribute-sets %qnames; #IMPLIED
-'>
-
-<!ELEMENT xsl:stylesheet %top-level;>
-<!ATTLIST xsl:stylesheet %top-level-atts;>
-
-<!ELEMENT xsl:transform %top-level;>
-<!ATTLIST xsl:transform %top-level-atts;>
-
-<!ELEMENT xsl:import EMPTY>
-<!ATTLIST xsl:import href %URI; #REQUIRED>
-
-<!ELEMENT xsl:include EMPTY>
-<!ATTLIST xsl:include href %URI; #REQUIRED>
-
-<!ELEMENT xsl:strip-space EMPTY>
-<!ATTLIST xsl:strip-space elements CDATA #REQUIRED>
-
-<!ELEMENT xsl:preserve-space EMPTY>
-<!ATTLIST xsl:preserve-space elements CDATA #REQUIRED>
-
-<!ELEMENT xsl:output EMPTY>
-<!ATTLIST xsl:output
- method %qname; #IMPLIED
- version NMTOKEN #IMPLIED
- encoding NMTOKEN #IMPLIED
- xml-declaration (yes|no) #IMPLIED
- standalone (yes|no) #IMPLIED
- doctype-public CDATA #IMPLIED
- doctype-system CDATA #IMPLIED
- cdata-section-elements %qnames; #IMPLIED
- indent (yes|no) #IMPLIED
- media-type CDATA #IMPLIED
->
-
-<!ELEMENT xsl:key EMPTY>
-<!ATTLIST xsl:key
- name %qname; #REQUIRED
- match %pattern; #REQUIRED
- use %expr; #REQUIRED
->
-
-<!ELEMENT xsl:locale EMPTY>
-<!ATTLIST xsl:locale
- name %qname; #IMPLIED
- decimal-separator %char; "."
- grouping-separator %char; ","
- infinity CDATA "&#x221E;"
- minus-sign %char; "-"
- NaN CDATA "&#xFFFD;"
- percent %char; "%"
- per-mille %char; "&#x2030;"
- zero-digit %char; "0"
- digit %char; "#"
- pattern-separator %char; ";"
->
-
-<!ELEMENT xsl:template
-(#PCDATA
- %instructions;
- %result-elements;
- | xsl:param)*
->
-
-<!ATTLIST xsl:template
- match %pattern; #IMPLIED
- name %qname; #IMPLIED
- priority %priority; #IMPLIED
- mode %qname; #IMPLIED
- %space-att;
->
-
-<!ELEMENT xsl:value-of EMPTY>
-<!ATTLIST xsl:value-of
- select %expr; #REQUIRED
- disable-output-escaping (yes|no) "no"
->
-
-<!ELEMENT xsl:copy-of EMPTY>
-<!ATTLIST xsl:copy-of select %expr; #REQUIRED>
-
-<!ELEMENT xsl:number EMPTY>
-<!ATTLIST xsl:number
-  level (single|multiple|any) "single"
-  count %pattern; #IMPLIED
-  from %pattern; #IMPLIED
-  value %expr; #IMPLIED
-  format %avt; '1'
-  lang %avt; #IMPLIED
-  letter-value %avt; #IMPLIED
-  grouping-separator%avt; #IMPLIED
-  grouping-size %avt; #IMPLIED
->
-
-<!ELEMENT xsl:apply-templates (xsl:sort|xsl:with-param)*>
-<!ATTLIST xsl:apply-templates
- select %expr; "node()"
- mode %qname; #IMPLIED
->
-
-<!ELEMENT xsl:apply-imports EMPTY>
-
-<!-- xsl:sort cannot occur after any other elements or
-any non-whitespace character -->
-
-<!ELEMENT xsl:for-each
-(#PCDATA
- %instructions;
- %result-elements;
- | xsl:sort)*
->
-
-<!ATTLIST xsl:for-each
- select %expr; #REQUIRED
- %space-att;
->
-
-<!ELEMENT xsl:sort EMPTY>
-<!ATTLIST xsl:sort
- select %expr; "."
- lang %avt; #IMPLIED
- data-type %avt; "text"
- order %avt; "ascending"
- case-order %avt; #IMPLIED
->
-
-<!ELEMENT xsl:if %template;>
-<!ATTLIST xsl:if
- test %expr; #REQUIRED
- %space-att;
->
-
-<!ELEMENT xsl:choose (xsl:when+, xsl:otherwise?)>
-<!ATTLIST xsl:choose %space-att;>
-
-<!ELEMENT xsl:when %template;>
-<!ATTLIST xsl:when
- test %expr; #REQUIRED
- %space-att;
->
-
-<!ELEMENT xsl:otherwise %template;>
-<!ATTLIST xsl:otherwise %space-att;>
-
-<!ELEMENT xsl:attribute-set (xsl:attribute)*>
-<!ATTLIST xsl:attribute-set
- name %qname; #REQUIRED
- use-attribute-sets %qnames; #IMPLIED
->
-
-<!ELEMENT xsl:call-template (xsl:with-param)*>
-<!ATTLIST xsl:call-template
- name %qname; #REQUIRED
->
-
-<!ELEMENT xsl:with-param %template;>
-<!ATTLIST xsl:with-param
- name %qname; #REQUIRED
- select %expr; #IMPLIED
->
-
-<!ELEMENT xsl:variable %template;>
-<!ATTLIST xsl:variable 
- name %qname; #REQUIRED
- select %expr; #IMPLIED
->
-
-<!ELEMENT xsl:param %template;>
-<!ATTLIST xsl:param 
- name %qname; #REQUIRED
- select %expr; #IMPLIED
->
-
-<!ELEMENT xsl:text (#PCDATA)>
-<!ATTLIST xsl:text
- disable-output-escaping (yes|no) "no"
->
-
-<!ELEMENT xsl:processing-instruction %char-template;>
-<!ATTLIST xsl:processing-instruction 
- name %avt; #REQUIRED
- %space-att;
->
-
-<!ELEMENT xsl:element %template;>
-<!ATTLIST xsl:element 
- name %avt; #REQUIRED
- namespace %avt; #IMPLIED
- use-attribute-sets %qnames; #IMPLIED
- %space-att;
->
-
-<!ELEMENT xsl:attribute %char-template;>
-<!ATTLIST xsl:attribute 
- name %avt; #REQUIRED
- namespace %avt; #IMPLIED
- %space-att;
->
-
-<!ELEMENT xsl:comment %char-template;>
-<!ATTLIST xsl:comment %space-att;>
-
-<!ELEMENT xsl:copy %template;>
-<!ATTLIST xsl:copy
- %space-att;
- use-attribute-sets %qnames; #IMPLIED
->
-
-<!ELEMENT xsl:message %template;>
-<!ATTLIST xsl:message %space-att;>
-
-<!ELEMENT xsl:fallback %template;>
-<!ATTLIST xsl:fallback %space-att;>
-
-
-
-<!-- ######################################################################## -->
-<!--   HTML 4.0 Strict DTD   (revised to allow for xsl content)               -->
-<!--   Original DTD from XML4J package                                        -->
-<!--   Original SGML to XML conversion by TAMURA, Kent for IBM's XML4J        -->
-
-<!-- 
-     Container for all xsl elements allowed inside result-elements elements,
-     i.e.: all xsl elements which are valid where a result-element is valid,
-     and therefore must be valid inside ALL non-empty HTML elements.
-
-     You'll notice this does allow the user to create invalid XSL documents.
-
-  xsl:sort, xsl:param, xsl:param-variable were not inluded because
-  IMHO it is bad practice (and an error?) not to include them before 
-  other siblings, especially result-ns ones.
--->
-
-<!-- While the content should be simply %instructions; we cannot do that
-     due to the first '|' in %instructions -->
-<!ENTITY % xsl-valid-in-resultns "
-  xsl:processing-instruction
-  | xsl:comment
-  | xsl:element
-  | xsl:attribute
-  %char-instructions;
-">
-
-<!-- Also, %result-element-atts; was added to the ATTLIST of all html
-     elments -->
-
-<!-- Revision: 23 1.3 docs/data/HTML40strict.xml.dtd, xml4jdocs, xml4j-jtcsv, xml4j_1_1_9  -->
-
-<!--
-    This is HTML 4.0 Strict DTD, which excludes the presentation 
-    attributes and elements that W3C expects to phase out as 
-    support for style sheets matures. Authors should use the Strict
-    DTD when possible, but may use the Transitional DTD when support
-    for presentation attribute and elements is required.
-    
-    HTML 4.0 includes mechanisms for style sheets, scripting,
-    embedding objects, improved support for right to left and mixed
-    direction text, and enhancements to forms for improved
-    accessibility for people with disabilities.
-
-          Draft: Date: 1998/07/06 17:50:32
-
-          Authors:
-              Dave Raggett <dsr@w3.org>
-              Arnaud Le Hors <lehors@w3.org>
-              Ian Jacobs <ij@w3.org>
-
-    Further information about HTML 4.0 is available at:
-
-        http://www.w3.org/TR/REC-html40
--->
-
-<!--
-    ================================================================
-    Modified for XML 1.0 by:
-	"TAMURA, Kent" <kent@trl.ibm.co.jp>
-
-    o HTMLspecial, HTMLsymbol, HTMLlat1 aren't included in this DTD.
-    o The `lang' attribute was renamed to `xml:lang'.
-
-
-    Typical usage:
-
-    <?xml version="1.0" encoding="..."?>
-    <!DOCTYPE HTML SYSTEM ".../HTML40strict.xml.dtd">
-    <HTML>
-      <HEAD>
-        ...
-        <TITLE>...</TITLE>
-        ...
-      </HEAD>
-      <BODY>
-        ...
-      </BODY>
-    </HTML>
-
-    Note: XML is case-sensitive.  So element names must be written
-    in uppercase and attribute names must be written in lowercase.
-    ================================================================
--->
-
-<!--
-    Typical usage:
-
-    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
-            "http://www.w3.org/TR/REC-html40/strict.dtd">
-    <html>
-    <head>
-    ...
-    </head>
-    <body>
-    ...
-    </body>
-    </html>
-
-    The URI used as a system identifier with the public identifier allows
-    the user agent to download the DTD and entity sets as needed.
-
-    The FPI for the Transitional HTML 4.0 DTD is:
-
-        "-//W3C//DTD HTML 4.0 Transitional//EN"
-
-    and its URI is:
-
-        http://www.w3.org/TR/REC-html40/loose.dtd
-
-    If you are writing a document that includes frames, use 
-    the following FPI:
-
-        "-//W3C//DTD HTML 4.0 Frameset//EN"
-
-    with the URI:
-
-        http://www.w3.org/TR/REC-html40/frameset.dtd
-
-    The following URIs are supported in relation to HTML 4.0
-
-    "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD)
-    "http://www.w3.org/TR/REC-html40/loose.dtd" (Loose DTD)
-    "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD)
-    "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (Latin-1 entities)
-    "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (Symbol entities)
-    "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (Special entities)
-
-    These URIs point to the latest version of each file. To reference
-    this specific revision use the following URIs:
-
-    "http://www.w3.org/TR/REC-html40-971218/strict.dtd"
-    "http://www.w3.org/TR/REC-html40-971218/loose.dtd"
-    "http://www.w3.org/TR/REC-html40-971218/frameset.dtd"
-    "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent"
-    "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent"
-    "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent"
-
--->
-
-<!--=== for XML ===-->
-<!ENTITY % Number "CDATA">
-<!ENTITY % Name "NMTOKEN">
-
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA"
-> <!-- media type, as per [RFC2045]
-    -->
-
-<!ENTITY % ContentTypes "CDATA"
-> <!-- comma-separated list of media types, as per [RFC2045]
-    -->
-
-<!ENTITY % Charset "CDATA"
-> <!-- a character encoding, as per [RFC2045]
-    -->
-
-<!ENTITY % Charsets "CDATA"
-> <!-- a space separated list of character encodings, as per [RFC2045]
-    -->
-
-<!ENTITY % LanguageCode "NMTOKEN"
-> <!-- a language code, as per [RFC1766]
-    -->
-
-<!ENTITY % Character "CDATA"
-> <!-- a single character from [ISO10646] 
-    -->
-
-<!ENTITY % LinkTypes "CDATA"
-> <!-- space-separated list of link types
-    -->
-
-<!ENTITY % MediaDesc "CDATA"
-> <!-- single or comma-separated list of media descriptors
-    -->
-
-<!-- Defined elsewhere in this DTD
-<!ENTITY % URI "CDATA"
-> <! a Uniform Resource Identifier,
-       see [URI]
-    -->
-
-<!ENTITY % Datetime "CDATA"><!-- date and time information. ISO date format -->
-
-
-<!ENTITY % Script "CDATA"><!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA"><!-- style sheet data -->
-
-
-
-<!ENTITY % Text "CDATA">
-
-
-<!-- Parameter Entities -->
-
-<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT"><!-- repeatable head elements -->
-<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
-<!ENTITY % list "UL | OL">
-<!ENTITY % preformatted "PRE">
-
-
-<!--================ Character mnemonic entities =========================-->
-
-<!--ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin1//EN//HTML"
-   "HTMLlat1.ent"-->
-<!--   "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent"-->
-<!--%HTMLlat1;-->
-
-<!--ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols//EN//HTML"
-   "HTMLsymbol.ent"-->
-<!--   "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent"-->
-<!--%HTMLsymbol;-->
-
-<!--ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special//EN//HTML"
-   "HTMLspecial.ent"-->
-<!--   "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent"-->
-<!--%HTMLspecial;-->
-
-<!-- We define these elsewhere in this mixed DTD
-<!ENTITY quot "&#34;">
-<!ENTITY amp  "&#38;">
-<!ENTITY lt   "&#60;">
-<!ENTITY gt   "&#62;">
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  %result-element-atts;"
->
-
-<!ENTITY % i18n
- "xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- Reserved Feature Switch -->
-<!ENTITY % HTML.Reserved "IGNORE">
-
-<!-- The following attributes are reserved for possible future use -->
-<![ %HTML.Reserved; [
-<!ENTITY % reserved
- "datasrc     %URI;          #IMPLIED
-  datafld     CDATA          #IMPLIED
-  dataformatas (plaintext|html) plaintext"
-  >
-]]>
-
-<!ENTITY % reserved "">
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-
-<!--=================== Text Markup ======================================-->
-
-<!ENTITY % fontstyle
- "TT | I | B | BIG | SMALL">
-
-<!ENTITY % phrase "EM | STRONG | DFN | CODE |
-                   SAMP | KBD | VAR | CITE | ABBR | ACRONYM" >
-
-<!ENTITY % special
-   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
-<!ENTITY % special-A
-   "IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">
-
-<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">
-
-<!-- %inline; covers inline or "text-level" elements -->
-<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
-<!ENTITY % inline-A "#PCDATA | %fontstyle; | %phrase; | %special-A; | %formctrl;">
-<!ENTITY % inline-LABEL "#PCDATA | %fontstyle; | %phrase; | %special; | INPUT | SELECT | TEXTAREA | BUTTON">
-
-<!--
-<!ELEMENT (%fontstyle;|%phrase;)     (%inline;)*>
-<!ATTLIST (%fontstyle;|%phrase;)
-  %attrs;
-  >-->
-<!ELEMENT TT (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST TT %attrs;>
-<!ELEMENT I (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST I %attrs;>
-<!ELEMENT B (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST B %attrs;>
-<!ELEMENT BIG (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST BIG %attrs;>
-<!ELEMENT SMALL (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST SMALL %attrs;>
-<!ELEMENT EM (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST EM %attrs;>
-<!ELEMENT STRONG (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST STRONG %attrs;>
-<!ELEMENT DFN (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST DFN %attrs;>
-<!ELEMENT CODE (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST CODE %attrs;>
-<!ELEMENT SAMP (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST SAMP %attrs;>
-<!ELEMENT KBD (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST KBD %attrs;>
-<!ELEMENT VAR (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST VAR %attrs;>
-<!ELEMENT CITE (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST CITE %attrs;>
-<!ELEMENT ABBR (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST ABBR %attrs;>
-<!ELEMENT ACRONYM (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST ACRONYM %attrs;>
-
-
-<!ELEMENT SUP (%inline; | %xsl-valid-in-resultns;)*><!-- subscript, superscript -->
-<!ATTLIST SUP
-  %attrs;
-  >
-<!ELEMENT SUB (%inline; | %xsl-valid-in-resultns;)*><!-- subscript, superscript -->
-<!ATTLIST SUB
-  %attrs;
-  >
-
-<!ELEMENT SPAN (%inline; | %xsl-valid-in-resultns;)*><!-- generic language/style container -->
-<!ATTLIST SPAN
-  %attrs;
-  %reserved;			
-  >
-
-<!ELEMENT BDO (%inline; | %xsl-valid-in-resultns;)*><!-- I18N BiDi over-ride -->
-<!ATTLIST BDO
-  %coreattrs;
-  lang        %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-
-<!ELEMENT BR     EMPTY><!-- forced line break -->
-<!ATTLIST BR
-  %coreattrs;
-  >
-
-<!--================== HTML content models ===============================-->
-
-<!--
-    HTML has two basic content models:
-
-        %inline;     character level elements and text strings
-        %block;      block-like elements e.g. paragraphs and lists
--->
-
-<!ENTITY % block
-     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
-      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
-<!ENTITY % block-FORM
-     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
-      BLOCKQUOTE | HR | TABLE | FIELDSET | ADDRESS">
-<!ENTITY % block-FORM-FIELDSET
-     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
-      BLOCKQUOTE | HR | TABLE | ADDRESS">
-
-<!--<!ENTITY % flow "%block; | %inline;">-->
-<!ENTITY % flow "%inline; | %block;">
-
-<!--=================== Document Body ====================================-->
-
-<!--ELEMENT BODY     (%block;|SCRIPT)+ +(INS|DEL)  document body -->
-<!ELEMENT BODY ((INS|DEL)*, (%xsl-valid-in-resultns;|%block;|SCRIPT), (INS|DEL)*)+ ><!-- document body -->
-<!ATTLIST BODY
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT ADDRESS (%inline; | %xsl-valid-in-resultns;)*><!-- information on author -->
-<!ATTLIST ADDRESS
-  %attrs;
-  >
-
-<!ELEMENT DIV (%flow; | %xsl-valid-in-resultns;)*><!-- generic language/style container -->
-<!ATTLIST DIV
-  %attrs;
-  %reserved;
-  >
-
-
-<!--================== The Anchor Element ================================-->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-<!ENTITY % Coords "CDATA"><!-- comma separated list of lengths -->
-
-<!ELEMENT A (%inline-A; | %xsl-valid-in-resultns;)*><!-- anchor -->
-<!ATTLIST A
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        CDATA          #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT MAP  ((%xsl-valid-in-resultns;|%block;)+ | (%xsl-valid-in-resultns;|AREA+))><!-- client-side image map -->
-<!ATTLIST MAP
-  %attrs;
-  name        CDATA          #REQUIRED
-  >
-
-<!ELEMENT AREA     EMPTY><!-- client-side image map area -->
-<!ATTLIST AREA
-  %attrs;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  tabindex    %Number;       #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!--================== The LINK Element ==================================-->
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the LINK element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel=stylesheet)
-   c) to make a link to a script (rel=script)
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a postscript or pdf version (rel=alternate media=print)
--->
-
-<!ELEMENT LINK     EMPTY><!-- a media-independent link -->
-<!ATTLIST LINK
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!-- Length defined in strict DTD for cellpadding/cellspacing -->
-<!ENTITY % Length "CDATA"><!-- nn for pixels or nn% for percentage length -->
-<!ENTITY % MultiLength "CDATA"><!-- pixel, percentage, or relative -->
-
-<!ENTITY % MultiLengths "CDATA"><!-- comma-separated list of MultiLength -->
-
-<!ENTITY % Pixels "CDATA"><!-- integer representing length in pixels -->
-
-
-<!-- To avoid problems with text-only UAs as well as 
-   to make image content understandable and navigable 
-   to users of non-visual UAs, you need to provide
-   a description with ALT, and avoid server-side image maps -->
-<!ELEMENT IMG     EMPTY><!-- Embedded image -->
-<!ATTLIST IMG
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- USEMAP points to a MAP element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--==================== OBJECT ======================================-->
-<!--
-  OBJECT is used to embed objects as part of HTML pages 
-  PARAM elements should precede other content. SGML mixed content
-  model technicality precludes specifying this formally ...
--->
-
-<!ELEMENT OBJECT (%flow; | %xsl-valid-in-resultns; | PARAM)*
-><!-- generic embedded object -->
-<!ATTLIST OBJECT
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %URI;          #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        CDATA          #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  %reserved;
-  >
-
-<!ELEMENT PARAM     EMPTY><!-- named property value -->
-<!ATTLIST PARAM
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (DATA|REF|OBJECT) "DATA"
-  type        %ContentType;  #IMPLIED
-  >
-
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT HR     EMPTY><!-- horizontal rule -->
-<!ATTLIST HR
-  %coreattrs;
-  %events;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT P (%inline; | %xsl-valid-in-resultns;)*><!-- paragraph -->
-<!ATTLIST P
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from H1 (the most important)
-  to H6 (the least important).
--->
-
-<!--
-<!ELEMENT (%heading;)      (%inline;)*>
-<!ATTLIST (%heading;)
-  %attrs;
-  >-->
-<!ELEMENT H1 (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST H1 %attrs;>
-<!ELEMENT H2 (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST H2 %attrs;>
-<!ELEMENT H3 (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST H3 %attrs;>
-<!ELEMENT H4 (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST H4 %attrs;>
-<!ELEMENT H5 (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST H5 %attrs;>
-<!ELEMENT H6 (%inline; | %xsl-valid-in-resultns;)*>
-<!ATTLIST H6 %attrs;>
-
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- excludes markup for images and changes in font size -->
-<!--
-<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP">
-
-<!ELEMENT PRE  (%inline;)* -(%pre.exclusion;)><! preformatted text -->
-
-<!ELEMENT PRE (#PCDATA |%xsl-valid-in-resultns;| TT|I|B|%phrase;|A|BR|SCRIPT|MAP|Q|SPAN|BDO|%formctrl;)*>
-			<!-- preformatted text -->
-<!ATTLIST PRE
-  %attrs;>
-<!-- Should the attribute below be incuded in PRE?
-  xml:space (default|preserve) #FIXED "preserve"
--->
-
-<!--===================== Inline Quotes ==================================-->
-
-<!ELEMENT Q  (%inline; | %xsl-valid-in-resultns;)*><!-- short inline quotation -->
-<!ATTLIST Q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT BLOCKQUOTE  (%block;|%xsl-valid-in-resultns;|SCRIPT)+><!-- long quotation -->
-<!ATTLIST BLOCKQUOTE
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-
-<!-- INS/DEL are handled by inclusion on BODY -->
-<!ELEMENT INS (%flow;|%xsl-valid-in-resultns;)*><!-- inserted text, deleted text -->
-<!ATTLIST INS
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-<!ELEMENT DEL (%flow;|%xsl-valid-in-resultns;)*><!-- inserted text, deleted text -->
-<!ATTLIST DEL
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- definition lists - DT for term, DD for its definition -->
-
-<!ELEMENT DL  (%xsl-valid-in-resultns;| DT|DD)+><!-- definition list -->
-<!ATTLIST DL
-  %attrs;
-  >
-
-<!ELEMENT DT (%inline; | %xsl-valid-in-resultns;)*><!-- definition term -->
-<!ELEMENT DD (%flow; | %xsl-valid-in-resultns;)*><!-- definition description -->
-<!ATTLIST DT
-  %attrs;
-  >
-<!ATTLIST DD
-  %attrs;
-  >
-
-
-<!ELEMENT OL (%xsl-valid-in-resultns; | LI)+><!-- ordered list -->
-<!ATTLIST OL
-  %attrs;
-  >
-
-<!-- Unordered Lists (UL) bullet styles -->
-<!ELEMENT UL (%xsl-valid-in-resultns; | LI)+><!-- unordered list -->
-<!ATTLIST UL
-  %attrs;
-  >
-
-
-
-<!ELEMENT LI (%flow; | %xsl-valid-in-resultns;)*><!-- list item -->
-<!ATTLIST LI
-  %attrs;
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT FORM (%xsl-valid-in-resultns;|%block-FORM;|SCRIPT)+>
-
-<!-- interactive form -->
-<!ATTLIST FORM
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (GET|POST)     "GET"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!-- Each label must not contain more than ONE field -->
-<!ELEMENT LABEL  (%inline-LABEL; | %xsl-valid-in-resultns;)*><!-- form field label text -->
-<!ATTLIST LABEL
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(TEXT | PASSWORD | CHECKBOX |
-    RADIO | SUBMIT | RESET |
-    FILE | HIDDEN | IMAGE | BUTTON)"
-   >
-
-<!-- attribute name required for all but submit & reset -->
-<!ELEMENT INPUT     EMPTY><!-- form control -->
-<!ATTLIST INPUT
-  %attrs;
-  type        %InputType;    "TEXT"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  %reserved;
-  >
-
-<!ELEMENT SELECT ((%xsl-valid-in-resultns;|OPTGROUP)|(%xsl-valid-in-resultns;|OPTION))+ ><!-- option selector -->
-<!ATTLIST SELECT
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  %reserved;
-  >
-
-<!ELEMENT OPTGROUP (%xsl-valid-in-resultns;|OPTION)+>  <!-- option group -->
-<!ATTLIST OPTGROUP
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT OPTION  (#PCDATA | %xsl-valid-in-resultns;)*><!-- selectable choice -->
-<!ATTLIST OPTION
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT TEXTAREA (#PCDATA | %xsl-valid-in-resultns;)*><!-- multi-line text field -->
-<!ATTLIST TEXTAREA
-  %attrs;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  %reserved;
-  >
-
-<!--
-  #PCDATA is to solve the mixed content problem,
-  per specification only whitespace is allowed there!
-
-  We do allow XSL inside as well
- -->
-<!--ELEMENT FIELDSET     (#PCDATA,LEGEND,(%flow;)*)    form control group -->
-<!ELEMENT FIELDSET  (%flow;|%xsl-valid-in-resultns;|LEGEND)*><!-- form control group -->
-<!ATTLIST FIELDSET
-  %attrs;
-  >
-
-<!ELEMENT LEGEND (%inline;|%xsl-valid-in-resultns;)*><!-- fieldset legend -->
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ATTLIST LEGEND
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!ELEMENT BUTTON
-     (#PCDATA | %xsl-valid-in-resultns; | %fontstyle; | %phrase; | %special-A; | %block;)*
-><!-- push button -->
-<!ATTLIST BUTTON
-  %attrs;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  %reserved;
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The BORDER attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The FRAME attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the VALIGN attribute.
-
- The value "border" is included for backwards compatibility with
- <TABLE BORDER> which yields frame=border and border=implied
- For <TABLE BORDER=1> you get border=1 and frame=implied. In this
- case, it is appropriate to treat this as frame=border for backwards
- compatibility with deployed browsers.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The RULES attribute defines which rules to draw between cells:
-
- If RULES is absent then assume:
-     "none" if BORDER is absent or BORDER=0 otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents -->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT TABLE 
-  ((%xsl-valid-in-resultns;)*, CAPTION?, (%xsl-valid-in-resultns;)*,
-   ((COL | %xsl-valid-in-resultns;)*|(COLGROUP | %xsl-valid-in-resultns;)*),
-   ((THEAD?,(%xsl-valid-in-resultns;)*,TFOOT?,(%xsl-valid-in-resultns;|TBODY)+)
-    | (%xsl-valid-in-resultns;|TR)+) )>
-
-<!ELEMENT CAPTION   (%inline; | %xsl-valid-in-resultns;)*><!-- table caption -->
-<!ELEMENT THEAD     (TR|%xsl-valid-in-resultns;)+><!-- table header -->
-<!ELEMENT TFOOT     (TR|%xsl-valid-in-resultns;)+><!-- table footer -->
-<!ELEMENT TBODY     (TR|%xsl-valid-in-resultns;)+><!-- table body -->
-<!ELEMENT COLGROUP  (%xsl-valid-in-resultns; | COL)*><!-- table column group -->
-<!ELEMENT COL       EMPTY><!-- table column -->
-<!ELEMENT TR        (TH|TD| %xsl-valid-in-resultns;)+><!-- table row -->
-<!ELEMENT TH        (%flow; | %xsl-valid-in-resultns;)*><!-- table header cell, table data cell-->
-<!ELEMENT TD        (%flow; | %xsl-valid-in-resultns;)*><!-- table header cell, table data cell-->
-
-<!ATTLIST TABLE
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  %reserved;
-  datapagesize CDATA         #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST CAPTION
-  %attrs;
-  >
-
-<!--
-COLGROUP groups a set of COL elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST COLGROUP
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- COL elements define the alignment properties for cells in
- one or more columns.
-
- The WIDTH attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The SPAN attribute causes the attributes of one
- COL element to apply to more than one column.
--->
-<!ATTLIST COL
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use THEAD to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    TBODY sections are rendered in scrolling panel.
-
-    Use TFOOT to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    TBODY sections are rendered in scrolling panel.
-
-    Use multiple TBODY sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST THEAD
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-<!ATTLIST TBODY
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-<!ATTLIST TFOOT
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST TR
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than axes attribute for common tables -->
-<!ENTITY % Scope "(ROW|COL|ROWGROUP|COLGROUP)">
-
-<!-- TH is for headers, TD for data, but for cells acting as both use TD -->
-<!ATTLIST TH
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-<!ATTLIST TD
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!--================ Document Head =======================================-->
-<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT",
-     extended now to allow xsl -->
-<!ENTITY % head.misc-HEAD "%head.misc;|%xsl-valid-in-resultns;">
-
-<!ENTITY % head.content "TITLE &amp; BASE?">
-
-<!--ELEMENT HEAD     (%head.content;) +(%head.misc;)   document head -->
-<!ELEMENT HEAD
-   ((%head.misc-HEAD;)*, ((BASE?,(%head.misc-HEAD;)*,TITLE?) | (TITLE?,(%head.misc-HEAD;)*,BASE?)|(%head.misc-HEAD;)*)+, (%head.misc-HEAD;)*)>
-<!ATTLIST HEAD
-  %i18n;
-  profile     %URI;          #IMPLIED
-  %result-element-atts;
-  >
-
-<!-- The TITLE element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!--ELEMENT TITLE     (#PCDATA) -(%head.misc;)  document title -->
-<!ELEMENT TITLE  (#PCDATA |  %xsl-valid-in-resultns;)*><!-- document title -->
-<!ATTLIST TITLE %i18n; %result-element-atts;>
-
-
-<!ELEMENT BASE     EMPTY><!-- document base URI -->
-<!ATTLIST BASE
-  href        %URI;          #REQUIRED
-  >
-
-<!ELEMENT META     EMPTY><!-- generic metainformation -->
-<!ATTLIST META
-  %i18n;
-  http-equiv  %Name;         #IMPLIED
-  name        %Name;         #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  %result-element-atts;
-  >
-
-<!--ELEMENT STYLE     %StyleSheet;  style info -->
-<!ELEMENT STYLE (#PCDATA | %xsl-valid-in-resultns;)*><!-- style info -->
-<!ATTLIST STYLE
-  %i18n;
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  %result-element-atts;
-  >
-
-<!--ELEMENT SCRIPT     %Script; script statements -->
-<!ELEMENT SCRIPT (#PCDATA | %xsl-valid-in-resultns;)*><!-- script statements -->
-<!ATTLIST SCRIPT
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  event       CDATA          #IMPLIED
-  for         %URI;          #IMPLIED
-  %result-element-atts;
-  >
-
-<!ELEMENT NOSCRIPT (%xsl-valid-in-resultns;|%block;)+
-><!-- alternate content container for non script-based rendering -->
-<!ATTLIST NOSCRIPT
-  %attrs;
-  >
-
-<!--================ Document Structure ==================================-->
-<!ENTITY % html.content "HEAD, BODY">
-
-<!--<!ELEMENT HTML     (%html.content;)> --><!-- document root element -->
-<!ELEMENT HTML (((%xsl-valid-in-resultns;)*,HEAD?,(%xsl-valid-in-resultns;)*,BODY?,
-                (%xsl-valid-in-resultns;)*) | (%xsl-valid-in-resultns;)*)>
-<!-- document root element -->
-<!ATTLIST HTML
-  %i18n;
-  %result-element-atts;
-  >
diff --git a/xdocs/style/stylesheets/spec.xsl b/xdocs/style/stylesheets/spec.xsl
deleted file mode 100644
index 26d73bd..0000000
--- a/xdocs/style/stylesheets/spec.xsl
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-
-<!DOCTYPE xsl:stylesheet [
-<!ENTITY copy   "&#169;">
-<!ENTITY nbsp   "&#160;">
-]>
-
-<!-- XSL Style sheet, DTD omitted -->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:redirect="org.apache.xalan.lib.Redirect"
-                extension-element-prefixes="redirect">
-  <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN"/>
-  
-  <xsl:param name="package-root" select="'../../../src/'"/>  <!-- root of destination for package.html files -->
-
-  <xsl:template match="spec">
-    <html>
-      <head>
-        <title>
-          <xsl:value-of select="header/title"/>
-        </title>
-      </head>
-      <body>
-        <xsl:apply-templates/>
-      </body>
-    </html>
-  </xsl:template>
-  
-  <xsl:template match="spec/title[1]">
-    <h1><xsl:apply-templates/></h1>
-  </xsl:template>
-
-  <xsl:template match="frontmatter/pubdate">
-    <p><b>Edit Date: </b><xsl:apply-templates/></p>
-  </xsl:template>
-
-  <xsl:template match="frontmatter/copyright">
-    <!-- p>&copy;<xsl:apply-templates/></p -->
-  </xsl:template>
-
-  <xsl:template match="frontmatter/author">
-  </xsl:template>
-  
-  <xsl:template match="spec/title">
-    <h2>
-      <xsl:choose>
-        <xsl:when test="@id">
-          <a name="@id">
-            <xsl:apply-templates/>
-          </a>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:apply-templates/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </h2>
-  </xsl:template>
-  
-  <xsl:template name="apply-id-templates">
-    <xsl:choose>
-      <xsl:when test="@id">
-        <a name="{@id}">
-          <xsl:apply-templates/>
-        </a>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:apply-templates/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  <xsl:template match="sect2/title | spec/*/title">
-    <h3>
-      <xsl:call-template name="apply-id-templates"/>
-    </h3>
-  </xsl:template>
-  
-  <xsl:template match="sect3/title">
-    <h4>
-      <xsl:call-template name="apply-id-templates"/>
-    </h4>
-  </xsl:template>
-
-  <xsl:template match="sect4/title">
-    <h5>
-      <xsl:call-template name="apply-id-templates"/>
-    </h5>
-  </xsl:template>
-  
-  <xsl:template match="para">
-    <p><xsl:apply-templates/></p>
-  </xsl:template>
-
-  <xsl:template match="variablelist">
-    <ul>
-    <xsl:for-each select="varlistentry">
-      <li>
-        <p><b><xsl:apply-templates select="term"/></b><br/>
-        <xsl:apply-templates select="listitem"/></p>
-      </li>
-    </xsl:for-each>
-    </ul>
-  </xsl:template>
-
-  <xsl:template match="orderedlist">
-    <ol>
-    <xsl:for-each select="listitem">
-      <li><xsl:apply-templates/></li>
-    </xsl:for-each>
-    </ol>
-  </xsl:template>
-
-  <xsl:template match="patterns">
-    <H3><xsl:value-of select="@module"/><xsl:text> </xsl:text>Patterns</H3>
-    <ul>
-      <xsl:for-each select="pattern">
-        <p>
-          <b>
-            <xsl:for-each select="pattern-name">
-              <xsl:call-template name="apply-id-templates"/>
-            </xsl:for-each>
-          </b>
-          <br/>
-        <xsl:apply-templates select="*[name() != 'pattern-name']"/></p>
-      </xsl:for-each>
-    </ul>
-  </xsl:template>
-  
-  <xsl:template match="pattern/intent">
-    <br/><i>Intent: </i><xsl:apply-templates/>
-  </xsl:template>
-  
-  <xsl:template match="pattern/responsibilities">
-    <br/><i>Responsibilities: </i><xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="pattern/potential-alternate-name">
-    <br/><i>Potential alternate name: </i><xsl:apply-templates/>
-  </xsl:template>
-  
-  <xsl:template match="pattern/thread-safety">
-    <br/><i>Thread safety: </i><xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="pattern/notes">
-    <br/><i>Notes: </i><xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="programlisting">
-    <code>
-    <pre>
-      <xsl:apply-templates/>
-    </pre>
-    </code>
-  </xsl:template>
-  
-  <xsl:template match="link">
-    <A href="#{@linkend}">
-      <xsl:apply-templates/>
-    </A>
-  </xsl:template>
-  <xsl:template match="ulink">
-    <A href="{@url}">
-      <xsl:apply-templates/>
-    </A>
-  </xsl:template>
-
-  <xsl:template match="termref">
-    <xsl:choose>
-      <xsl:when test="@link-url">
-        <A href="#{@link-url}">
-          <xsl:value-of select="."/>
-        </A>
-      </xsl:when>
-      <xsl:otherwise>
-        <U><xsl:value-of select="."/></U>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  <xsl:template match="plink">
-    <xsl:text>{@link </xsl:text>
-      <xsl:value-of select="."/>
-    <xsl:text>}</xsl:text>
-  </xsl:template>
-  
-  <xsl:template match="sect1[@id='package']">
-    <xsl:variable name="filename" select="concat($package-root,translate(title,'.', '/'),'/package.html')"/>
-    <redirect:write file="{$filename}">
-      <xsl:call-template name="sub-package"/>
-    </redirect:write>
-  </xsl:template>
-  
-  <xsl:template match="sect2[@id='specialized-packages']">
-    <xsl:message>Found specialized-packages</xsl:message>
-    <xsl:for-each select="sect3">
-	  <xsl:variable name="filename" select="concat($package-root,translate(title,'.', '/'),'/package.html')"/>
-      <redirect:write file="{$filename}">
-        <xsl:call-template name="sub-package"/>
-      </redirect:write>
-    </xsl:for-each>
-  </xsl:template>
-  
-  <xsl:template name="sub-package">
-    <html>
-       <head>
-         <title>
-           <xsl:value-of select="title"/>
-         </title>
-       </head>
-       <body>
-         <xsl:apply-templates select="*[not (name()='title')]"/>
-       </body>
-     </html>
-  </xsl:template>
-
-
-</xsl:stylesheet>
-