xstyle - xslt с человеческим лицом

tenshi

Новичок
xstyle - xslt с человеческим лицом

наваял тут прототип шаблонизатора. фактически является тем же xslt, но с более дружелюбным синтаксисом. обратно совместим с ним. можно свободно использовать и xslt и xstyle конструкции вперемешку. парные тэги имею минус в конце имени у открывающи, и точку - у закрывающих. специальный php класс отслеживает изменения исходников (.xs), перекомпилирует их (используя xslt преобразование) и кладёт рядом (.xsl).

примеры на обоих языках:

<xsl:value-of select=" $var " />
<?val $var ?>

<xsl:text> </xsl:text>
<?space?>

<xsl:include href="included-file.xs" />
<?include included-file.xs ?>
- во втором случае содержимое подключаемого файла будет вкомпилировано в текущий

<xsl:if test=" @count &gt; 5 "> ого, сколько! </xsl:if>
<?if- @count > 5 ?> ого, сколько! <?if.?>
<?if @count > 5 \ 'ого, сколько!' ?>
- заметьте, угловую скобку экранировать не надо. бэкслэш тут и далее разделяет параметры.

<xsl:template match="p">
<?match- p ?>

<xsl:template match="p" mode="copy">
<?match- p \ copy ?>

<xsl:template mode="copy">
<?match- \ copy ?>

<xsl:template>
<?match- ?>

<xsl:call-template name="alert">
<?call- alert ?>

<xsl:call-template name="alert">
<xsl:with-param name="test" select=" @title " />
</xsl:call-template>
<?call- alert ?>
<?arg test \ @title ?>
<?call.?>

и прочее в том же духе

-~{}~ 24.08.10 04:08:

http://mojura.110mb.com/test/xslt-vs-smarty/xslt-vs-smarty.zip - исходники и тесты на поиграться
 

newARTix

Новичок
теперь чтобы написать шаблон надо знать не только PHP и XSLT, но и XStyle :)
Если честно, с первого и второго взгляда вообще нифига не понял что делает этот код.

Вообще понятно, что XStyle видимо предназначен для повышения удобства XSLT как шаблонизатора... Но непонятно зачем тогда вообще использовать XSLT, если даже ты признаешь что он неудобен :) (не хочу холивара, оно само...)

PS Во, с третьего раза код понял :)
 

newARTix

Новичок
tenshi
да я немного его знаю, просто не понял сразу что идут примеры по одной строке, и комментарии к ним. Я думал это всё один листинг.
 

FB3

Новичок
А плагины ко всем известным редакторам?
А людей, умеющих читать и писать код твоего шаблонизатора?
А автоматическую проверку синтаксиса?
 

tenshi

Новичок
все новые шаблонизаторы - говно, потому что они новые? х)
 

С.

Продвинутый новичок
Отнюдь, Если все логично продуманно, то имеет право на существование. Но извини, минусы на конце, точки при закрытии -- это однозначно говно. Я понимаю, что так легче парсить, но шаблон на то и шаблон, что он в первую очередь не для парсера, а для человека делается. Синтаксис должен воспринамться интуитивно, без каких-либо неочевидных условностей.
 

FB3

Новичок
tenshi
ИМХО, здесь велосипед не нужно изобретать просто. Всем хватает того, что существует уже сейчас. Выбор как минимум из трех: нативный PHP, Smarty, XSLT. Да и вообще, на мой взгляд, проблема шаблонизации в наше время не стоит так остро, как проблема быдло-кодеров к примеру :) Разве что холивары постоянно возникают...
 

fixxxer

К.О.
Партнер клуба
xslscript-у уже 10 лет. Даже по урлу, который я даю, можно понять популярность таких решений :)

там между прочим намного удобнее и продуманнее чем у тебя.
 

tenshi

Новичок
С., а слэши в закрывающих тэгах не смущают? а кавычки вокруг аттрибутов? ;-) синтаксис не бывает интуитивным. есть только тот, к которому ты привык. лично я никогда не оцениваю новые инструменты с точки зрения привычности, потому что знаю, что привыкнуть - не проблема. оценивать надо гибкость, эффективность, наглядность..

-~{}~ 29.08.10 00:55:

FB3, мне как-то пофиг на быдлокодеров - я точу свой топор. а вы свои не хотите заточить? ;-)

-~{}~ 29.08.10 01:09:

fixxxer, не-не-не, это полная лажа. как и все такие вот велосипеды.

1. 2 языка разметки в одном флаконе - это в 2 раза больше геморроя. то одно нужно проэкранировать одним способом, то другое другим, то сразу обоими. у меня же используется тот же язык разметки - xml. просто на его основе строится dsl

2. плохая структурированность. мне очень нравится пхпшные конструкции в духе if:else:endif; - они хотябы не вырождаются в лесенку из десятка закрывающих скобок при глубоких вложенностях.
 

fixxxer

К.О.
Партнер клуба
мне кажется, что у тебя получилось нечитабельно совсем. хотя это субъективно все, конечно.

ну и бэкслэш это вообще хрень какая-то, вспомни критику разделителя неймспейсов :)
 

tenshi

Новичок
в чём нечитабельность-то?

-~{}~ 29.08.10 02:22:

а что предложишь вместо него? на мой взгляд он очень хорошо вписывается как редкоиспользуемый в xpath символ-разделитель
 

fixxxer

К.О.
Партнер клуба
ну у меня какой то когнитивный диссонанс вызывают эти минусы с бэкслешами

-~{}~ 29.08.10 02:39:

да в том то и дело что предложить особо нечего, не уходя далеко от xslt/xpath-синтаксиса и не вводя дополнительные хитрожопые правила экранирования. собсно та же проблема что с неймспейсами в php :)

-~{}~ 29.08.10 02:42:

кстати еще одну проблему вижу - syntax highlight. даже если мне не впадлу написать кучу regexp-ов для настройки хайлайта в любимом редакторе, какие то они нифига не тривиальные получаются.
 

shureen

Милорд Лось Кристофер
Не знаю как кому, но по мне так хрень какая то, автор без обид :) Меня как Smarty устраивает так и XSLT, но объедение не вставляет ну никак просто :)
 

tenshi

Новичок
fixxxer, ну да, но из других символов там разве что подчёркивание ещё можно заюзать..

всмысле подсветки xpath запросов? а то processing-instructions и так должны подсвечиваться.

-~{}~ 29.08.10 02:51:

shureen, а что плохого в том, чтобы сделать xslt чуточку дружелюбнее? меня вот совсем не вставляет необходимость экранировать знак "больше" в xpath-ах
 
Сверху