parseXml($xml); foreach ($values as $element) { if($this->sepNameSpace(strtoupper($element[tag])) == "WFS_CAPABILITIES" && $element[type] == "open"){ return $element[attributes][version]; } } throw new Exception("WFS version could not be determined from XML."); } /** * Creates a WFS object by parsing its capabilities document. * * The WFS version is determined by parsing * the capabilities document up-front. * * @return Wfs * @param $xml String */ public function createFromXml ($xml) { try { $version = $this->getVersionFromXml($xml); switch ($version) { case "1.0.0": $factory = new Wfs_1_0_Factory(); break; case "1.1.0": $factory = new Wfs_1_1_Factory(); break; default: throw new Exception("Unknown WFS version " . $version); break; } return $factory->createFromXml($xml); } catch (Exception $e) { new mb_exception($e); return null; } } public function createFromDb ($id) { try { $sql = "SELECT wfs_version FROM wfs WHERE wfs_id = $1"; $v = array($id); $t = array("i"); $res = db_prep_query($sql, $v, $t); $row = db_fetch_array($res); if ($row) { $version = $row["wfs_version"]; switch ($version) { case "1.0.0": $factory = new Wfs_1_0_Factory(); break; case "1.1.0": $factory = new Wfs_1_1_Factory(); break; default: throw new Exception("Unknown WFS version " . $version); break; } return $factory->createFromDb($id); } } catch (Exception $e) { new mb_exception($e); return null; } } } ?>