This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to annotated tag xalan_2_0_D04 in repository https://gitbox.apache.org/repos/asf/xalan-java.git
commit 2dad7d278f07deb120bfeb2659b28b3abdac5e7f Author: No Author <[email protected]> AuthorDate: Wed Dec 20 05:04:17 2000 +0000 This commit was manufactured by cvs2svn to create tag 'xalan_2_0_D04'. --- samples/DOM2DOM/DOM2DOM.java | 143 ---- samples/DOM2DOM/birds.xml | 136 ---- samples/DOM2DOM/birds.xsl | 38 - samples/DOM2DOM/readme.html | 13 - xdocs/sources/trax/trax.xml | 803 -------------------- xdocs/style/dtd/spec.dtd | 578 --------------- xdocs/style/dtd/xsl-html40s.dtd | 1505 -------------------------------------- xdocs/style/stylesheets/spec.xsl | 220 ------ 8 files changed, 3436 deletions(-) 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 [email protected]. - * - * 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>[email protected]</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) && 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 <xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>, - 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) && 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 - // <xsl:include href="inc1/inc1.xsl"/> - 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) && 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) && 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 <[email protected]>, for IBM's XML4J package - Minor fixes to XSLT & HTML DTDs by - Scott Boag <[email protected]> - Henrique M. Holschuh <[email protected]> - HTML/XSLT composite DTD by - Henrique M. Holschuh <[email protected]> - - 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 "&#60;"> -<!ENTITY gt ">"> -<!ENTITY amp "&#38;"> -<!ENTITY apos "'"> -<!ENTITY quot """> - -<!-- - 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 "∞" - minus-sign %char; "-" - NaN CDATA "�" - percent %char; "%" - per-mille %char; "‰" - 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 <[email protected]> - Arnaud Le Hors <[email protected]> - Ian Jacobs <[email protected]> - - Further information about HTML 4.0 is available at: - - http://www.w3.org/TR/REC-html40 ---> - -<!-- - ================================================================ - Modified for XML 1.0 by: - "TAMURA, Kent" <[email protected]> - - 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 """> -<!ENTITY amp "&"> -<!ENTITY lt "<"> -<!ENTITY gt ">"> ---> - -<!--=================== 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 & 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 "©"> -<!ENTITY nbsp " "> -]> - -<!-- 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>©<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> - --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
