As per your suggestions. I have untabified the source and merged my changes in
with the html.Doctype class. I'll gladly do any more tidying/fixing it needs in
order to make it release quality, but I'd like to know it was welcome before I
spend any more time on it. I also feel that it should probably be moved out or
org.apace.ecs.html into org.apache.ecs as its not just a HTML Doctype any more,
though I haven't done this as I didn't want to break anybody's code.
cheers,
bld
--8<----8<---
/*
* Copyright (c) 1999 The Java Apache Project. 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. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the Java Apache
* Project. <http://java.apache.org/>"
*
* 4. The names "Java Apache Element Construction Set", "Java Apache ECS" and
* "Java Apache Project" must not be used to endorse or promote products
* derived from this software without prior written permission.
*
* 5. Products derived from this software may not be called
* "Java Apache Element Construction Set" nor "Java Apache ECS" appear
* in their names without prior written permission of the
* Java Apache Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the Java Apache
* Project. <http://java.apache.org/>"
*
* THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "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 JAVA APACHE PROJECT 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 Java Apache Project. For more information
* on the Java Apache Project please see <http://java.apache.org/>.
*
*/
package org.apache.ecs.html;
import org.apache.ecs.*;
/**
* This class creates a <!DOCTYPE> tag.<p>
*
* Format:<br>
<!DOCTYPE [name] PUBLIC [identifier] [uri]><p>
<p>
usage:<br>
Document d = new Document()<br>
.setDoctype(new Doctype.Html40Strict())<br>
<p> or <p>
XMLDocument d = new XMLDocument()<br>
.addToProlog( new Doctype( "foo", "\"--/bar/baz/en\"",
"\"http://qoz.net/foo.dtd\"" );<br>
.addElement( new XML( ...
*
* @see Doctype.Html40Strict
* @see Doctype.Html40Transitional
* @see Doctype.Html40Frameset
*
* @version $Id: Doctype.java,v 1.3 2000/03/27 01:48:32 jonbolt Exp $
* @author <a href="mailto:[EMAIL PROTECTED]">Michael Heuer</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Stephan Nagy</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Jon S. Stevens</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Bruce Durling</a>
*/
public class Doctype extends SinglePartElement implements Printable
{
public static final String elementName = "!DOCTYPE";
protected String name;
protected String identifier;
protected String uri;
{
setElementType(elementName);
setCase(Element.UPPERCASE);
}
/**
* Basic Constructor.
*
*/
public Doctype()
{
updateElementType();
}
/**
* Constructor.
*
* @param name Root element of the XML document.
* @param id Public identifier.
* @param uri URI of the DTD.
*/
public Doctype( String name, String id, String uri )
{
this.name = name;
this.identifier = id;
this.uri = uri;
updateElementType();
}
protected void updateElementType()
{
setElementType( elementName
+ " " + name
+ " " + "PUBLIC"
+ " " + identifier
+ " " + uri );
}
/**
* Updates the name of the root element.
*
* @param name Name of the root element.
* @return a value of type 'Doctype'
*/
public Doctype setName( String name )
{
this.name = name;
updateElementType();
return( this );
}
/**
* Updates the name of the pulbic identifier.
*
* @param identifier The pulblic identifier.
* @return a value of type 'Doctype'
*/
public Doctype setIdentifier( String identifier )
{
this.identifier = identifier;
updateElementType();
return( this );
}
/**
* Updates the URI of the dtd.
*
* @param uri URI of the dtd.
* @return a value of type 'Doctype'
*/
public Doctype setUri( String uri )
{
this.uri = uri;
updateElementType();
return(this);
}
/**
* Adds and Element to the element.
*
* @param hashcode name of the element for hash table.
* @param element Adds an Element to the element.
* @return a value of type 'Doctype'
*/
public Doctype addElement( String hashcode, Element element )
{
addElementToRegistry( hashcode, element );
return(this);
}
/**
* Adds an Element to the element.
*
* @param hashcode name of the element for the hash table.
* @param element Adds an Element to the element.
* @return a value of type 'Doctype'
*/
public Doctype addElement( String hashcode, String element )
{
addElementToRegistry(hashcode,element);
return(this);
}
/**
* Adds an Element to the element.
*
* @param element Adds an Element to the element.
* @return a value of type 'Doctype'
*/
public Doctype addElement(Element element)
{
addElementToRegistry(element);
return(this);
}
/**
* Adds an Element to the element.
*
* @param element Adds an Element to the element.
* @return a value of type 'Doctype'
*/
public Doctype addElement(String element)
{
addElementToRegistry(element);
return(this);
}
/**
* Removes an Element from the element.
*
* @param hashcode the name of the element to be removed.
* @return a value of type 'Doctype'
*/
public Doctype removeElement(String hashcode)
{
removeElementFromRegistry(hashcode);
return(this);
}
/**
* The HTML 4.0 Strict DTD includes all elements and attributes
* that have not been deprecated or do not appear in frameset
* documents.
* <p>
* See: <a href="http://www.w3.org/TR/REC-html40/sgml/dtd.html">
* http://www.w3.org/TR/REC-html40/sgml/dtd.html</a>
*/
public static class Html40Strict extends Doctype {
public Html40Strict() {
this.name = "HTML";
this.identifier = "\"-//W3C//DTD HTML 4.0//EN\"";
this.uri = "\"http://www.w3.org/TR/REC-html40/strict.dtd\"";
this.updateElementType();
}
}
/**
* The HTML 4.0 Transitional DTD includes everything in the
* strict DTD plus deprecated elements and attributes (most of
* which concern visual presentation).
* <p>
* See: <a href="http://www.w3.org/TR/REC-html40/sgml/loosedtd.html">
* http://www.w3.org/TR/REC-html40/sgml/loosedtd.html</a>
*/
public static class Html40Transitional extends Doctype {
public Html40Transitional() {
this.name = "HTML";
this.identifier = "\"-//W3C//DTD HTML 4.0 Transitional//EN\"";
this.uri = "\"http://www.w3.org/TR/REC-html40/loose.dtd\"";
this.updateElementType();
}
}
/**
* The HTML 4.0 Frameset DTD includes everything in the transitional
* DTD plus frames as well.
* <p>
* See: <a href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">
* http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html</a>
*/
public static class Html40Frameset extends Doctype {
public Html40Frameset() {
this.name = "HTML";
this.identifier = "\"-//W3C//DTD HTML 4.0 Frameset//EN\"";
this.uri = "\"http://www.w3.org/TR/REC-html40/frameset.dtd\"";
this.updateElementType();
}
}
}
--
------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Archives and Other: <http://java.apache.org/main/mail.html>
Problems?: [EMAIL PROTECTED]