<?php

$rng = <<<RNG
<?xml version="1.0" encoding="UTF-8"?> 
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" 
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <start>
\t<element name="apple">
    </element>
  </start>
</grammar>
RNG;
$xml = <<<XML
<?xml version="1.0"?> 
<apple> 
  <pear>Pear</pear>
</apple>
XML;
$doc = new DOMDocument();
$doc->loadXML($xml);
$result = $doc->relaxNGValidateSource($rng);
var_dump($result);
Example #2
0
 protected function transform_xsl($url, $xsl_filename, $isstring = 0)
 {
     if (strrchr($url, 'http://') || $this->text != '') {
         if (strrchr($url, '#')) {
             $fragment = array_pop(explode('#', $url));
         }
         if ($this->text != '') {
             $this->use_store = 0;
             $title = 'Using direct Input';
             $url = $this->path . 'direct/';
             $html = method_exists('tidy', 'cleanRepair') ? $this->tidy_html(urldecode($this->text), '', 'php') : urldecode($this->text);
         } else {
             $html = $this->get_file_contents($url);
         }
         if (strlen(trim($html)) === 0) {
             return $this->error('noURL');
         }
         $dom = new DOMDocument('1.0');
         $dom->preserveWhiteSpace = false;
         if ($this->text != '') {
             @$dom->loadXML($html);
         } else {
             @$dom->loadXML($this->tidy_html($html, $url, $this->tidy_option));
         }
         $dom->formatOutput = true;
         $dom->normalizeDocument();
         $title = !isset($title) ? $dom->getElementsByTagName('title')->item(0)->nodeValue : $title;
         if ($this->type == 'rdfa' && !$dom->getElementsByTagName('html')->item(0)->getAttribute('xmlns')) {
             $dom->getElementsByTagName('html')->item(0)->setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
         }
         if (isset($fragment)) {
             $dom->relaxNGValidateSource($this->valid_schema());
             $element = $dom->getElementById($fragment);
             $content = $dom->saveXML($element);
             $dom = $this->return_html_frag($content, $title);
         }
         if (!method_exists('xsltProcessor', 'transformToXML')) {
             die("Sorry PHP xslt functions unavailable");
         }
         $xslt = new xsltProcessor();
         $xslt->setParameter('', 'transformr', $this->path);
         $xslt->setParameter('', 'url', $url);
         $xslt->setParameter('', 'request-uri', $_SERVER['REQUEST_URI']);
         $xslt->setParameter('', 'base-uri', $url);
         $xslt->setParameter('', 'doc-title', $title);
         $xslt->setParameter('', 'version', $this->version);
         if ($this->use_store == 1) {
             $xslt->setParameter('', 'endpoint-link', $this->path . 'sparql/endpoint?');
         }
         $xslt->importStyleSheet(DomDocument::load($xsl_filename));
         if (!@DomDocument::loadXML($dom->saveXML())) {
             $dom = @DomDocument::loadXML($this->tidy_html($html, $url, $this->tidy_option, 'output-xml'));
             // reload as plain vanilla xml
             if (!$dom) {
                 return $this->error('invalidDoc');
             }
         }
         return $xslt->transformToXML(@DomDocument::loadXML($dom->saveXML()));
     } elseif ($url == 'referer' && getenv("HTTP_REFERER") != '') {
         $referer = getenv("HTTP_REFERER");
         return $this->transform_xsl($referer, $xsl_filename);
     } elseif (getenv("HTTP_REFERER") != '' && $url != '') {
         $referer = getenv("HTTP_REFERER");
         return $this->transform_xsl($referer . '#' . $url, $xsl_filename);
     } else {
         return $this->error('noURL');
     }
 }