Class DocType
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:
- The declared name of the root element (which does not necessarily match the actual root element name in an invalid document)
- The public identifier (which may be null)
- The system identifier (which may be null)
- The internal DTD subset (which may be null)
- Version:
- 1.1d1
- Author:
- Elliotte Rusty Harold
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new document type declaration with no public or system ID.Creates a new document type declaration with a system ID but no public ID.Creates a new document type declaration with a public ID and a system ID.Creates a newDocType
that's a copy of its argument. -
Method Summary
Modifier and TypeMethodDescriptioncopy()
Returns a copy of thisDocType
which has the same system ID, public ID, root element name, and internal DTD subset, but does not belong to a document.final Node
getChild
(int position) ThrowsIndexOutOfBoundsException
because document type declarations do not have children.final int
Returns 0 because document type declarations do not have children.final String
Returns the complete internal DTD subset.final String
Returns the public ID of the external DTD subset.final String
Returns the name the document type declaration specifies for the root element.final String
Returns the system ID of the external DTD subset.final String
getValue()
Returns the empty string.final 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.final String
toString()
Returns a string form of theDocType
suitable for debugging and diagnosis.final 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
detach, equals, getBaseURI, getDocument, getParent, hashCode, query, query
-
Constructor Details
-
DocType
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 elementpublicID
- the public ID of the external DTD subsetsystemID
- the URL of the external DTD subset- Throws:
IllegalNameException
- ifrootElementName
is not a legal XML 1.0 nameIllegalDataException
- ifpublicID
is not a legal XML 1.0 public identifierMalformedURIException
- if the system ID is not a syntactically correct URI, or if it contains a fragment identifier
-
DocType
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 elementsystemID
- the URL of the external DTD subset- Throws:
IllegalNameException
- if the rootElementName is not a legal XML 1.0 nameMalformedURIException
- if the system ID is not a syntactically correct URI, or if it contains a fragment identifier
-
DocType
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- Throws:
IllegalNameException
- if the rootElementName is not a legal XML 1.0 name
-
DocType
Creates a new
DocType
that's a copy of its argument. The copy has the same data but no parent document.- Parameters:
doctype
- theDocType
to copy
-
-
Method Details
-
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
-
setRootElementName
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- Throws:
IllegalNameException
- if the root element name is not a legal XML 1.0 name
-
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
-
setInternalDTDSubset
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- Throws:
IllegalDataException
- if subset is not a legal XML 1.0 internal DTD subset- Since:
- 1.1
-
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.
-
setPublicID
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- Throws:
IllegalDataException
- if the public ID does not satisfy the rules for public IDs in XML 1.0WellformednessException
- if no system ID has been set
-
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.
-
setSystemID
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- Throws:
MalformedURIException
- if the system ID is not a syntactically correct URI, or if it contains a fragment identifierWellformednessException
- if the public ID is non-null and you attempt to remove the system ID
-
getValue
Returns the empty string. XPath 1.0 does not define a value for document type declarations.
-
getChild
Throws
IndexOutOfBoundsException
because document type declarations do not have children.- Specified by:
getChild
in classNode
- 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.
- Throws:
IndexOutOfBoundsException
- because document type declarations do not have children
-
getChildCount
public final int getChildCount()Returns 0 because document type declarations do not have children.
- Specified by:
getChildCount
in classNode
- Returns:
- zero
-
toString
Returns a string form of the
DocType
suitable for debugging and diagnosis. It deliberately does not return an actual XML document type declaration. -
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. -
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">
.
-