Version 4 of tnc

Updated 2008-11-20 07:03:20 by hae

Tcl package, XML DTD validation extension to tDOM. Usage example contributed by RS:

 package require tnc ;# implies tdom

 #---------------------------------------- modified from expat man page
 proc externalEntityRefHandler {base systemId publicId} {
    if {![regexp {^[/a-zA-Z]+:/} $systemId]}  {
        regsub {^[/a-zA-Z]+:} $base {} base
        set basedir [file dirname $base]
        set systemId "[set basedir]/[set systemId]"
    }
    regsub {^[/a-zA-Z]+:} $systemId "" systemId
    set fd [open $systemId]
    list channel $systemId $fd
 }

 set parser [expat -externalentitycommand externalEntityRefHandler\
                   -baseurl "file://[file join [pwd] $file]" \
                   -paramentityparsing always]
 tnc $parser enable
 foreach file [glob $argv] {
    if [file readable $file] {
        catch {$parser parsefile $file} res
        if {$res==""} {set res ok}
        puts $file:$res
        $parser reset
    }
 }
 $parser free

The externalEntityRefHandler is freely configurable by the user. From tDOM 0.7.5, a convenience proc will be included in the release (planned for mid November 2002).