Если ваши данные действительно упорядочены по возрастанию, когда вы их показываете, тогда проще использовать поле идентификатора суррогатного ключа.
SELECT packages_sent
FROM packages
WHERE ID =
(SELECT max(ID)
FROM packages
WHERE date <= '2017-05-29');
Поскольку идентификатор всегда увеличивается с датой и отправленным заказом, обнаружение его максимума также находит максимум двух других за один шаг.
Основная причина заключается в том, что стандартный DOM уровня 3 не может представлять текстовые узлы как дочерние по отношению к документу без нарушения спецификации. Пробелы будут удалены любым совместимым анализатором.
Document --
Element (maximum of one),
ProcessingInstruction,
Comment,
DocumentType (maximum of one)
Если вам требуется совместимое со стандартами решение и цель - удобочитаемость, а не 100% воспроизведение, я бы поищу его в вашем механизме вывода.
У меня была та же проблема. Мое решение заключалось в том, чтобы написать собственный XML-анализатор: DecentXML
Основная особенность: он может на 100% сохранять исходный ввод, пробелы, сущности, все. Детали вас не побеспокоят,
В общем случае пробелы считаются несущественными в XML и, следовательно, не сохраняются при анализе XML-файла. Большинство библиотек, выводящих XML, имеют возможность вывода его с красивым форматированием и правильными отступами, но он всегда будет достаточно универсальным. Нет "иметь право на дополнительную строку здесь ".
Почему вы хотите избежать этого?
Пробел вне тегов / элементов определяется спецификацией как несущественный. Его просто не существует, что касается информационного набора, который представлен вашей DOM.
Следовательно, после сериализации DOM снова, его там не будет.
Если вы находитесь в процессе разработки чего-то, что полагается на эту пустую строку ... Не надо.
Я согласен с Крисом и Томалаком, пустая строка не имеет значения с точки зрения XML. Если ваше приложение должно выдавать пустую строку в выводе, я бы посоветовал проверить необходимость этого требования.
В любом случае, если вы все еще хотите, чтобы эта пустая строка отображалась, я бы предложил загрузить исходный код XML парсер, который вы используете, и измените это поведение. Но имейте в виду, что это не стандартный XML и он не будет совместим с другими приложениями.