-replace修正

replaceの件、duranさんの指摘で、IterationTag利用パターンでうまくなかったので、かなり副作用あるんじゃないかなと心配ながらTemplateImplをいじって対応しました。

org.seasar.maya.impl.engine.TemplateImpl#render()の該当部分

if(current.isIteration()) {
  afterRet = current.doAfterChildProcess(templateContext);
  TemplateProcessor parent = current.getParentProcessor();
  if(parent instanceof ElementProcessor) {
   ElementProcessor element = element = (ElementProcessor)parent;
   if(element.isOriginal()) {
     if(afterRet == IterationTag.EVAL_BODY_AGAIN) {
       element.doEndProcess(templateContext);
       element.doStartProcess(templateContext);
     }
    }
  }
}

doAfterChildProcessをやって後に、doEndProcess/doStartProcessという呼び順で、この上なく危険な香りがしますが、この要件はきっちり満たします。様子みないといけないです。
あと、replace="false"で出力されたタグはid属性を書き出さないようにしました。ループで用いられたりしたときに複数同じidが出力される可能性があるためです。これも設定項目にするかも。