コード例 #1
0
 public function testSeparateStylesheetTwo()
 {
     // The loaded component is still a rubricBlock but this
     // time with two (YES, TWO!) stylesheets.
     $doc = new XmlDocument('2.1');
     $doc->load(self::samplesDir() . 'rendering/rubricblock_3.xml');
     $this->assertEquals(2, count($doc->getDocumentComponent()->getStylesheets()));
     $renderingEngine = new XhtmlRenderingEngine();
     $renderingEngine->setStylesheetPolicy(XhtmlRenderingEngine::STYLESHEET_SEPARATE);
     $rendering = $renderingEngine->render($doc->getDocumentComponent());
     $linkElts = $rendering->getElementsByTagName('link');
     $this->assertEquals(0, $linkElts->length);
     $linksFragment = $renderingEngine->getStylesheets();
     $this->assertInstanceOf('\\DOMDocumentFragment', $linksFragment);
     $this->assertEquals(2, $linksFragment->childNodes->length);
     // Test first <link> element.
     $linkElt = $linksFragment->childNodes->item(0);
     $this->assertEquals('link', $linkElt->localName);
     $this->assertEquals('style1.css', $linkElt->getAttribute('href'));
     $this->assertEquals('text/css', $linkElt->getAttribute('type'));
     $this->assertEquals('screen', $linkElt->getAttribute('media'));
     $this->assertEquals('\\0_ !HOURRAY! _0/', $linkElt->getAttribute('title'));
     // Test second <link> element.
     $linkElt = $linksFragment->childNodes->item(1);
     $this->assertEquals('link', $linkElt->localName);
     $this->assertEquals('style2.css', $linkElt->getAttribute('href'));
     $this->assertEquals('text/css', $linkElt->getAttribute('type'));
     $this->assertEquals('screen', $linkElt->getAttribute('media'));
     $this->assertEquals('0/*\\0 (Jedi duel)', $linkElt->getAttribute('title'));
 }
コード例 #2
0
<?php

use qtism\runtime\rendering\markup\AbstractMarkupRenderingEngine;
use qtism\data\View;
use qtism\data\ViewCollection;
use qtism\data\storage\xml\XmlDocument;
use qtism\runtime\rendering\markup\xhtml\XhtmlRenderingEngine;
require_once dirname(__FILE__) . '/../../qtism/qtism.php';
$doc = new XmlDocument();
$doc->load('../samples/rendering/rubricblock_2.xml');
$renderer = new XhtmlRenderingEngine();
$separate = false;
if (isset($argv[1]) && strtolower($argv[1]) === 'separate') {
    $separate = true;
}
$renderer->setStylesheetPolicy($separate === true ? XhtmlRenderingEngine::STYLESHEET_SEPARATE : XhtmlRenderingEngine::STYLESHEET_INLINE);
$rendering = $renderer->render($doc->getDocumentComponent());
$rendering->formatOutput = true;
echo $rendering->saveXML();
if ($separate === true) {
    echo "\n\nSeparate Stylesheets:\n";
    echo "----------------------\n\n";
    $stylesheets = $renderer->getStylesheets();
    echo $stylesheets->ownerDocument->saveXML($stylesheets) . "\n";
}
コード例 #3
0
ファイル: Render.php プロジェクト: nagyist/qti-sdk
 /**
  * Run the rendering behaviour related to the "XHTML" flavour.
  * 
  * @param \qtism\data\storage\xml\XmlDocument $doc The QTI XML document to be rendered.
  * @param \qtism\runtime\rendering\markup\xhtml\XhtmlRenderingEngine $renderer
  * @return string The raw rendering data.
  */
 private function runXhtml(XmlDocument $doc, XhtmlRenderingEngine $renderer)
 {
     $arguments = $this->getArguments();
     $profile = $arguments['flavour'];
     $xml = $renderer->render($doc->getDocumentComponent());
     $header = '';
     $footer = '';
     $indent = '';
     $nl = '';
     if ($arguments['format'] === true) {
         $xml->formatOutput = true;
         $indent .= "  ";
         $nl .= "\n";
     }
     if ($arguments['document'] === true) {
         $rootComponent = $doc->getDocumentComponent();
         $title = '';
         if ($rootComponent->getQtiClassName() === 'assessmentItem') {
             $title = XmlUtils::escapeXmlSpecialChars($rootComponent->getTitle());
         }
         $header .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
         $header .= "<html>{$nl}";
         $header .= "{$indent}<head>{$nl}";
         $header .= "{$indent}{$indent}<meta charset=\"utf-8\">{$nl}";
         if (empty($title) !== false) {
             $header .= "{$indent}{$indent}<title>" . $title . "</title>{$nl}";
         }
         $header .= "{$indent}{$indent}" . $renderer->getStylesheets()->ownerDocument->saveXML($renderer->getStylesheets());
         $header .= "{$indent}</head>{$nl}";
         $header .= "{$indent}<body>{$nl}";
         $footer = "{$indent}</body>{$nl}";
         $footer .= "</html>\n";
     }
     $body = $xml->saveXml($xml->documentElement) . "{$nl}";
     // Indent body...
     $indentBody = '';
     if ($arguments['document'] === null) {
         $indent = '';
     }
     foreach (preg_split('/\\n|\\r/u', $body, -1, PREG_SPLIT_NO_EMPTY) as $bodyLine) {
         // do stuff with $line
         $indentBody .= "{$indent}{$indent}{$bodyLine}{$nl}";
     }
     $body = $indentBody;
     return "{$header}{$indentBody}{$footer}";
 }