/**
  * Marshall a Stylesheet object into a DOMElement object.
  * 
  * @param QtiComponent $component A Stylesheet object.
  * @return DOMElement The according DOMElement object.
  */
 protected function marshall(QtiComponent $component)
 {
     $element = static::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'href', $component->getHref());
     self::setDOMElementAttribute($element, 'media', $component->getMedia());
     self::setDOMElementAttribute($element, 'type', $component->getType());
     if (($title = $component->getTitle()) != '') {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     return $element;
 }
 /**
  * Marshall an AssessmentItem object into a DOMElement object.
  * 
  * @param QtiComponent $component An AssessmentItem object.
  * @return DOMElement The according DOMElement object.
  */
 protected function marshall(QtiComponent $component)
 {
     $element = static::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'title', $component->getTitle());
     self::setDOMElementAttribute($element, 'timeDependent', $component->isTimeDependent());
     self::setDOMElementAttribute($element, 'adaptive', $component->isAdaptive());
     if ($component->hasLang() === true) {
         self::setDOMElementAttribute($element, 'lang', $component->getLang());
     }
     if ($component->hasLabel() === true) {
         self::setDOMElementAttribute($element, 'label', $component->getLabel());
     }
     if ($component->hasToolName() === true) {
         self::setDOMElementAttribute($element, 'toolName', $component->getToolName());
     }
     if ($component->hasToolVersion() === true) {
         self::setDOMElementAttribute($element, 'toolVersion', $component->getToolVersion());
     }
     foreach ($component->getResponseDeclarations() as $responseDeclaration) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($responseDeclaration);
         $element->appendChild($marshaller->marshall($responseDeclaration));
     }
     foreach ($component->getOutcomeDeclarations() as $outcomeDeclaration) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($outcomeDeclaration);
         $element->appendChild($marshaller->marshall($outcomeDeclaration));
     }
     foreach ($component->getTemplateDeclarations() as $templateDeclaration) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($templateDeclaration);
         $element->appendChild($marshaller->marshall($templateDeclaration));
     }
     if ($component->hasTemplateProcessing() === true) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($component->getTemplateProcessing());
         $element->appendChild($marshaller->marshall($component->getTemplateProcessing()));
     }
     foreach ($component->getStylesheets() as $stylesheet) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($stylesheet);
         $element->appendChild($marshaller->marshall($stylesheet));
     }
     if ($component->hasItemBody() === true) {
         $itemBody = $component->getItemBody();
         $marshaller = $this->getMarshallerFactory()->createMarshaller($itemBody);
         $element->appendChild($marshaller->marshall($itemBody));
     }
     if ($component->hasResponseProcessing() === true) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($component->getResponseProcessing());
         $element->appendChild($marshaller->marshall($component->getResponseProcessing()));
     }
     foreach ($component->getModalFeedbacks() as $modalFeedback) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($modalFeedback);
         $element->appendChild($marshaller->marshall($modalFeedback));
     }
     return $element;
 }
 /**
  * Marshall a ModalFeedbackRule object to its XML counterpart.
  *
  * @param \qtism\data\QtiComponent $component
  * @return \DOMElement
  */
 public function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement('modalFeedbackRule');
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     if ($component->hasTitle() === true) {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     return $element;
 }
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     if ($component->hasTitle() === true) {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     foreach ($elements as $e) {
         $element->appendChild($e);
     }
     return $element;
 }
 /**
  * Marshall a TestFeedback object into a DOMElement object.
  * 
  * @param QtiComponent $component A TestFeedback object.
  * @return DOMElement The according DOMElement object.
  */
 protected function marshall(QtiComponent $component)
 {
     $element = static::getDOMCradle()->createElement($component->getQtiClassName());
     $access = $component->getAccess() == TestFeedbackAccess::AT_END ? 'atEnd' : 'during';
     $showHide = $component->getShowHide() == ShowHide::SHOW ? 'show' : 'hide';
     self::setDOMElementAttribute($element, 'access', $access);
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'showHide', $showHide);
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     $title = $component->getTitle();
     if (!empty($title)) {
         self::setDOMElementAttribute($element, 'title', $title);
     }
     $flowStatic = static::getDOMCradle()->createDocumentFragment();
     $flowStatic->appendXML($component->getContent());
     $element->appendChild($flowStatic);
     return $element;
 }
 /**
  * Marshall an AssessmentTest object into a DOMElement object.
  * 
  * @param QtiComponent $component An AssessmentTest object.
  * @return DOMElement The according DOMElement object.
  * @throws MarshallingException
  */
 protected function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'title', $component->getTitle());
     $toolName = $component->getToolName();
     if (!empty($toolName)) {
         self::setDOMElementAttribute($element, 'toolName', $component->getToolName());
     }
     $toolVersion = $component->getToolVersion();
     if (!empty($toolVersion)) {
         self::setDOMElementAttribute($element, 'toolVersion', $component->getToolVersion());
     }
     if ($component->hasTimeLimits() === true) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($component->getTimeLimits());
         $element->appendChild($marshaller->marshall($component->getTimeLimits()));
     }
     foreach ($component->getOutcomeDeclarations() as $outcomeDeclaration) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($outcomeDeclaration);
         $element->appendChild($marshaller->marshall($outcomeDeclaration));
     }
     foreach ($component->getTestParts() as $part) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($part);
         $element->appendChild($marshaller->marshall($part));
     }
     $outcomeProcessing = $component->getOutcomeProcessing();
     if (!empty($outcomeProcessing)) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($outcomeProcessing);
         $element->appendChild($marshaller->marshall($outcomeProcessing));
     }
     foreach ($component->getTestFeedbacks() as $feedback) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($feedback);
         $element->appendChild($marshaller->marshall($feedback));
     }
     return $element;
 }