Tcl package, 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 } foreach file [glob $argv] { if [file readable $file] { set parser [expat -externalentitycommand externalEntityRefHandler\ -baseurl "file://[file join [pwd] $file]" \ -paramentityparsing notstandalone ] tnc $parser enable catch {$parser parsefile $file} res if {$res==""} {set res ok} puts $file:$res } }