This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.

The procedure is defined as:

proc dom::CreateElement {token name aList args} {
    
    if {[string length $token]} {
        array set parent [set $token]
        upvar #0 $parent(docArray) docArray
        set docArrayName $parent(docArray)
    } else {
        array set opts $args
        upvar #0 $opts(-docarray) docArray
        set docArrayName $opts(-docarray)
    }

    set id node[incr docArray(counter)]
    set child ${docArrayName}($id)

    # Create the new node
    # NB. normally we'd use Node:create here,
    # but inline it instead for performance
    set docArray($id) [list id $id docArray $docArrayName  node:parentNode $token		 node:childNodes ${docArrayName}var$docArray(counter)	 node:nodeType element		 node:nodeName $name			 node:nodeValue {}			 element:attributeList ${docArrayName}arr$docArray(counter)  ]

    # Initialise associated variables
    set ${docArrayName}var$docArray(counter) {}
    array set ${docArrayName}arr$docArray(counter) $aList

    # Update parent record

    # Does this element qualify as the document element?
    # If so, then has a document element already been set?

    if {[string length $token]} {

        if {$parent(node:nodeType) eq "documentFragment" } {
            if {$parent(id) == $parent(documentFragment:masterDoc)} {
                if {[info exists parent(document:documentElement)]
                    && [string length $parent(document:documentElement)]
                } {
                    unset docArray($id)
                    return -code error "document element already exists"
                } else {

                    # Check against document type decl
                    if {[string length $parent(document:doctype)]} {
                        array set doctypedecl [set $parent(document:doctype)]
                        if {$name ne $doctypedecl(doctype:name) } {
                            return -code error "mismatch between root element type in document type declaration \"$doctypedecl(doctype:name)\" and root element \"$name\""
                        }

                    } else {
                        # Synthesize document type declaration
                        CreateDocType $token $name {} {}
                        # Resynchronise parent record
                        array set parent [set $token]
                    }

                    set parent(document:documentElement) $child
                    set $token [array get parent]
                }
            }
        }

        lappend $parent(node:childNodes) $child

    }

    return $child

}

Show another procedure: