/** * @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; }