$var =~ s/>/\>/g;
$var =~ s/\"/\"/g;
$var =~ s/\'/\'/g;
+
+ # the following nukes characters disallowed by the XML 1.0
+ # spec, Production 2.2. 1.0 declares that only the following
+ # are valid:
+ # (#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF])
+ $var =~ s/([\x{0001}-\x{0008}]|
+ [\x{000B}-\x{000C}]|
+ [\x{000E}-\x{0019}]|
+ [\x{D800}-\x{DFFF}]|
+ [\x{FFFE}-\x{FFFF}])//gx;
return $var;
}