I found the reason there is a string replacement in function
function output_array($elements)
/*
Output each element in $elements on a separate line, with automatic HTML indenting.
This should be passed markup which uses the <tag/> form for unpaired tags, to help keep
track of indenting, although its actual output converts these to <tag> for W3C validation
*/
{
foreach ($elements as $element) {
$delta=substr_count($element, '<')-substr_count($element, '<!')-2*substr_count($element, '</')-substr_count($element, '/>');
if ($delta<0)
$this->indent+=$delta;
echo str_repeat("\t", max(0, $this->indent)).str_replace('/>', '>', $element)."\n"; // see this here...
if ($delta>0)
$this->indent+=$delta;
$this->lines++;
}
}