Шаблонное регулярное выражение в сравнении с узлами DOM;Изменить атрибуты? - PullRequest
0 голосов
/ 27 декабря 2010

Недавно я задал несколько вопросов по этой теме, и, независимо от того, ответил я или нет, я достаточно много узнал об этой технологии. В любом случае;

Я переделывал созданный мной ранее шаблонизатор, переводя механизм синтаксического анализа из регулярного выражения в узел (XML). Для сравнения вот два:

Управляемое регулярным выражением:

<body>
    <!-- {{ region:myRegion }} -->
        <div class="myClass">
            <h1>{{ var:myHeading format:trim[200] }}</h1>
        </div>
    <!-- {{ region:myRegion }} -->
</body>

Привод узла:

<body>
    <zuq:region name="myRegion">
        <div class="myClass">
            <h1>
                <zuq:data name="myHeading">
                    <zuq:format type="trim">
                        <zuq:param name="length" value="200" />
                    </zuq:format>
                </zuq:data>
            </h1>
        </div>
    </zuq:region>
</body>

Теперь, хотя гораздо более многословно, я полагаю, что здесь предпочтителен подход на основе узлов, предоставляющий гораздо большую гибкость для ситуаций, таких как форматирование, когда несколько узлов формата могут вставляться и обрабатываться в порядке появления.

В любом случае, моя проблема заключается в атрибутах . При использовании подхода, основанного на регулярных выражениях, если я хочу, чтобы в атрибуте было значение, сгенерированное шаблоном, это так просто:

<a href="page.php?param={{ var:myParam }}">Link</a>

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

Есть идеи?

1 Ответ

1 голос
/ 27 декабря 2010
<a>
  <zug:attr name="href">page.php?param=<zug:data name="myParam" /></zug:attr>
  Link
</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...