, * Andreas Österreicher */ /** * RDF Klasse * * Hilfsfunktionen für die Generierung von RDF-Dateien * */ class rdf { // Header Variablen public $content_type='Content-type: application/xhtml+xml'; // string public $xml_header=''; // string public $xml_ns; // string protected $rdf_url; // string protected static $rdf_text; protected static $nl="\n"; protected static $tb="\t"; // Objekt Variablen protected $counter=0; public $obj_id; public $obj = array(); public $attr = array(); protected $childs = array(); protected $sequence = array(); /** * Konstruktor - Uebergibt die Connection und laedt optional eine Reservierung * @param $reservierung_id */ public function __construct($xml_ns=null,$rdf_url=null) { $this->xml_ns = $xml_ns; $this->rdf_url = $rdf_url; } /** * Erstellt ein neues RDF Description Objekt * * @return index des neuen Objekts */ public function newObjekt($id) { $this->obj[$this->counter] = new rdf(); $this->obj[$this->counter++]->setObjID($id); return $this->counter-1; } /** * Setzt die ID eines Objektes * * @param $id */ public function setObjID($id) { $this->obj_id=$id; return true; } /** * Sendet die HTTP-Header der RDF Datei * @param $cache */ public function sendHeader($cache=false) { if ($cache) { } else { header("Cache-Control: no-cache"); header("Cache-Control: post-check=0, pre-check=0",false); header("Expires Mon, 26 Jul 1997 05:00:00 GMT"); header("Pragma: no-cache"); } header($this->content_type); echo ''; return true; } /** * Setzt die Werte * @param $name * @param $value * @param $cdata */ public function setAttribut($name,$value,$cdata=true) { if(!isset($this->attr[$this->counter])) $this->attr[$this->counter] = new stdClass(); $this->attr[$this->counter]->name=$name; $this->attr[$this->counter]->value=$value; $this->attr[$this->counter]->cdata=$cdata; $this->counter++; //var_dump($this->attr); return true; } /** * Erzeugt den RDF Header aus den bestehenden Daten */ public function createRdfHeader() { $this->rdf_text="\n".'xml_ns.'="'.$this->rdf_url.'/rdf#"'."\n".'>'."\n\t"; } /** * Erzeugt die Descriptions aus den bestehenden Daten */ public function createRdfData() { foreach ($this->obj as $obj) { $this->rdf_text.="\n\t\t".''; foreach ($obj->attr as $attr) $this->rdf_text.="\n\t\t\t<".$this->xml_ns.':'.$attr->name.'>value.']]>xml_ns.':'.$attr->name.'>'; $this->rdf_text.="\n\t\t".''; } } /** * Fuegt ein Objekt zur Sequence hinzu * Wenn eine Parent_id uebergeben wird, wird das Objekt unterhalb dieses Eintrags * angehängt * * @param $id * @param $parent_id */ public function addSequence($id, $parent_id=null) { if(!is_null($parent_id)) { $this->childs[$parent_id][]=$id; } else { $this->sequence[]=$id; } } /** * Erzeugt die Sequenz * Wenn eine ID uebergeben wird, wird nur die Sequenz unterhalb dieser ID erzeugt * * @param $id */ function createRDFSequence($id=null) { if(is_null($id)) { $this->rdf_text.="\n\t\t".''."\n"; foreach ($this->sequence as $id) { $this->createRDFSequence($id); } $this->rdf_text.="\n\t\t".''."\n"; } else { $this->rdf_text.="\n\t".''; if(isset($this->childs[$id])) { $this->rdf_text.=''."\n"; foreach($this->childs[$id] as $childid) { $this->createRDFSequence($childid); } $this->rdf_text.=''."\n"; } $this->rdf_text.=''; } } /** * Generiert den RDF Footer */ public function createRdfFooter() { $this->rdf_text.=''."\n\t"; } /** * Generiert das RDF */ public function sendRdfText() { //echo $this->rdf_text; if (!isset($this->rdf_text)) { $this->createRdfHeader(); $this->createRdfData(); $this->createRdfSequence(); $this->createRdfFooter(); } echo $this->rdf_text; return true; } } ?>