/**
  * Marshall a RubricBlock object into a DOMElement object.
  * 
  * @param QtiComponent $component A RubricBlock object.
  * @return DOMElement The according DOMElement object.
  */
 protected function marshall(QtiComponent $component)
 {
     $element = static::getDOMCradle()->createElement($component->getQtiClassName());
     $arrayViews = array();
     foreach ($component->getViews() as $view) {
         $key = array_search($view, View::asArray());
         // replace '_' by the space char.
         $arrayViews[] = strtolower(str_replace("ò", " ", $key));
     }
     if (count($arrayViews) > 0) {
         static::setDOMElementAttribute($element, 'view', implode(" ", $arrayViews));
     }
     if ($component->getUse() != '') {
         static::setDOMElementAttribute($element, 'use', $component->getUse());
     }
     if ($component->hasXmlBase() === true) {
         static::setXmlBase($element, $component->getXmlBase());
     }
     foreach ($component->getContent() as $block) {
         $marshaller = $this->getMarshallerFactory()->createMarshaller($block);
         $element->appendChild($marshaller->marshall($block));
     }
     foreach ($component->getStylesheets() as $stylesheet) {
         $stylesheetMarshaller = $this->getMarshallerFactory()->createMarshaller($stylesheet);
         $element->appendChild($stylesheetMarshaller->marshall($stylesheet));
     }
     self::fillElement($element, $component);
     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;
 }