// define handler functions
function startElement($parser,$name,$attrs='') {
global $open_tags,$current_tag,$last_tag;
$last_tag=$current_tag;
$current_tag=$name;
if($format=$open_tags[$name]) {
switch($name) {
case 'head' :
echo "
";
break;
case 'month' :
echo "| ";
break;
case 'date' :
if($last_tag!='month')
echo " | | ";
echo "";
break;
case 'day' :
echo " | ";
break;
case 'topic' :
echo " | ";
break;
case 'reference' :
if($last_tag=='day')
echo " | | ";
echo "";
break;
case 'assign' :
if($last_tag=='day')
echo " | | | ";
if($last_tag=='topic')
echo " | ";
echo "";
break;
case 'note' : // only allowed inside with no topic text
echo "";
break;
case 'due' : // only allowed inside
echo "";
break;
case 'due2' : // due with assign on same date
echo " ";
break;
default:
break;
}
}
else {
echo "ERROR - invalid tag $name \n";
}
}
function endElement($parser,$name,$attrs='') {
global $close_tags,$current_tag,$last_tag;
if($format=$close_tags[$name]) {
switch($name) {
case 'schedule' :
echo "\n";
break;
case 'head' :
echo " Tentative Schedule Spring 2003";
echo "**** indicates modification \n";
echo "\n";
break;
case 'entry' :
switch($current_tag) {
case 'day' :
echo "| | ";
case 'topic' :
echo " | ";
case 'reference' :
echo " | ";
break;
default:
break;
}
echo "\n";
break;
case 'month' :
echo " \n";
break;
case 'date' :
echo "\n";
break;
case 'day' :
echo "";
break;
case 'topic' :
echo " ";
break;
case 'reference' :
echo " ";
break;
case 'assign' :
echo " ";
break;
case 'note' :
echo "";
break;
case 'due' :
echo " DUE";
break;
case 'due2' :
echo " DUE";
break;
default:
break;
}
}
else {
echo "ERROR - invalid tag $name \n";
}
}
function characterData($parser,$chardata) {
global $current_tag,$headflag;
if($current_tag=='head' && $headflag==0) {
echo "";
$headflag=1;
}
// strip leading and trailing whitespace
if($chardata!="\n" && $chardata!=" " && $chardata!="\t") {
echo $chardata;
}
}
$open_tags=array (
"schedule" => "",
"entry" => "",
"head" => "",
"month" => "",
"date" => "",
"day" => "",
"topic" => "",
"reference" => "",
"assign" => "",
"due" => "",
"due2" => "",
"note" => ""
);
$close_tags=array (
"schedule" => "",
"entry" => "",
"head" => "",
"month" => "",
"date" => "",
"day" => "",
"topic" => "",
"reference" => "",
"assign" => "",
"due" => "",
"due2" => "",
"note" => ""
);
$current_tag="";
$xml_parser=xml_parser_create();
xml_set_element_handler($xml_parser,'startElement','endElement');
xml_set_character_data_handler($xml_parser,'characterData');
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,false);
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,true);
$fp=fopen("schedule.xml","r");
$headflag=0;
while($data=fread($fp,80)) {
if(!(xml_parse($xml_parser,$data,feof($fp)))) {
echo "ERROR - parser failure: ";
echo xml_error_string(xml_get_error_code($xml_parser));
echo " at line number ".xml_get_current_line_number($xml_parser)." \n";
exit();
}
}
xml_parser_free($xml_parser);
exit();
?>
|