Почему не работает пользовательская функция?
потому что переменные вне функции не видны внутри функции.
https://www.php.net/manual/ru/language.variables.s...
Добавьте в функцию
function write ($teg, $book, $value) {
    $global $colorist, $xml;
     ... 
}
И включите отображение ошибок на экран