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 ::xml::parser {args} {
    
    variable ParserCounter

    if {[llength $args] > 0} {
	set name [lindex $args 0]
	set args [lreplace $args 0 0]
    } else {
	set name parser[incr ParserCounter]
    }

    if {[namespace which [namespace current]::$name] ne {}} {
	return -code error "unable to create parser object \"[namespace current]::$name\" command"
    }

    # Initialise state variable and object command
    upvar \#0 [namespace current]::$name parser
    set sgml_ns [namespace parent]::sgml
    array set parser [list name $name			 -final 1					 -elementstartcommand ${sgml_ns}::noop		 -elementendcommand ${sgml_ns}::noop		 -characterdatacommand ${sgml_ns}::noop		 -processinginstructioncommand ${sgml_ns}::noop	 -externalentityrefcommand ${sgml_ns}::noop	 -xmldeclcommand ${sgml_ns}::noop		 -doctypecommand ${sgml_ns}::noop		 -warningcommand ${sgml_ns}::noop		 -statevariable [namespace current]::$name	 -reportempty 0					 internaldtd {}					 ]

    proc [namespace current]::$name {method args}  "eval ParseCommand $name \$method \$args"

    eval ParseCommand [list $name] configure $args

    return [namespace current]::$name

}

Show another procedure: