}
    }
}
// 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) {