Listing G
<html> <head></head> <body> <?php // if no data submitted // display form if (!$_POST['submit']) { ?> <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="POST"> Location: <br> <input type="text" name="dir"> <br> <input type="submit" name="submit" value="Look for XML!"> </form> <? } else { // form submitted // start looking for XML files // include class file include ("XML/Statistics.php"); // create object $xs = new XML_Statistics(); $d = $_POST['dir']; // check to see if input is a valid directory name if(is_dir($d)) { // open directory and iterate over file list $dh = opendir($d); while (($f = readdir($dh))!== false) { // check to see this is not a directory // assume XML files have a .xml extension if (($f !== '.') && ($f !== '..') && (!is_dir($d.'/'.$f)) && (preg_match('/\.xml$/', $f))) { // analyze file $xs->analyzeFile($f); // print file name echo "<b>$f:</b><br>"; // count number of elements echo "Elements: " . $xs->countTag() . "<br>"; // count number of attributes echo "Attributes: " . $xs->countAttribute() . "<br>"; // count number of PIs echo "PIs: " . $xs->countPI() . "<br>"; // count number of external entities echo "External entities: " . $xs->countExternalEntity() . "<br>"; // count number of CDATA blocks echo "CDATA blocks: " . $xs->countDataChunks() . "<br>"; // get maximum depth $md = $xs->getMaxDepth(); echo "Maximum depth: $md<br>"; // print number of elements at each level for ($x=1; $x<=$md; $x++) { echo "Elements at depth $x:" . $xs->countTagsInDepth($x) . "<br>"; } echo "<hr>"; } else { next; } } closedir($dh); } // not a valid directory // print error else { echo "Invalid directory location!"; } } ?> </body> </html>