Exemplo n.º 1
0
 /**
  * @param DOMDocument $documentXsd
  * @param DOMElement $container
  * @return DOMElement
  */
 public function generateXSD($documentXsd = null, $container = null)
 {
     // Création de l'élément XML relatif au noeud.
     $element = MyFunction::generateXSDElement($documentXsd, array("name" => $this->getXMLTag()));
     // On récupère le noeud où inserer les noeuds fils.
     $insertIn = $element->firstChild->firstChild;
     /** @var EiLeafDataSet $leaf */
     foreach ($this->getLeaves() as $leaf) {
         // On génère l'élément XSD relatif à la feuille.
         $leafElement = $leaf->generateXSD($documentXsd);
         $insertIn->appendChild($leafElement);
     }
     // On crée la séquences de noeuds fils.
     $sequence = $documentXsd->createElement("xs:sequence");
     $sequence->setAttribute('minOccurs', 0);
     $sequence->setAttribute('maxOccurs', "unbounded");
     // On parcours les fils.
     /** @var EiNodeDataSet $child */
     foreach ($this->getChildren() as $child) {
         // On génère l'élément XSD relatif au noeud fils.
         $childElement = $child->generateXSD($documentXsd, $element);
         // Puis on l'insert dans la séquence.
         $sequence->appendChild($childElement);
     }
     // On insert ensuite la séquence.
     $insertIn->appendChild($sequence);
     if ($container == null) {
         $documentXsd->appendChild($element);
     } else {
         $container->appendChild($element);
     }
     return $element;
 }