Я пытаюсь разработать таблицу стилей XSLT, которая преобразует данный документ DocBook в файл, который можно подать в систему форматирования документов lout (которая затем генерирует вывод PostScript).
Для этого необходимо заменить несколько символов в тексте элементов DocBook, потому что они имеют особое значение для lout.В частности, символы
/ | & { } # @ ~ \ "
должны быть заключены в двойные кавычки ("), чтобы lout рассматривал их как обычные символы.
Например, элемент DocBook, такой как
<para>This is a sample {a contrived one at that} ~ it serves no special purpose.</para>
должен быть преобразован в
@PP
This is a sample "{"a contrived one at that"}" "~" it serves no special purpose.
Как я могу сделать это с XSLT? Я использую xsltproc , поэтому использование функций XPath 2.0 - это не вариант, а числоиз EXSLT доступны функции.
Я попытался использовать рекурсивный шаблон, который возвращает подстроку до специального символа (например, {
), затем последовательность экранированных символов ("{"
)и затем вызывает себя в подстроке после специального символа. Однако мне трудно заставить эту работу правильно при попытке заменить несколько символов, и один из них используется в самой экранированной последовательности.