Description
Creates and returns a clone of the current PBDOM_COMMENT.
Syntax
pbdom_comment_name.Clone(boolean bDeep)
|
Argument |
Description |
|---|---|
|
pbdom_comment_name |
The name of a PBDOM_COMMENT |
|
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 |
Return value
PBDOM_OBJECT.
Examples
This example creates an XML document that, when serialized, appears as follows:
<!DOCTYPE root
[
<!ELEMENT root (level_1)*>
<!ELEMENT level_1 (level_2)*>
<!ELEMENT level_2 (#PCDATA)*>
]>
<root>
<level_1>
<!--Element at level : 1-->
<level_2>
<!--Element at level : 2-->
</level_2>
</level_1>
</root>The definition of the DTD shows that the document is required to have the following composition:
-
The document contains a root element with the name root.
-
The root element contains zero or more occurrences of level_1 elements.
-
A level_1 element contains zero or more level_2 elements.
-
A level_2 element is expected to contain text.
The following PowerScript code supplies annotations within the document by including comments to mark level_1 and level_2 elements. The sample code creates a PBDOM_DOCUMENT from an XML string that contains a DTD and a minimal root element. Then, it creates a comment that serves as a template. The template comment is then cloned, and instance-specific text is added for each element:
PBDOM_COMMENT pbdom_comm
PBDOM_COMMENT pbdom_comm_clone
PBDOM_ELEMENT pbdom_elem
PBDOM_DOCUMENT pbdom_doc
PBDOM_BUILDER pbdom_buildr
string strXML = "<!DOCTYPE root [<!ELEMENT root (level_1)*><!ELEMENT level_1 (level_2)*><!ELEMENT level_2 (#PCDATA)>]><root/>"
try
// Create a PBDOM_DOCUMENT from the XML string that
// contains a DTD and a minimal root element.
pbdom_buildr = Create PBDOM_BUILDER
pbdom_doc = pbdom_buildr.BuildFromString(strXML)
// Create a template comment that can be reused.
pbdom_comm = Create PBDOM_COMMENT
pbdom_comm.SetText ("Element at level : ")
// Create a level_1 element.
pbdom_elem = Create PBDOM_ELEMENT
pbdom_elem.SetName("level_1")
// Clone the template comment, append instance-
// specific text, and add it to the level_1 element.
pbdom_comm_clone = pbdom_comm.Clone(true)
pbdom_elem.AddContent(pbdom_comm_clone.Append("1"))
// Add a level_1 element into the root element
// as stipulated by the DTD.
pbdom_doc.GetRootElement().AddContent(pbdom_elem)
// Create a level_2 element.
pbdom_elem = Create PBDOM_ELEMENT
pbdom_elem.SetName("level_2")
// Clone the template comment, append instance-
// specific text, and add it to the level_2 element.
pbdom_comm_clone = pbdom_comm.Clone(true)
pbdom_elem.AddContent(pbdom_comm_clone.Append("2"))
// Add a level_2 element into the level_1 element
// as stipulated by the DTD.
pbdom_doc.GetRootElement().GetChildElement &
("level_1").AddContent(pbdom_elem)
// Finally, serialize the document.
pbdom_doc.SaveDocument("sample.xml")
catch(PBDOM_EXCEPTION pbdom_e)
MessageBox ("PBDOM_EXCEPTION", pbdom_e.GetMessage())
end tryUsage
The Clone method creates a new PBDOM_COMMENT object that is a duplicate of, and a separate object from, the original. Whether true or false is supplied, the clone is always identical to its original, because a PBDOM_COMMENT does not contain a subtree of child PBDOM_OBJECTs.
A PBDOM_COMMENT clone has no parent. However, the clone resides in the same PBDOM_DOCUMENT as its original, and if the original is standalone, the clone is standalone.


