protected function marshall(QtiComponent $component)
    {
        $element = static::getDOMCradle()->createElement($component->getQtiClassName());

        $this->setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
        $this->setDOMElementAttribute($element, 'cardinality', Cardinality::getNameByConstant($component->getCardinality()));

        if ($component->getBaseType() != -1) {
            $this->setDOMElementAttribute($element, 'baseType', BaseType::getNameByConstant($component->getBaseType()));
        }

        // deal with default value.
        if ($component->getDefaultValue() != null) {
            $defaultValue = $component->getDefaultValue();
            $defaultValueMarshaller = $this->getMarshallerFactory()->createMarshaller($defaultValue, array($component->getBaseType()));
            $element->appendChild($defaultValueMarshaller->marshall($defaultValue));
        }

        return $element;
    }