Well, here's a pretty ugly patch for the for-each problem.

 .robin.

--- proc.cpp.orig       Wed Jun 28 15:10:19 2000
+++ proc.cpp    Wed Jun 28 15:30:14 2000
@@ -299,6 +299,10 @@
     {
         E( IPlist.execute(c) );
         c -> shift();
+
+        // Now remove any bindings, before we try & re-apply them
+        if (isXSLElement(IPlist[0]->parent) && toX(IPlist[0]->parent)->op == 
+XSL_FOR_EACH)
+            toX(IPlist[0]->parent)->removeBindings();
     };
     delete c;
     return OK;

--- verts.cpp.orig      Wed Jun 28 15:47:11 2000
+++ verts.cpp   Wed Jun 28 15:45:02 2000
@@ -1352,7 +1352,8 @@
     };
 
     //remove the variable bindings that occured inside this element
-    if ((op != XSL_TEMPLATE) && (op != XSL_TRANSFORM) && (op != XSL_STYLESHEET))
+    if ((op != XSL_TEMPLATE) && (op != XSL_TRANSFORM)
+    &&  (op != XSL_STYLESHEET) && (op != XSL_FOR_EACH))
         removeBindings();
     situation.popCurrent();
     return OK;

Reply via email to