/** * Permet de créer le xsd contenant la définition d'élément pour tester les types * * @param String $nameFile String * @param String $glob String * * @return bool */ static function createTestSchemaClasses($nameFile, $glob) { $dom = new CMbXMLDocument("UTF-8"); //On enregistre pas les nodeText vide $dom->preserveWhiteSpace = false; $dom->load($nameFile); //on récupère tous les élements $xpath = new CMbXPath($dom); $nodeList = $xpath->query("//xs:element"); //on supprime tous les élements du fichier foreach ($nodeList as $_node) { $dom->documentElement->removeChild($_node); } //On sauvegarde le fichier sans élément file_put_contents($nameFile, $dom->saveXML()); //on récupère tous les class existant dans les dossier voc, base, datatype $file = glob($glob, GLOB_BRACE); /** * Pour chacun des fichier on créé un élément avec sont type correspondant */ foreach ($file as $_file) { //on créé l'élément $element = $dom->addElement($dom->documentElement, "xs:element"); //on formatte le nom du fichier $_file = CMbArray::get(explode(".", $_file), 0); $_file = substr($_file, strrpos($_file, "/") + 1); //on créé une instance de la classe /** @var CCDAClasseBase $instanceClass */ $instanceClass = new $_file(); //on récupère le nom quisera égale au type et au nom de l'élément $_file = $instanceClass->getNameClass(); //On ajoute les attribut type et nom $dom->addAttribute($element, "name", $_file); $dom->addAttribute($element, "type", $_file); //On ajoute un saut de ligne dans le schéma $dom->documentElement->appendChild($dom->createTextNode("\n")); } //on sauvegarde le fichier file_put_contents($nameFile, $dom->saveXML()); return true; }
* @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ CCanDo::checkRead(); $modele_id = CValue::get("modele_id"); $modele = new CCompteRendu(); $modele->load($modele_id); $modele->loadContent(true); $doc = new CMbXMLDocument(null); $root = $doc->createElement("CCompteRendu"); $doc->appendChild($root); foreach (CCompteRendu::$fields_import_export as $_field) { ${$_field} = $doc->createElement($_field); $textnode = $doc->createTextNode(utf8_encode($modele->{$_field})); ${$_field}->appendChild($textnode); $root->appendChild(${$_field}); } // Attribut modele_id $key = $doc->createAttribute("modele_id"); $value = $doc->createTextNode($modele->_id); $key->appendChild($value); $root->appendChild($key); // Catégorie $cat = $modele->loadRefCategory(); $key = $doc->createAttribute("cat"); $value = $doc->createTextNode(utf8_encode($cat->nom)); $key->appendChild($value); $root->appendChild($key); $content = $doc->saveXML();