Даже если ваш XSLT содержит инструкцию для сохранения пробела, она может не сохраниться, когда ваш входной XML-документ был проанализирован перед передачей в ваш XSLT.
Вы не указали, какой язык / платформу или что вы используете, поэтому сложно предложить конкретное решение, но я знаю в C #, если вы читаете XML-документ, подобный этому:
string xmlSource = @"<Document>etc..</Document>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlSource);
Он уже будет обрабатывать любые элементы, содержащие только пробел, как пустые элементы, а у doc
это пространство уже будет удалено до того, как вы попробуете применить таблицу стилей.
В C # вам нужно сделать это:
XmlDocument doc = new XmlDocument { PreserveWhitespace = true };
когда вы создаете его экземпляр, даже не загружая его. Если вы используете другую платформу, вам необходимо выяснить, как ваша платформа делает это.
Более общее решение (хотя и немного громоздкое) состоит в том, чтобы изменить ваш входной XML следующим образом:
...
<AuthorNotes xml:space="preserve"> </AuthorNotes>
...
Я думаю, вы можете применить это к корневому элементу, но я не уверен на 100% в этом.