Не скажу что хорошо понимаю в PHP, но судя по логике у Вас странное условие ($parent == $node->nextSibling->parentNode), по-моему явно не хватает else
if ($parent == $node->nextSibling->parentNode) {
$page .= $content;
} else {
$id =$parent->getAttribute('id'); //значение id
$num = substr($id, 5); //обрезаем "issue"
$fp = fopen($catalog . '/' . $num . '.html', "w"); //создание файла
fwrite($fp, $page); //запись
fclose($fp); //закрытие
$page = "";
}
Еще наверное имеет смысл проверять есть ли $node->nextSibling перед тем как забирать его parentNode. Не знаю насколько это критично в PHP.