Description
The PBDOM_CDATA class represents an XML DOM CDATA section. The PBDOM_CDATA class is derived from PBDOM_TEXT, which inherits from the PBDOM_CHARACTERDATA class.
A PBDOM_CDATA object is used to hold text that contains characters that are prohibited in text objects, such as "<" and "&", without using entity references. For example, consider the following PBDOM_CDATA object:
<some_text> <![CDATA[ (x < y) & (y < z) => x < z ]]> </some_text>
A PBDOM_TEXT object with the same text content must be written like this:
<some_text> (x < y) & (y < z) => x < z </some_text>
However, although the PBDOM_CDATA class is derived from PBDOM_TEXT, a PBDOM_CDATA object cannot always be inserted in the same context as a PBDOM_TEXT. For example, a PBDOM_TEXT object can be added as a child of a PBDOM_ATTRIBUTE, but a PBDOM_CDATA object cannot.
Methods
Some of the inherited methods from PBDOM_OBJECT serve no meaningful objective, and only default or trivial functionalities result. These are described in the following table:
Method |
Always returns |
---|---|
AddContent |
current PBDOM_CDATA |
GetContent |
false |
GetName |
a string "#cdata" |
HasChildren |
false |
InsertContent |
current PBDOM_CDATA |
IsAncestorObjectOf |
false |
RemoveContent |
false |
SetContent |
current PBDOM_CDATA |
SetName |
false |
PBDOM_CDATA has the following non-trivial methods:
Description
Appends the input string or the input text data of the PBDOM_CHARACTERDATA object to the text content that already exists within the current PBDOM_CDATA object.
Syntax
pbdom_cdata_name.Append(string strAppend) pbdom_cdata_name.Append(pbdom_characterdata pbdom_characterdata_ref)
Argument |
Description |
---|---|
pbdom_cdata_name |
The name of a PBDOM_CDATA |
strAppend |
The string you want appended to the existing text of the current PBDOM_CDATA object |
pbdom_characterdata_ref |
The referenced PBDOM_CHARACTERDATA object whose text data is to be appended to the existing text of the current PBDOM_CDATA object |
Return value
PBDOM_CHARACTERDATA.
Throws
EXCEPTION_PBDOM_OBJECT_INVALID_FOR_USE -- If the input PBDOM_CHARACTERDATA is not a reference to an object derived from PBDOM_CHARACTERDATA (applies to second syntax).
Description
Creates and returns a clone of the current PBDOM_CDATA.
Syntax
pbdom_cdata_name.Clone(boolean bDeep)
Argument |
Description |
---|---|
pbdom_cdata_name |
The name of a PBDOM_CDATA. |
bDeep |
A boolean specifying whether a deep or shallow clone is returned. Values are true for a deep clone and false for a shallow clone. This argument is currently ignored. |
Return value
PBDOM_OBJECT. The return value is a clone of the current PBDOM_CDATA housed in a PBDOM_OBJECT.
Examples
This example tests the following characteristics of a cloned PBDOM_CDATA object:
-
The contents of an original and cloned PBDOM_CDATA object are exactly the same
-
A cloned PBDOM_CDATA initially has no parent object
-
A cloned PBDOM_CDATA is initially contained within the same owner document as the original
PBDOM_BUILDER pbdom_buildr PBDOM_DOCUMENT pbdom_doc PBDOM_CDATA pbdom_cdat PBDOM_OBJECT pbdom_obj_array[] string strXML = "<!DOCTYPE root [<!ELEMENT root (#PCDATA)>]><root><![CDATA[This is a CDATA Section.]]></root>" try // Build a PBDOM_DOCUMENT based on strXML. pbdom_buildr = Create PBDOM_BUILDER pbdom_doc = pbdom_buildr.BuildFromString (strXML) // Get the contents of the root element. pbdom_doc.GetRootElement().GetContent(pbdom_obj_array) // Test if the root element contains only one child object. if (UpperBound(pbdom_obj_array) = 1) then MessageBox ("Pass", "Root Element has only one child.") else MessageBox ("Fail", "Root Element must have only one child.") end if // Make a clone of the only child of the root element. pbdom_cdat = pbdom_obj_array[1].Clone(true) // Test if the clone is a PBDOM_CDATA object. if (pbdom_cdat.GetObjectClassString() = "pbdom_cdata") then MessageBox ("Pass", & "The first child, after being cloned, is indeed a PBDOM_CDATA object.") else MessageBox ("Fail", "The first child, after being cloned, " & + "is found to be a " + pbdom_cdat.GetObjectClassString() + " object.") end if // Test if the clone is a CDATA section. if (pbdom_cdat.GetText() = "This is a CDATA Section.") then MessageBox ("Pass", "The text contents of the clone is correct.") else MessageBox ("Fail", "The text contents of the clone is : [" & + pbdom_cdat.GetText() + "]. This is incorrect.") end if // Test that the clone has no parent. if (Not IsValid(pbdom_cdat.GetParentObject())) then MessageBox ("Pass", "The clone has no parent.") else MessageBox ("Fail", "The clone should have no parent.") end if // Test that the clone's owner document is the same // as the original's owner document. if (pbdom_cdat.GetOwnerDocumentObject() = pbdom_doc) then MessageBox ("Pass", "The clone's owner document is correct.") else MessageBox ("Fail", "The clone's owner document is incorrect.") end if catch (PBDOM_EXCEPTION pbdom_except) MessageBox ("PBDOM_EXCEPTION", pbdom_except.GetMessage()) end try
Usage
The Clone method creates a new PBDOM_CDATA object that is a duplicate of, and a separate object from, the original. The clone of a PBDOM_CDATA is always identical to its original whether deep or shallow cloning is invoked, because a PBDOM_CDATA object does not contain any subtree of child PBDOM_OBJECTs.
A PBDOM_CDATA clone has no parent. However, the clone resides in the same PBDOM_DOCUMENT as its original, and if the original PBDOM_CDATA is standalone, the clone is standalone.
Description
Detaches a PBDOM_CDATA from its parent PBDOM_OBJECT.
Syntax
pbdom_cdata_name.Detach()
Return value
PBDOM_OBJECT. The current PBDOM_CDATA detached from its parent.
Usage
If the current PBDOM_CDATA object has no parent, no modifications occur.
Description
Tests for the equality of the current PBDOM_CDATA and a referenced PBDOM_OBJECT.
Syntax
pbdom_cdata_name.Equals(pbdom_object pbdom_object_ref)
Argument |
Description |
---|---|
pbdom_cdata_name |
The name of a PBDOM_CDATA |
pbdom_object_ref |
A PBDOM_OBJECT to test for equality with the current PBDOM_CDATA |
Return value
Boolean.
Returns true if the current PBDOM_CDATA object is equivalent to the referenced PBDOM_OBJECT and false otherwise.
Throws
EXCEPTION_PBDOM_OBJECT_INVALID_FOR_USE -- If the input PBDOM_OBJECT is not a reference to an object derived from PBDOM_OBJECT.
Usage
True is returned only if the referenced PBDOM_OBJECT is also a derived PBDOM_CDATA object and refers to the same DOM object as the current PBDOM_CDATA. Two separately created PBDOM_CDATA objects, for example, can contain exactly the same text but not be equal.
Description
Returns a long integer code that indicates the class of the current PBDOM_OBJECT.
Syntax
pbdom_object_name.GetObjectClass()
Return value
Long.
GetObjectClass returns a long integer code that indicates the class of the current PBDOM_OBJECT. If pbdom_object_name is a PBDOM_CDATA object, the returned value is 8.
See also
Description
Returns a string form of the class of the PBDOM_OBJECT.
Syntax
pbdom_object_name.GetObjectClassString()
Return value
String.
GetObjectClassString returns a string that indicates the class of the current PBDOM_OBJECT. If pbdom_object_name is a PBDOM_CDATA object, the returned string is "pbdom_cdata".
See also
Description
Returns the owning PBDOM_DOCUMENT of the current PBDOM_CDATA.
Syntax
pbdom_cdata_name.GetOwnerDocumentObject()
Return value
PBDOM_OBJECT.
Usage
If there is no owning PBDOM_DOCUMENT, null is returned.
See also
Description
Returns the parent PBDOM_OBJECT of the PBDOM_CDATA. If there is no parent, null is returned.
Syntax
pbdom_cdata_name.GetParentObject()
Return value
PBDOM_OBJECT.
See also
Description
Returns the text data that is contained within the current PBDOM_CDATA object.
Syntax
pbdom_cdata_name.GetText()
Return value
String.
The textual content of the current PBDOM_CDATA object.
See also
Description
Returns the text data that is contained within the current PBDOM_CDATA object, with all surrounding whitespace characters removed and internal whitespace characters normalized to a single space.
Syntax
pbdom_cdata_name.GetTextNormalize()
Return value
String.
Usage
If no textual value exists for the current PBDOM_OBJECT, or if only whitespace characters exist, an empty string is returned.
See also
Description
Returns the textual content of the current PBDOM_CDATA object with all surrounding whitespace characters removed.
Syntax
pbdom_cdata_name.GetTextTrim()
Return value
String.
Usage
If no textual value exists for the current PBDOM_CDATA, or if only whitespace characters exist, an empty string is returned.
See also
Description
Sets the referenced PBDOM_OBJECT to be the parent of the current PBDOM_CDATA.
Syntax
pbdom_cdata_name.SetParentObject(pbdom_object pbdom_object_ref)
Argument |
Description |
---|---|
pbdom_cdata_name |
The name of a PBDOM_CDATA |
pbdom_object_ref |
A PBDOM_OBJECT to be set as the parent of this PBDOM_CDATA object |
Return value
PBDOM_OBJECT.
Throws
EXCEPTION_PBDOM_OBJECT_INVALID_FOR_USE -- If the input PBDOM_OBJECT is not a reference to an object derived from PBDOM_OBJECT.
EXCEPTION_PBDOM_OBJECT_ALREADY_HAS_PARENT -- If the current PBDOM_CDATA already has a parent.
EXCEPTION_INAPPROPRIATE_USE_OF_PBDOM_OBJECT -- If the input PBDOM_OBJECT is of a class that does not have a legal parent-child relationship with the PBDOM_CDATA class.
EXCEPTION_USE_OF_UNNAMED_PBDOM_OBJECT -- If the input PBDOM_OBJECT requires a user-defined name and it has not been named.
Usage
The PBDOM_OBJECT that you set to be the parent of the current PBDOM_CDATA must have a legal parent-child relationship. If it does not, an exception is thrown. Only a PBDOM_ELEMENT object can be set as the parent of a PBDOM_CDATA object.
See also
Description
Sets the input string to be the text content of the current PBDOM_CDATA object.
Syntax
pbdom_cdata_name.SetText(string strSet)
Argument |
Description |
---|---|
pbdom_cdata_name |
The name of a PBDOM_CDATA |
strSet |
The string you want set as the text of the PBDOM_CDATA |
Return value
PBDOM_CHARACTERDATA. This PBDOM_CDATA modified and returned as a PBDOM_CHARACTERDATA object.
See also