/**
  * Create an xml node for a page
  *
  * Calls itself recursivly to capture all children
  * @param DomDocument $xml
  * @param \Jazzee\Entity\Page $page
  */
 public function pageXml(DOMDocument $dom, $page)
 {
     $pxml = $dom->createElement('page');
     $pxml->setAttribute('title', htmlentities($page->getTitle(), ENT_COMPAT, 'utf-8'));
     $pxml->setAttribute('min', $page->getMin());
     $pxml->setAttribute('max', $page->getMax());
     $pxml->setAttribute('required', $page->isRequired());
     $pxml->setAttribute('answerStatusDisplay', $page->answerStatusDisplay());
     $pxml->appendChild($this->createCdataElement($dom, 'instructions', $page->getInstructions()));
     $pxml->appendChild($this->createCdataElement($dom, 'leadingText', $page->getLeadingText()));
     $pxml->appendChild($this->createCdataElement($dom, 'trailingText', $page->getTrailingText()));
     if ($page instanceof \Jazzee\Entity\ApplicationPage) {
         $pxml->setAttribute('weight', $page->getWeight());
         $pxml->setAttribute('kind', $page->getKind());
         $pxml->setAttribute('name', $page->getName());
         $page = $page->getPage();
         if ($page->isGlobal()) {
             $pxml->setAttribute('globalPageUuid', $page->getUuid());
         }
     }
     $pxml->setAttribute('class', $page->getType()->getClass());
     $elements = $pxml->appendChild($dom->createElement('elements'));
     foreach ($page->getElements() as $element) {
         $exml = $dom->createElement('element');
         $exml->setAttribute('title', $element->getTitle());
         $exml->setAttribute('name', $element->getName());
         $exml->setAttribute('class', $element->getType()->getClass());
         $exml->setAttribute('fixedId', $element->getFixedId());
         $exml->setAttribute('weight', $element->getWeight());
         $exml->setAttribute('min', $element->getMin());
         $exml->setAttribute('max', $element->getMax());
         $exml->setAttribute('required', $element->isRequired());
         $exml->setAttribute('instructions', htmlentities($element->getInstructions(), ENT_COMPAT, 'utf-8'));
         $exml->setAttribute('format', htmlentities($element->getFormat(), ENT_COMPAT, 'utf-8'));
         $exml->setAttribute('defaultValue', $element->getDefaultValue());
         $listItems = $exml->appendChild($dom->createElement('listitems'));
         foreach ($element->getListItems() as $item) {
             //only export active items
             if ($item->isActive()) {
                 $ixml = $this->createCdataElement($dom, 'item', $item->getValue());
                 $ixml->setAttribute('active', (int) $item->isActive());
                 $ixml->setAttribute('weight', $item->getWeight());
                 $ixml->setAttribute('name', $item->getName());
                 $listItems->appendChild($ixml);
                 unset($ixml);
             }
         }
         $elements->appendChild($exml);
     }
     $children = $pxml->appendChild($dom->createElement('children'));
     foreach ($page->getChildren() as $child) {
         $children->appendChild($this->pageXml($dom, $child));
     }
     $variables = $pxml->appendChild($dom->createElement('variables'));
     foreach ($page->getVariables() as $var) {
         $variable = $dom->createElement('variable', (string) $var->getValue());
         $variable->setAttribute('name', $var->getName());
         $variables->appendChild($variable);
     }
     return $pxml;
 }