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

  • Автор темы Автор темы tenshi
  • Дата начала Дата начала

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 - исходники и тесты на поиграться
 
теперь чтобы написать шаблон надо знать не только PHP и XSLT, но и XStyle :)
Если честно, с первого и второго взгляда вообще нифига не понял что делает этот код.

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

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

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

-~{}~ 29.08.10 00:55:

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

-~{}~ 29.08.10 01:09:

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

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

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

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

-~{}~ 29.08.10 02:22:

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

-~{}~ 29.08.10 02:39:

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

-~{}~ 29.08.10 02:42:

кстати еще одну проблему вижу - syntax highlight. даже если мне не впадлу написать кучу regexp-ов для настройки хайлайта в любимом редакторе, какие то они нифига не тривиальные получаются.
 
Не знаю как кому, но по мне так хрень какая то, автор без обид :) Меня как Smarty устраивает так и XSLT, но объедение не вставляет ну никак просто :)
 
fixxxer, ну да, но из других символов там разве что подчёркивание ещё можно заюзать..

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

-~{}~ 29.08.10 02:51:

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