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::DOMImplementation {method args} {
    
    variable DOMImplementationOptions
    variable DOMImplementationCounter

    switch -- $method {

	hasFeature {

	    if {[llength $args] != 2} {
		return -code error "wrong number of arguments"
	    }

	    # Later on, could use Tcl package facility
	    if {[regexp {create|destroy|parse|serialize|trim} [lindex $args 0]]} {
		if {[lindex $args 1] eq "1.0" } {
		    return 1
		} else {
		    return 0
		}
	    } else {
		return 0
	    }

	}

	create {

	    # Bootstrap a document instance

	    switch [llength $args] {
		0 {
		    # Allocate unique document array name
	    	    set name [namespace current]::document[incr DOMImplementationCounter]
		}
		1 {
		    # Use array name provided.  Should check that it is safe.
		    set name [lindex $args 0]
		    unset -nocomplain $name
		}
		default {
		    return -code error "wrong number of arguments"
		}
	    }

	    set varPrefix ${name}var
	    set arrayPrefix ${name}arr

	    array set $name [list counter 1  node1 [list id node1 docArray $name		 node:nodeType documentFragment		 node:parentNode {}			 node:childNodes ${varPrefix}1		 documentFragment:masterDoc node1	 document:implementation {}		 document:xmldecl {version 1.0}		 document:documentElement {}		 document:doctype {}			 ]]

	    # Initialise child node list
	    set ${varPrefix}1 {}

	    # Return the new top-level node
	    return ${name}(node1)

	}

	destroy {

	    # Cleanup a document

	    if {[llength $args] != 1} {
		return -code error "wrong number of arguments"
	    }
	    array set node [set [lindex $args 0]]

	    # Patch from Gerald Lester

	    ##
	    ## First release all the associated variables
	    ##
	    upvar #0 $node(docArray) docArray
	    for {set i 0} {$i < $docArray(counter)} {incr i} {
		unset -nocomplain ${docArrayName}var$i
		unset -nocomplain ${docArrayName}arr$i
	    }
             
	    ##
	    ## Then release the main document array
	    ##
	    if {![info exists $node(docArray)]} {
		return -code error "unable to destroy document"
	    }
            unset -nocomplain $node(docArray)

	    return {}

	}

	parse {

	    # This implementation allows use of either of two event-based,
	    # non-validating XML parsers:
	    # . TclXML Tcl-only parser (version 1.3 or higher)
	    # . TclExpat parser

	    array set opts {-parser {} -progresscommand {} -chunksize 8196}
	    if {[catch {array set opts [lrange $args 1 end]}]} {
		return -code error "bad configuration options"
	    }

	    # Create a state array for this parse session
	    set state [namespace current]::parse[incr DOMImplementationCounter]
	    array set $state [array get opts -*]
	    array set $state [list progCounter 0]
	    set errorCleanup {}

	    switch -- $opts(-parser) {
		expat {
		    if {[catch {package require expat} version]} {
			eval $errorCleanup
			return -code error "expat extension is not available"
		    }
		    set parser [expat [namespace current]::xmlparser]
		}
		tcl {
		    if {[catch {package require xml 1.3} version]} {
			eval $errorCleanup
			return -code error "XML parser package is not available"
		    }
		    set parser [::xml::parser xmlparser]
		}
		default {
		    # Automatically determine which parser to use
		    if {[catch {package require expat} version]} {
			if {[catch {package require xml 1.3} version]} {
			    eval $errorCleanup
			    return -code error "unable to load XML parser"
			} else {
			    set parser [::xml::parser xmlparser]
			}
		    } else {
			set parser [expat [namespace current]::xmlparser]
		    }
		}
	    }

	    $parser configure  -elementstartcommand [namespace code [list ParseElementStart $state]]	 -elementendcommand [namespace code [list ParseElementEnd $state]]	 -characterdatacommand [namespace code [list ParseCharacterData $state]]  -processinginstructioncommand [namespace code [list ParseProcessingInstruction $state]]  -final true

	    # TclXML has features missing from expat
	    catch {
		$parser configure  -xmldeclcommand [namespace code [list ParseXMLDeclaration $state]]  -doctypecommand [namespace code [list ParseDocType $state]]
	    }

	    # Create top-level document
	    array set $state [list docNode [DOMImplementation create]]
	    array set $state [list current [lindex [array get $state docNode] 1]]

	    # Parse data
	    # Bug in TclExpat - doesn't handle non-final inputs
	    if {0 && [string length $opts(-progresscommand)]} {
		$parser configure -final false
		while {[string length [lindex $args 0]]} {
		    $parser parse [string range [lindex $args 0] 0 $opts(-chunksize)]
		    #set args [lreplace $args 0 0  #              [string range [lindex $args 0] $opts(-chunksize) end]]
                    lset args 0 [string range [lindex $args 0] $opts(-chunksize) end]
		    uplevel #0 $opts(-progresscommand)
		}
		$parser configure -final true
	    } elseif {[catch {$parser parse [lindex $args 0]} err]} {
		catch {rename $parser {}}
		unset -nocomplain $state
		return -code error $err
	    }

	    # Free data structures which are no longer required
	    catch {rename $parser {}}

	    set doc [lindex [array get $state docNode] 1]
	    unset $state
	    return $doc

	}

	serialize {

	    if {[llength $args] < 1} {
		return -code error "wrong number of arguments"
	    }

	    GetHandle documentFragment [lindex $args 0] node
	    return [eval [list Serialize:$node(node:nodeType)] $args]

	}

	trim {

	    # Removes textNodes that only contain white space

	    if {[llength $args] != 1} {
		return -code error "wrong number of arguments"
	    }

	    Trim [lindex $args 0]

	    return {}

	}

	default {
	    return -code error "unknown method \"$method\""
	}

    }

    return {}

}

Show another procedure: