模板正则表达式与DOM节点;修改属性?

时间:2010-12-27 11:45:59

标签: regex xml dom

关于这个话题我最近问了几个问题,无论是否回答,我一直在学习相关的技术。无论如何;

我一直在改造我之前创建的模板引擎,将解析引擎从正则表达式驱动转移到节点(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 个答案:

答案 0 :(得分:1)

<a>
  <zug:attr name="href">page.php?param=<zug:data name="myParam" /></zug:attr>
  Link
</a>