nu.xom

Class DocType


public class DocType
extends Node

Represents an XML document type declaration such as <!DOCTYPE book SYSTEM "docbookx.dtd">. Note that this is not the same thing as a document type definition (DTD). XOM does not currently model the DTD. The document type declaration contains or points to the DTD, but it is not the DTD.

A DocType object does not have any child nodes. It can be a child of a Document.

Each DocType object has four String properties, some of which may be null:

Version:
1.1d1
Author:
Elliotte Rusty Harold

Constructor Summary

DocType(String rootElementName)
Creates a new document type declaration with no public or system ID.
DocType(String rootElementName, String systemID)
Creates a new document type declaration with a system ID but no public ID.
DocType(String rootElementName, String publicID, String systemID)
Creates a new document type declaration with a public ID and a system ID.
DocType(DocType doctype)
Creates a new DocType that's a copy of its argument.

Method Summary

Node
copy()
Returns a copy of this DocType which has the same system ID, public ID, root element name, and internal DTD subset, but does not belong to a document.
Node
getChild(int position)
Throws IndexOutOfBoundsException because document type declarations do not have children.
int
getChildCount()
Returns 0 because document type declarations do not have children.
String
getInternalDTDSubset()
Returns the complete internal DTD subset.
String
getPublicID()
Returns the public ID of the external DTD subset.
String
getRootElementName()
Returns the name the document type declaration specifies for the root element.
String
getSystemID()
Returns the system ID of the external DTD subset.
String
getValue()
Returns the empty string.
void
setInternalDTDSubset(String subset)
Sets the internal DTD subset; that is the part of the DTD between [ and ].
void
setPublicID(String id)
Sets the public ID for the external DTD subset.
void
setRootElementName(String name)
Sets the name the document type declaration specifies for the root element.
void
setSystemID(String id)
Sets the system ID for the external DTD subset.
String
toString()
Returns a string form of the DocType suitable for debugging and diagnosis.
String
toXML()
Returns a string containing the actual XML form of the document type declaration represented by this object.

Methods inherited from class nu.xom.Node

copy, detach, equals, getBaseURI, getChild, getChildCount, getDocument, getParent, getValue, hashCode, query, query, toXML

Constructor Details

DocType

public DocType(String rootElementName)
Creates a new document type declaration with no public or system ID. It has the general form <!DOCTYPE rootElementName>.
Parameters:
rootElementName - the name specified for the root element

DocType

public DocType(String rootElementName,
               String systemID)
Creates a new document type declaration with a system ID but no public ID. It has the general form <!DOCTYPE rootElementName SYSTEM "systemID">.
Parameters:
rootElementName - the name specified for the root element
systemID - the URL of the external DTD subset

DocType

public DocType(String rootElementName,
               String publicID,
               String systemID)
Creates a new document type declaration with a public ID and a system ID. It has the general form <!DOCTYPE rootElementName PUBLIC "publicID" "systemID">.
Parameters:
rootElementName - the name specified for the root element
publicID - the public ID of the external DTD subset
systemID - the URL of the external DTD subset

DocType

public DocType(DocType doctype)
Creates a new DocType that's a copy of its argument. The copy has the same data but no parent document.
Parameters:
doctype - the DocType to copy

Method Details

copy

public Node copy()
Returns a copy of this DocType which has the same system ID, public ID, root element name, and internal DTD subset, but does not belong to a document. Thus, it can be inserted into a different document.
Overrides:
copy in interface Node
Returns:
a deep copy of this DocType that is not part of a document

getChild

public final Node getChild(int position)
Throws IndexOutOfBoundsException because document type declarations do not have children.
Overrides:
getChild in interface Node
Parameters:
position - the index of the child node to return
Returns:
never returns because document type declarations do not have children. Always throws an exception.

getChildCount

public final int getChildCount()
Returns 0 because document type declarations do not have children.
Overrides:
getChildCount in interface Node
Returns:
zero

getInternalDTDSubset

public final String getInternalDTDSubset()
Returns the complete internal DTD subset. White space may not be preserved completely accurately, but all declarations should be in place.
Returns:
the internal DTD subset

getPublicID

public final String getPublicID()
Returns the public ID of the external DTD subset. This is null if there is no external DTD subset or if it does not have a public identifier.
Returns:
the public ID of the external DTD subset.

getRootElementName

public final String getRootElementName()
Returns the name the document type declaration specifies for the root element. In an invalid document, this may not be the same as the actual root element name.
Returns:
the declared name of the root element

getSystemID

public final String getSystemID()
Returns the system ID of the external DTD subset. This is a URL. It is null if there is no external DTD subset.
Returns:
the URL for the external DTD subset.

getValue

public final String getValue()
Returns the empty string. XPath 1.0 does not define a value for document type declarations.
Overrides:
getValue in interface Node
Returns:
an empty string

setInternalDTDSubset

public final void setInternalDTDSubset(String subset)
Sets the internal DTD subset; that is the part of the DTD between [ and ]. Changing the internal DTD subset does not affect the instance document. That is, default attribute values and attribute types specified in the new internal DTD subset are not applied to the corresponding elements in the instance document. Furthermore, there's no guarantee that the instance document is or is not valid with respect to the declarations in the new internal DTD subset.
Parameters:
subset - the internal DTD subset
Since:
1.1

setPublicID

public void setPublicID(String id)
Sets the public ID for the external DTD subset. This can only be set after a system ID has been set, because XML requires that all document type declarations with public IDs have system IDs. Passing null removes the public ID.
Parameters:
id - the public identifier of the external DTD subset

setRootElementName

public void setRootElementName(String name)
Sets the name the document type declaration specifies for the root element. In an invalid document, this may not be the same as the actual root element name.
Parameters:
name - the root element name given by the document type declaration

setSystemID

public void setSystemID(String id)
Sets the system ID for the external DTD subset. This must be a a relative or absolute URI with no fragment identifier. Passing null removes the system ID, but only if the public ID has been removed first. Otherwise, passing null causes a WellformednessException.
Parameters:
id - the URL of the external DTD subset

toString

public final String toString()
Returns a string form of the DocType suitable for debugging and diagnosis. It deliberately does not return an actual XML document type declaration.
Returns:
a string representation of this object

toXML

public final String toXML()
Returns a string containing the actual XML form of the document type declaration represented by this object. For example, <!DOCTYPE book SYSTEM "docbookx.dtd">.
Overrides:
toXML in interface Node
Returns:
a String containing an XML document type declaration

Copyright 2002-2009 Elliotte Rusty Harold
elharo@metalab.unc.edu