server-php-xml-class-rddl-parser-class-rddl.php / php
<?php //#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
###
// Title : Class RDDL_parser // Version : 1.0 // Author : Luis Argerich (lrargerich@yahoo.com) // Last modification date : 06-20-2002 // Description : A class to parse RDDL documents. // Can parse documents from files or URIs. // Once you parsed the RDDL document you get a list of resources // to process them. //#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
###
// History: // 06-20-2002 : First version of this class. //#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
###
// To-Dos: // //#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
###
// How to use it: // Read the documentation in rddl_parser.html //#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
###
if(defined("_class_rddl_parser_is_included")) { // do nothing since the class is already included } else { define("_class_rddl_parser_is_included",1); define("NAMESPACE_SEPARATOR_CHAR","^"); define("RDDL_NAMESPACE_NAME","http://www.rddl.org/"); define("XLINK_NAMESPACE_NAME","http://www.w3.org/1999/xlink"); class RDDL_parser { var base=''; var error=''; function get_error() { return this->resources; } function rddl_parse(this->base=this->parser = xml_parser_create_ns("",NAMESPACE_SEPARATOR_CHAR); xml_set_object(this); xml_parser_set_option(this->parser, "startElement", "endElement"); if (!(rddl, "r"))) { rddl"; return false; } while (fp, 4096)) { if (!xml_parse(data, feof(this->error="XML error: ".xml_error_string(xml_get_error_code(this->parser); return false; } } xml_parser_free(parser, attrs) { name); if(strstr(attrs as atv) { if(strstr(atrib_parts=explode(NAMESPACE_SEPARATOR_CHAR,atk=atk=="href") { this->base,buffer,0); buffer; } atk]=this->resources[]=//print "name<br/>"; } function endElement(name) { } function _parse_uri(buffer,scheme,&path,&fragment ) { uri); if(isset(scheme=scheme=''; } if(isset(host=host=''; } if(isset(authority=authority=''; } if(isset(path=path=''; } if(isset(query=query=''; } if(isset(fragment=fragment=''; } } function _resolve_uri_reference(reference_uri,&length ) { reference_buffer=''; buffer = ''; reference_uri,reference_buffer ),reference_authority, reference_query,reference_scheme == '' && reference_path == '' && buffer=reference_fragment != '' ) { buffer.=reference_scheme != '' ) { reference_uri; } else { base_uri, base_buffer ), base_authority, base_query, result_scheme = reference_authority != '' ) { reference_authority; } else { base_authority; if( reference_path{0} == '/') || (result_path = p = ''; path_buffer; p = strstr( p ) { base_path, '\\' ); } if( path_buffer.=//while( s <= p ) //{ // *d++ = *s++; //} //*d++ = 0; } if( reference_path != '' ) { reference_path; } { //remove all occurrences of "./" //print( path_buffer=preg_replace("/\/\.\//","/", path_buffer=preg_replace("/\/([^\/\.])*\/..path_buffer); while(preg_match("/\.\./",path_buffer=preg_replace("/\/([^\/\.]*)\/..\//","/", } path_buffer=preg_replace("/\.path_buffer); } } } // This replaces the C pointer assignament path_buffer; if( buffer=buffer.=":"; } if( buffer.="//"; result_authority; } if( buffer.=reference_query != '' ) { buffer.=reference_fragment != '' ) { buffer.=
(C) Æliens 20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.