/**
  * Short description of method buildExpression
  *
  * @access public
  * @author Joel Bout, <*****@*****.**>
  * @param  DOMElement data
  * @return oat\taoQtiItem\model\qti\response\Rule
  */
 protected function buildExpression(DOMElement $data)
 {
     $data = simplexml_import_dom($data);
     return ExpressionParserFactory::build($data);
 }
 /**
  * Short description of method buildResponseCondition
  *
  * @access private
  * @author Joel Bout, <*****@*****.**>
  * @param  SimpleXMLElement data
  * @return oat\taoQtiItem\model\qti\response\ResponseCondition
  */
 private static function buildResponseCondition(SimpleXMLElement $data)
 {
     $responseCondition = new ResponseCondition();
     foreach ($data->children() as $child) {
         switch ($child->getName()) {
             case 'responseIf':
             case 'responseElseIf':
                 $subchildren = null;
                 foreach ($child->children() as $subchild) {
                     $subchildren[] = $subchild;
                 }
                 // first node is condition
                 $conditionNode = array_shift($subchildren);
                 $condition = ExpressionParserFactory::build($conditionNode);
                 // all the other nodes are action
                 $responseRules = array();
                 foreach ($subchildren as $responseRule) {
                     $responseRules[] = self::buildResponseRule($responseRule);
                 }
                 $responseCondition->addResponseIf($condition, $responseRules);
                 break;
             case 'responseElse':
                 $responseRules = array();
                 foreach ($child->children() as $responseRule) {
                     $responseRules[] = self::buildResponseRule($responseRule);
                 }
                 $responseCondition->setResponseElse($responseRules);
                 break;
             default:
                 throw new ParsingException('unknown node in ResponseCondition');
         }
     }
     $returnValue = $responseCondition;
     return $returnValue;
 }