2014-04-01 5 views
0

Я использую 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> 

Как я могу решить эту проблему?

+1

Я не знаю, как добавить саксонские вкладки и новые строки. Пожалуйста, размещайте минимальные, но полные образцы XML, XSLT и желаемого и выпускаемого вывода, чтобы мы могли понять, откуда взялось белое пространство. Нам нужно знать метод вывода и настройку атрибута 'indent' на' xsl: output'. –

+0

Спасибо за ваш комментарий. Отступ был установлен в YES, и когда я установил его в НЕТ, Altova и Saxon НЕ добавляют вкладки и NL. Они также не удаляют указанное пространство до и после тегов i/q. Однако выход также не имеет отступов, и поэтому он вряд ли читаем. Мне кажется, Саксон меняет комбинации 0D/0A на 0A с большим количеством пробелов. – Erik

+1

И синтаксический анализ XML, и сериализация XSLT следуют правилам в соответствующих спецификациях, например http://www.w3.org/TR/xml/#sec-line-ends, которые утверждают, что окончание строк нормализуется парсером XML. Как я уже сказал, размещайте минимальные, но полные образцы, позволяющие нам понять и воспроизвести проблему, тогда мы сможем надеяться, как это исправить. Если вход с отступом и вы копируете материал, то я уверен, что с Saxon вывод также будет отступом, если, конечно, вы не удалите текстовые узлы с чисто белым пространством с помощью шаблонов, таких как ''. –

ответ

0

Используйте выходной элемент xsl: для управления отступом выходного сигнала. Используйте xsl: strip-space и xsl: preserve-space для управления обработкой пробелов вашего ввода.

Используйте шаблоны, подобные тем, которые вы показываете только в крайнем случае. Здесь первый шаблон - это тот, который вызывает потерю белого пространства, смежного с вашими элементами i, потому что процессоры делают то, что вы им сказали, вместо того, что вы хотели сказать им.

Смежные вопросы