} } } // XML and DB STUFF -----------------------------------------------------------> $is_allowed_to_edit = isset($_user['user_id']) && $is_courseMember && api_is_allowed_to_edit(); $mdStore = new mdstore($is_allowed_to_edit); if (($mdt_rec = $mdStore->mds_get(EID)) === FALSE) { // no record, default XML $mdt = $mdObj->mdo_generate_default_xml_metadata(); } else { $mdt = $mdt_rec; } $xhtxmldoc = new xmddoc(explode("\n", $mdt)); !$xhtxmldoc->error or give_up($xhtxmldoc->error); if (SID == $id_range_first && ($prv = $xhtxmldoc->xmd_select_single_element('previous')) != -1) { $xhtxmldoc->xmd_remove_element($prv); } if (SID == $id_range_last && ($nxt = $xhtxmldoc->xmd_select_single_element('next')) != -1) { $xhtxmldoc->xmd_remove_element($nxt); } $before_first = $id_range_first ? TRUE : FALSE; $after_last = FALSE; foreach ($xhtxmldoc->xmd_select_elements('child') as $chEl) { $chId = $xhtxmldoc->attributes[$chEl]['identifier']; // no get_att yet... if ($after_last || ($before_first = $before_first && $chId != $id_range_first)) { $xhtxmldoc->xmd_remove_element($chEl); continue; } if (($mdt_rec = $mdStore->mds_get(BID . '.' . $chId)) === FALSE) { $mdt = $mdObj->mdo_generate_default_xml_metadata();
$testdoc->xmd_add_text(' + more text in first one', $sometag1); $testdoc->xmd_set_attribute($sometag2, 'owner', '<c&a">'); $testdoc->xmd_add_element('innertag', $sometag2); showDoc('Slightly changed'); showDoc('All text', $testdoc->xmd_text()); $stuff = ''; foreach ($testdoc->xmd_get_element($sometag2) as $key => $value) { $stuff .= $key . ': ' . $value . "\n"; } showDoc('Children, attributes, name and parent of 2nd sometag', $stuff); $testdoc->xmd_remove_nodes('text in my first child element', $sometag1); // note: remove text may remove more than one node... $testdoc->xmd_set_attribute(0, 'owner', 'haentjens'); // new value showDoc('Text removed from 1st sometag, docroot owner changed'); $testdoc->xmd_remove_element($sometag2); $sometag2 = $testdoc->xmd_add_text_element('��', 'alors!'); showDoc('2nd sometag replaced by new subelement with French name'); $testdoc->name[$sometag2] = 'sometag'; // properties are read/write $testdoc->xmd_set_attribute($sometag2, 'xmlns:tn', 'urn:ugent-be'); // namesp def $subtag = $testdoc->xmd_add_element('urn:ugent-be:subtag', $sometag2); $testdoc->xmd_set_attribute($sometag2, 'urn:ugent-be:owner', 'FTW'); showDoc('French name replaced, namespace definition added and used'); $testdoc->xmd_set_attribute($sometag1, 'urn:ugent-be:owner', 'FTW'); $testdoc->xmd_set_attribute($sometag1, 'urn:rug-ac-be:owner2', 'FLA'); // restriction: cannot add attribute 'urn:rug-ac-be:owner' (same name) showDoc('Attributes with namespaces added, ns def is auto-generated'); $stuff = 'subtag => ' . $testdoc->xmd_get_ns_uri($subtag) . "\n"; foreach ($testdoc->attributes[$sometag1] as $name => $value) {