It looks like processing instructions are completely ignored when
processing the DTD.
# Processing instruction.
if ( m/^\s*<[?]([^?]|[?][^>])*[?]>\s*/o ) {
print STDERR place()."Warning: ignoring processing instruction $&.\n";
$_ = $';
}