LINUX.ORG.RU

Генератор кода из XSLT файла


0

0

Можно ли добиться от xslt преобразователя
правильной расстановки отступов и новых строк кроме как таким вот несуразным нагромождением

<xsl:template match="sequence">
typedef struct <xsl:value-of select="translate(@name,'-','_')"/>_s {
<xsl:apply-templates select="field" mode="member"/>
} <xsl:value-of select="translate(@name,'-','_')"/>_t;
extern type_descr_t <xsl:value-of select="translate(@name,'-','_')"/>_descr;
</xsl:template>

Или проще говоря можно ли сделать так как в HTML вставил <br/> перевел строку, только для текстовых файлов,чтобы он сам самодеятельностью не занимался. Приведенный выше код XSLT не читаем, так как в нем нет отступов, а если их поставить то код не читаем на C. Вот такая задача, кто может поделиться идеей?

anonymous

для расстановки отступов и приведения нагенерённого кода в читаемый вид существует indent и ещё хренова туча всяких утилит..оставьте генератору - генераторово, пусть лучше правильный код делает

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Не подходит так как в коде есть макросы типа

START_SEQUENCE(A)
  MEMBER(a);
  MEMBER(b);
START_SEQUENCE(A)

Если скормить это indent, то оно подавитсо! 
Я сначала тоже так подумал.
Плюс генератор должен быть кросс платформенный.
Сама утилька для подготовки XML файла, 
из которого потом генераться код C,
С++ или Java, написана на Java. 
Так вот если бы для Java существовала
библиотека для расстановки отступов в 
наиболее распространенных языках такой 
метод еще возможно было бы принять 
(ибо дергать нативную утилиту из java 
нет смысла - придется их плодить под каждую систему).
С другой стороны есть языки в которых отступ много чего значит, не забываем про Python. Вот примерно так.

anonymous
()

извлеки с помощью xslt информацию в предельно простой форме, а сам сишный код генерируй из этой простейшей формы с помощью sh+awk.

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

> Это к делу не относиться

пиши уж сразу -- относица

dilmah ★★★★★
()

	<template name="newline">
<text>
</text>
	</template>


далее в коде:
....<call-template name="newline"/>....

YesSSS ★★★
()

используй <xsl:text>, а дальше все зависит от конкретной реализации XSLT

dave ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.