Я использую Altova XMLSpy и Saxon. Saxon добавляет много вкладок и новых строк в файл результатов. Поэтому я добавил шаблоны (найденные здесь на StackOverflow):Зачистка дополнительных строк в саксоне
<xsl:template match="*/text()[normalize-space()]">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
<xsl:template match="*/text()[not(normalize-space())]" />
в таблицу стилей, которая аккуратно удалить все лишние пробелы. Тем не менее, он также удаляется пространство до и после < я > .... </я > и < д > .... </д > внутри < р >:
<p>this is <i>italic</i> text</p>
Так как Altova и Саксон дал мне:
<p>this is<i>italic</i>text</p>
Как я могу решить эту проблему?
Я не знаю, как добавить саксонские вкладки и новые строки. Пожалуйста, размещайте минимальные, но полные образцы XML, XSLT и желаемого и выпускаемого вывода, чтобы мы могли понять, откуда взялось белое пространство. Нам нужно знать метод вывода и настройку атрибута 'indent' на' xsl: output'. –
Спасибо за ваш комментарий. Отступ был установлен в YES, и когда я установил его в НЕТ, Altova и Saxon НЕ добавляют вкладки и NL. Они также не удаляют указанное пространство до и после тегов i/q. Однако выход также не имеет отступов, и поэтому он вряд ли читаем. Мне кажется, Саксон меняет комбинации 0D/0A на 0A с большим количеством пробелов. – Erik
И синтаксический анализ XML, и сериализация XSLT следуют правилам в соответствующих спецификациях, например http://www.w3.org/TR/xml/#sec-line-ends, которые утверждают, что окончание строк нормализуется парсером XML. Как я уже сказал, размещайте минимальные, но полные образцы, позволяющие нам понять и воспроизвести проблему, тогда мы сможем надеяться, как это исправить. Если вход с отступом и вы копируете материал, то я уверен, что с Saxon вывод также будет отступом, если, конечно, вы не удалите текстовые узлы с чисто белым пространством с помощью шаблонов, таких как ' '. –