/**
  * undocumented function
  *
  * @param string $url
  * @return array
  * @link http://www.oexchange.org/spec/#discovery-page
  */
 public static function page($url)
 {
     $htmlDocument = new DOMDocument();
     $loaded = @$htmlDocument->loadHTML(self::_retrieve($url));
     if (!$loaded) {
         throw new OExchange_Exception("Failed to load {$url}");
     }
     $xpath = new DOMXpath($htmlDocument);
     $expression = "/html/head/link[@rel='" . self::OEXCHANGE_RELATED_TARGET_REL . "']";
     $links = $xpath->query($expression);
     $targets = array();
     foreach ($links as $link) {
         $serviceXRD = XRD_Document::fromString(self::_retrieve($link->getAttribute('href')));
         $targets[] = OExchange_Target::fromXRD($serviceXRD);
     }
     return $targets;
 }
 public function testToXRDDocumentGeneration()
 {
     $target = new OExchange_Target(array('name' => 'CoolService', 'title' => 'A cool service that accepts URLs', 'subject' => 'http://www.example.org/coolservice', 'vendor' => 'Examples Inc', 'prompt' => 'Share to CoolService', 'offer' => 'http://www.example.com/coolservice/offer.php', 'icon' => 'http://www.example.com/assets/icon.png', 'icon32' => 'http://www.example.com/assets/icon32.png'));
     $result = $target->toXRD()->toXML();
     $this->assertXmlStringEqualsXmlFile(TEST_DATA_PATH . '/coolservice.xrd', $result);
 }