Legal Parents and Possible Children

The DOMDocument object can be described as a tree (see Page 2 of our last column for an example). The entities of the tree are called nodes. There are twelve node types in DOMDocument. The following table lists them. For each node, you can also find in this table which node types can be its parent, and which types can be its children.

Value1
DescriptionAn element
nodeTypeString"element"
Can have child nodes of type:Element, Text, Comment, ProcessingInstruction, CDATASection, and EntityReference
Can be a child node of type:Document, DocumentFragment, EntityReference, and Element
Value2
DescriptionAn attribute
nodeTypeString"attribute"
Can have child nodes of type:Text and EntityReference
Can be a child node of type:none
Value3
DescriptionThe text content of a tag
nodeTypeString"text"
Can have child nodes of type:none
Can be a child node of type:Attribute, DocumentFragment, Element, and EntityReference
Value4
DescriptionA CDATA section. The XML parser should consider the section as text only.
nodeTypeString"cdatasection"
Can have child nodes of type:none
Can be a child node of type:DocumentFragment, EntityReference, and Element
Value5
DescriptionAn entity reference
nodeTypeString"entityreference"
Can have child nodes of type:Element, ProcessingInstruction, Comment, Text, CDATASection, and EntityReference
Can be a child node of type:Attribute, DocumentFragment, Element, and EntityReference
Value6
DescriptionAn expanded entity
nodeTypeString"entity"
Can have child nodes of type:Any node included in an expanded entity. For example: Text and EntityReference
Can be a child node of type:DocumentType
Value7
DescriptionA processing instruction
nodeTypeString"processinginstruction"
Can have child nodes of type:none
Can be a child node of type:Document, DocumentFragment, Element, and EntityReferenceDocumentType
Value8
DescriptionA comment
nodeTypeString"comment"
Can have child nodes of type:none
Can be a child node of type:Document, DocumentFragment, Element, and EntityReference
Value9
DescriptionA document object. As the root of the document tree, provides access to the entire XML document. It is created using the progID "Microsoft.XMLDOM" or through a data island using <XML> or <SCRIPT LANGUAGE=XML>.
nodeTypeString"document"
Can have child nodes of type:Element (maximum of one), ProcessingInstruction, Comment, and DocumentType
Can be a child node of type:none
Value10
DescriptionThe document type, as indicated by the <!DOCTYPE>.
nodeTypeString"documenttype"
Can have child nodes of type:Notation and Entity
Can be a child node of type:Document
Value11
DescriptionA document fragment
nodeTypeString"documentfragment"
Can have child nodes of type:Notation and Entity
Can be a child node of type:Document
Value12
DescriptionA document type's notation
nodeTypeString"notation"
Can have child nodes of type:any
Can be a child node of type:DocumentType

Setting the Node Name

There are twelve node types in the DOMDocument tree. The nodeName property of these nodes depends on the node type. In some node types, the nodeName property reflects a user-given name. For example, the nodeName property of the attribute node is the name of the property, as assigned by the author. In other node types, the nodeName property contains a fixed string. For example, the nodeName property of the text node contains the string "#text". The following table lists the nodeName property of all node types:

ValuenodeTypeStringnodeName
1"element"Contains the name of the XML tag, with any namespace prefix included if present.
2"attribute"Contains the name of the attribute.
3"text"Contains the literal string "#text".
4"cdatasection"Contains the literal string "#cdata-section".
5"entityreference"Contains the name of the entity referenced. Note that the name does not include the leading ampersand or the trailing semicolon. The name includes the namespace if one is present.
6"entity"Contains the name of the entity.
7"processinginstruction"Contains the target; the first token following the <? characters.
8"comment"Contains the literal string "#comment".
9"document"Contains the literal string "#document".
10"documenttype"Contains the name of the document type; for example, xxx in <!DOCTYPE xxx ...>.
11"documentfragment"Contains the literal string "#document-fragment".
12"notation"Contains the name of the notation.