You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mu...@apache.org on 2025/09/16 13:32:26 UTC

(xalan-java) branch xalan-j_xslt3.0_mvn updated: committing few improvements to xalan-j's xsl3 implementation of xsl:iterate instruction

This is an automated email from the ASF dual-hosted git repository.

mukulg pushed a commit to branch xalan-j_xslt3.0_mvn
in repository https://gitbox.apache.org/repos/asf/xalan-java.git


The following commit(s) were added to refs/heads/xalan-j_xslt3.0_mvn by this push:
     new 5f15c4307 committing few improvements to xalan-j's xsl3 implementation of xsl:iterate instruction
5f15c4307 is described below

commit 5f15c43070d837589157c854ec87ab47bc4de0f5
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Tue Sep 16 19:02:02 2025 +0530

    committing few improvements to xalan-j's xsl3 implementation of xsl:iterate instruction
---
 .../org/apache/xalan/templates/ElemIterate.java    | 303 +++++++++++++--------
 .../apache/xalan/templates/ElemIterateBreak.java   |   2 +-
 .../xalan/templates/ElemIterateNextIteration.java  |   9 +-
 .../xalan/templates/ElemIterateOnCompletion.java   |  58 ++--
 .../xalan/templates/ElemTemplateElement.java       |   9 +-
 .../java/org/apache/xpath/operations/Variable.java |  32 ++-
 .../w3c/xslt3/result/attr/_as-test-set_result.xml  |   2 +-
 .../w3c/xslt3/result/attr/_avt-test-set_result.xml |   2 +-
 .../result/attr/_expand-text-test-set_result.xml   |   6 +-
 .../xslt3/result/attr/_match-test-set_result.xml   |   2 +-
 .../xslt3/result/attr/_select-test-set_result.xml  |   2 +-
 .../_xpath-default-namespace-test-set_result.xml   |   2 +-
 .../result/decl/_attribute-set-test-set_result.xml |   2 +-
 .../result/decl/_character-map-test-set_result.xml |   2 +-
 .../result/decl/_function-test-set_result.xml      |  12 +-
 .../result/decl/_variable-test-set_result.xml      |   2 +-
 .../xslt3/result/expr/_axes-test-set_result.xml    |   2 +-
 .../result/expr/_castable-test-set_result.xml      |   2 +-
 .../result/expr/_expression-test-set_result.xml    |   2 +-
 .../w3c/xslt3/result/expr/_for-test-set_result.xml |   2 +-
 .../_higher-order-functions-test-set_result.xml    |   2 +-
 .../xslt3/result/expr/_math-test-set_result.xml    |   2 +-
 .../result/expr/_nodetest-test-set_result.xml      |   2 +-
 .../xslt3/result/expr/_path-test-set_result.xml    |   2 +-
 .../result/expr/_predicate-test-set_result.xml     |   2 +-
 .../result/fn/_deep-equal-test-set_result.xml      |   2 +-
 .../result/fn/_format-number-test-set_result.xml   |   2 +-
 .../result/fn/_json-to-xml-test-set_result.xml     |   2 +-
 .../w3c/xslt3/result/fn/_key-test-set_result.xml   |   2 +-
 .../xslt3/result/fn/_position-test-set_result.xml  |   2 +-
 .../w3c/xslt3/result/fn/_root-test-set_result.xml  |   2 +-
 .../insn/_analyze-string-test-set_result.xml       |   2 +-
 .../insn/_apply-templates-test-set_result.xml      |   2 +-
 .../result/insn/_attribute-test-set_result.xml     |   2 +-
 .../result/insn/_call-template-test-set_result.xml |   2 +-
 .../xslt3/result/insn/_choose-test-set_result.xml  |   2 +-
 .../xslt3/result/insn/_copy-test-set_result.xml    |   6 +-
 .../xslt3/result/insn/_element-test-set_result.xml |   2 +-
 .../insn/_for-each-group-test-set_result.xml       |   2 +-
 .../xslt3/result/insn/_iterate-test-set_result.xml | 104 ++-----
 .../result/insn/_sequence-test-set_result.xml      |  10 +-
 .../xslt3/result/insn/_sort-test-set_result.xml    |   2 +-
 .../w3c/xslt3/result/insn/_try-test-set_result.xml |  32 +--
 .../result/insn/_xsl-document-test-set_result.xml  |   4 +-
 .../xslt3/result/misc/_regex-test-set_result.xml   |   2 +-
 .../xslt3/result/type/_boolean-test-set_result.xml |   2 +-
 .../xslt3/result/type/_date-test-set_result.xml    |   2 +-
 .../xslt3/result/type/_node-test-set_result.xml    |   2 +-
 .../xslt3/result/type/_string-test-set_result.xml  |   2 +-
 .../result/w3c_xslt3_testsuite_xalan-j_result.xml  |   6 +-
 50 files changed, 334 insertions(+), 331 deletions(-)

diff --git a/src/main/java/org/apache/xalan/templates/ElemIterate.java b/src/main/java/org/apache/xalan/templates/ElemIterate.java
index 4f0528bd1..e38bcaf01 100644
--- a/src/main/java/org/apache/xalan/templates/ElemIterate.java
+++ b/src/main/java/org/apache/xalan/templates/ElemIterate.java
@@ -331,55 +331,94 @@ public class ElemIterate extends ElemTemplateElement implements ExpressionOwner
                ElemIterateOnCompletion xslOnCompletionTemplate = null;
                    
                boolean isBreakFromXslContentLoop = false;
-                   
-               for (int idx = 0; idx < itemsToBeProcessed.size(); idx++) {
-                  XObject resultSeqItem = itemsToBeProcessed.get(idx);
-                       
-                  if (resultSeqItem instanceof XMLNodeCursorImpl) {
-                     resultSeqItem = ((XMLNodeCursorImpl)resultSeqItem).getFresh(); 
-                  }
-                       
-                  setXPathContextForXslSequenceProcessing(itemsToBeProcessed.size(), idx, resultSeqItem, xctxt);                                                                     
-                  for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
-                                                                                       elemTemplate = elemTemplate.m_nextSibling) {                	  
-                	  if ((elemTemplate instanceof ElemIterateOnCompletion) &&
-                			                                            (xslOnCompletionTemplate == null)) {
-                          xslOnCompletionTemplate = (ElemIterateOnCompletion)elemTemplate;     
-                      }
-                	  else if (!transformer.isXslIterateBreakEvaluated()) {
-                		  xctxt.setSAXLocator(elemTemplate);
-                          transformer.setCurrentElement(elemTemplate);
-                          elemTemplate.execute(transformer); 
-                	  }
-                	  else {                              
-                          resetXPathContextForXslSequenceProcessing(resultSeqItem, xctxt);                               
-                          isBreakFromXslContentLoop = true;                               
-                          break;    
-                      }
-                  }
-                       
-                  if (!isBreakFromXslContentLoop) {                         
-                     resetXPathContextForXslSequenceProcessing(resultSeqItem, xctxt);  
-                  }
-                  else {                          
-                     break;
-                  }
+               
+               final int prevContextSize = xctxt.getXPath3ContextSize();
+               final XObject prevCtxtItem = xctxt.getXPath3ContextItem();
+               final int prevCtxtPosition = xctxt.getXPath3ContextPosition();
+               
+               try {
+            	   int inpSeqLength = itemsToBeProcessed.size();
+            	   if (inpSeqLength == 0) {
+            		   /**
+            		    * We do little static type checking (like, variable references which
+            		    * are not in scope) on xsl:on-completion instruction, even if there
+            		    * are no input items to be processed.
+            		    */
+            		   for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
+            				   elemTemplate = elemTemplate.m_nextSibling) {
+            			   if (elemTemplate instanceof ElemIterateOnCompletion) {            			                                                       
+            				   xctxt.setXPath3ContextSize(-1);
+            				   xctxt.setXPath3ContextItem(null);
+            				   xctxt.setXPath3ContextPosition(-1);
+
+            				   xslOnCompletionTemplate = (ElemIterateOnCompletion)elemTemplate; 
+            				   transformer.setXslIterateOnCompletionActive(true);
+            				   xctxt.setSAXLocator(xslOnCompletionTemplate);
+            				   transformer.setCurrentElement(xslOnCompletionTemplate);
+
+            				   // This evaluates xsl:on-completion instruction, but doesn't emit 
+            				   // the result to an XSL transformation output.
+            				   int nodeHandle = transformer.transformToRTF(this);                          
+
+            				   transformer.setXslIterateOnCompletionActive(false);
+
+            				   return;
+            			   }
+            		   }            	               	   
+            	   }
+
+            	   for (int idx = 0; idx < inpSeqLength; idx++) {
+            		   XObject resultSeqItem = itemsToBeProcessed.get(idx);
+
+            		   if (resultSeqItem instanceof XMLNodeCursorImpl) {
+            			   resultSeqItem = ((XMLNodeCursorImpl)resultSeqItem).getFresh(); 
+            		   }
+
+            		   setXPathContextForXslSequenceProcessing(inpSeqLength, idx, resultSeqItem, xctxt);                                                                     
+            		   for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
+            				                                                      elemTemplate = elemTemplate.m_nextSibling) {                	  
+            			   if ((elemTemplate instanceof ElemIterateOnCompletion) && (xslOnCompletionTemplate == null)) {
+            				   xslOnCompletionTemplate = (ElemIterateOnCompletion)elemTemplate;     
+            			   }
+            			   else if (!transformer.isXslIterateBreakEvaluated()) {
+            				   xctxt.setSAXLocator(elemTemplate);
+            				   transformer.setCurrentElement(elemTemplate);
+            				   elemTemplate.execute(transformer); 
+            			   }
+            			   else {                              
+            				   resetXPathContextForXslSequenceProcessing(resultSeqItem, xctxt);                               
+            				   isBreakFromXslContentLoop = true;                               
+            				   break;    
+            			   }
+            		   }
+
+            		   if (!isBreakFromXslContentLoop) {                         
+            			   resetXPathContextForXslSequenceProcessing(resultSeqItem, xctxt);  
+            		   }
+            		   else {                          
+            			   break;
+            		   }
+            	   }                                    
+
+            	   if ((xslOnCompletionTemplate != null) && !transformer.isXslIterateBreakEvaluated()) {
+            		   xctxt.setXPath3ContextSize(-1);
+                	   xctxt.setXPath3ContextItem(null);
+                	   xctxt.setXPath3ContextPosition(-1);
+                	   
+            		   transformer.setXslIterateOnCompletionActive(true);
+            		   xctxt.setSAXLocator(xslOnCompletionTemplate);
+            		   transformer.setCurrentElement(xslOnCompletionTemplate);
+            		   xslOnCompletionTemplate.execute(transformer);
+            		   transformer.setXslIterateOnCompletionActive(false);
+            	   }
+
+            	   transformer.setXslIterateBreakEvaluated(false);
                }
-                   
-               // Reset the, XPath context's size, item and position variables
-               xctxt.setXPath3ContextSize(-1);
-               xctxt.setXPath3ContextItem(null);
-               xctxt.setXPath3ContextPosition(-1);                                      
-                   
-               if ((xslOnCompletionTemplate != null) && !transformer.isXslIterateBreakEvaluated()) {
-                  transformer.setXslIterateOnCompletionActive(true);
-                  xctxt.setSAXLocator(xslOnCompletionTemplate);
-                  transformer.setCurrentElement(xslOnCompletionTemplate);
-                  xslOnCompletionTemplate.execute(transformer);
-                  transformer.setXslIterateOnCompletionActive(false);
+               finally {
+            	   xctxt.setXPath3ContextSize(prevContextSize);
+            	   xctxt.setXPath3ContextItem(prevCtxtItem);
+            	   xctxt.setXPath3ContextPosition(prevCtxtPosition);
                }
-
-               transformer.setXslIterateBreakEvaluated(false);
            }
            else {
                // Evaluate xsl:iterate instruction, when value of its "select" attribute evaluates 
@@ -454,71 +493,115 @@ public class ElemIterate extends ElemTemplateElement implements ExpressionOwner
           }
       }
       
-      /**
-       * The XSLT 3.0 spec specifies constraints, about what should be the order of XSLT elements 
-       * xsl:param and xsl:on-completion within the xsl:iterate element. This method ensures that, 
-       * these XSLT element constraints are verified during an XSLT stylesheet transformation.  
-       */
+       /**
+        * Method definition to, check XSL 3 spec static constraints for various
+        * XSL elements within xsl:iterate instruction.
+        * 
+        * @param xctxt								    An XPath context object
+        * @throws TransformerException
+        */
       private void verifyXslElemIterateChildElementsSequence(XPathContext xctxt) 
                                                                        throws TransformerException {
           
-          List<String> xslElemNamesList = new ArrayList<String>();
-          
-          for (ElemTemplateElement elemTemplate = this.m_firstChild; 
-                                                             elemTemplate != null; 
-                                                             elemTemplate = elemTemplate.m_nextSibling) {
-              if (elemTemplate instanceof ElemParam) {                  
-                  xslElemNamesList.add(Constants.ELEMNAME_PARAMVARIABLE_STRING);
-              }
-              else if (elemTemplate instanceof ElemIterateOnCompletion) {
-                  xslElemNamesList.add(Constants.ELEMNAME_ITERATE_ONCOMPLETION_STRING);   
-              }              
-              else {
-                  xslElemNamesList.add(OTHER_ELEM);
-              }
-          }
-          
-          // Get index of XSLT stylesheet specific element(s)'s, first occurrence within the list object 
-          // 'xslElemNamesList'. If a particular kind of XSLT stylesheet element that is checked, is 
-          // not present within the list object 'xslElemNamesList', its index is returned as -1.
-          int paramIdx = xslElemNamesList.indexOf(Constants.ELEMNAME_PARAMVARIABLE_STRING);
-          int onCompletionIdx = xslElemNamesList.indexOf(Constants.ELEMNAME_ITERATE_ONCOMPLETION_STRING);          
-          int otherElemIdx = xslElemNamesList.indexOf(OTHER_ELEM);
-          
-          if ((paramIdx != -1) && (onCompletionIdx != -1) && (paramIdx > onCompletionIdx)) {
-              throw new TransformerException("XTSE0010 : an xsl:param element must occur before xsl:on-completion "
-                                                                                            + "element.", xctxt.getSAXLocator());    
-          }                    
-          else if ((paramIdx != -1) && (otherElemIdx != -1) && (paramIdx > otherElemIdx)) {
-              throw new TransformerException("XTSE0010 : an xsl:param element must occur before any other element within "
-                                                                                     + "xsl:iterate element.", xctxt.getSAXLocator());
-          }
-          else if ((paramIdx != -1) && (otherElemIdx != -1) && (onCompletionIdx != -1) && (paramIdx < otherElemIdx) && 
-                                                                                                 (otherElemIdx < onCompletionIdx)) {
-              throw new TransformerException("XTSE0010 : an xsl:on-completion element must be the first child element of xsl:iterate "
-                                                                                 + "after the xsl:param elements.", xctxt.getSAXLocator());
-          }          
-                             
-          if (paramIdx != -1) {
-              for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
-                                                                                 elemTemplate = elemTemplate.m_nextSibling) {
-                  if (elemTemplate instanceof ElemParam) {
-                     ElemParam paramElem = (ElemParam)elemTemplate;
-                     QName paramNameVal = paramElem.getName();
-                     XPath paramSelectXPath = paramElem.getSelect();
-                     XslIterateParamWithparamData paramWithparamDataObj = new XslIterateParamWithparamData();
-                     paramWithparamDataObj.setNameVal(paramNameVal);
-                     paramWithparamDataObj.setSelectVal(paramSelectXPath);
-                     if (fXslIterateParamWithparamDataList.contains(paramWithparamDataObj)) {
-                        throw new TransformerException("XTSE0580 : the name of the xsl:param parameter '" + paramNameVal + "' "
-                                                                                         + "is not unique.", xctxt.getSAXLocator());    
-                     }
-                     else {
-                        fXslIterateParamWithparamDataList.add(paramWithparamDataObj);    
-                     }
-                  }                                    
-              }
-          }          
-      }
+    	  List<String> xslElemNamesList = new ArrayList<String>();
+
+    	  SourceLocator srcLocator = xctxt.getSAXLocator();
+
+    	  for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; elemTemplate = elemTemplate.m_nextSibling) {
+    		  if (elemTemplate instanceof ElemParam) {                  
+    			  xslElemNamesList.add(Constants.ELEMNAME_PARAMVARIABLE_STRING);
+    		  }
+    		  else if (elemTemplate instanceof ElemIterateOnCompletion) {
+    			  xslElemNamesList.add(Constants.ELEMNAME_ITERATE_ONCOMPLETION_STRING);   
+    		  }
+    		  else if (elemTemplate instanceof ElemUnknown) {
+    			  throw new TransformerException("XTSE0010 : An XSL stylesheet element occurs at an incorrect "
+															    					  + "position within xsl:iterate instruction (for e.g, "
+															    					  + "xsl:variable followed by xsl:param).", srcLocator);
+    		  }
+    		  else {
+    			  xslElemNamesList.add(OTHER_ELEM);
+    		  }
+    	  }
+
+    	  verifyXslNextIterAndBreakConstraints(this);
+
+    	  /**
+    	   * Get index of XSLT stylesheet specific element(s)'s, first occurrence within the list object
+    	   * 'xslElemNamesList'. If a particular kind of XSLT stylesheet element that is checked, is
+    	   * not present within the list object 'xslElemNamesList', its index is returned as -1.
+    	   */
+    	  int paramIdx = xslElemNamesList.indexOf(Constants.ELEMNAME_PARAMVARIABLE_STRING);
+    	  int onCompletionIdx = xslElemNamesList.indexOf(Constants.ELEMNAME_ITERATE_ONCOMPLETION_STRING);          
+    	  int otherElemIdx = xslElemNamesList.indexOf(OTHER_ELEM);
+
+    	  if ((paramIdx != -1) && (onCompletionIdx != -1) && (paramIdx > onCompletionIdx)) {
+    		  throw new TransformerException("XTSE0010 : An xsl:param element must occur before xsl:on-completion element.", srcLocator);    
+    	  }                    
+    	  else if ((paramIdx != -1) && (otherElemIdx != -1) && (paramIdx > otherElemIdx)) {
+    		  throw new TransformerException("XTSE0010 : An xsl:param element must occur before any other element within xsl:iterate element.", srcLocator);
+    	  }
+    	  else if ((paramIdx != -1) && (otherElemIdx != -1) && (onCompletionIdx != -1) && (paramIdx < otherElemIdx) && (otherElemIdx < onCompletionIdx)) {
+    		  throw new TransformerException("XTSE0010 : An xsl:on-completion element must be the first child element of xsl:iterate after the xsl:param elements.", srcLocator);
+    	  }          
+
+    	  if (paramIdx != -1) {
+    		  for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
+    				  elemTemplate = elemTemplate.m_nextSibling) {
+    			  if (elemTemplate instanceof ElemParam) {
+    				  ElemParam paramElem = (ElemParam)elemTemplate;
+    				  QName paramNameVal = paramElem.getName();
+    				  XPath paramSelectXPath = paramElem.getSelect();
+    				  XslIterateParamWithparamData paramWithparamDataObj = new XslIterateParamWithparamData();
+    				  paramWithparamDataObj.setNameVal(paramNameVal);
+    				  paramWithparamDataObj.setSelectVal(paramSelectXPath);
+    				  if (fXslIterateParamWithparamDataList.contains(paramWithparamDataObj)) {
+    					  throw new TransformerException("XTSE0580 : The name of an xsl:param '" + paramNameVal + "' is not unique within xsl:iterate.", srcLocator);    
+    				  }
+    				  else {
+    					  fXslIterateParamWithparamDataList.add(paramWithparamDataObj);    
+    				  }
+    			  }                                    
+    		  }
+    	  }          
+    }
+
+    /**
+     * Verify within an xsl:iterate instruction, that xsl:next-iteration and xsl:break
+     * instructions are in tail position of xsl:iterate's sequence constructor, and few
+     * other XSL stylesheet constraints as well.
+     * 
+     * @param elemTemplateElem						An xsl:iterate instruction, or an XSL 
+     *                                              instruction within xsl:iterate.
+     * @throws TransformerException
+     */
+	private void verifyXslNextIterAndBreakConstraints(ElemTemplateElement elemTemplateElem) throws TransformerException {
+		
+		while (elemTemplateElem != null) {
+			SourceLocator srcLocator = (SourceLocator)elemTemplateElem;
+		    if (elemTemplateElem instanceof ElemIterateBreak) {
+		    	if (!isXslInstructionInTailPositionOfSequenceConstructor(elemTemplateElem)) {
+		           throw new TransformerException("XTSE3120 : An xsl:break instruction is not in a tail position of xsl:iterate's sequence constructor.", srcLocator);
+		    	}
+		    	else if ((elemTemplateElem.getParentElem() instanceof ElemLiteralResult) || (elemTemplateElem.getParentElem() instanceof ElemElement)) {
+		    	   throw new TransformerException("XTSE3120 : An xsl:break instruction cannot occur as child of XSL element constructor.", srcLocator);
+		    	}
+		    	else if (elemTemplateElem.getParentElem() instanceof ElemForEach) {
+			       throw new TransformerException("XTSE3120 : An xsl:break instruction cannot occur as child of xsl:for-each instruction.", srcLocator);
+			    }
+		    }
+		    else if ((elemTemplateElem instanceof ElemIterateNextIteration) && !isXslInstructionInTailPositionOfSequenceConstructor(elemTemplateElem)) {
+		    	throw new TransformerException("XTSE3120 : An next-iteration instruction is not in a tail position of xsl:iterate's sequence constructor.", srcLocator);
+		    }
+		    
+		    ElemTemplateElement elem = elemTemplateElem.getFirstChildElem();
+		    while (elem != null) {
+		       verifyXslNextIterAndBreakConstraints(elem);
+		       elem = elem.getNextSiblingElem();
+		    }
+		    
+		    elemTemplateElem = elemTemplateElem.getNextSiblingElem();
+		}  
+	}
       
 }
diff --git a/src/main/java/org/apache/xalan/templates/ElemIterateBreak.java b/src/main/java/org/apache/xalan/templates/ElemIterateBreak.java
index 31a64ee41..bb635d231 100644
--- a/src/main/java/org/apache/xalan/templates/ElemIterateBreak.java
+++ b/src/main/java/org/apache/xalan/templates/ElemIterateBreak.java
@@ -155,7 +155,7 @@ public class ElemIterateBreak extends ElemTemplateElement implements ExpressionO
                 throw new TransformerException("XTSE3120 : An xsl:break instruction doesn't have xsl:iterate instruction as ancestor.", xctxt.getSAXLocator());   
             }
                       
-            if (isXslBreakDescendantOfXslIterate && isXslInstructionInTailPositionOfSequenceConstructor(this)) {              
+            if (isXslBreakDescendantOfXslIterate) {              
                 transformXslBreakInstruction(transformer);
                 transformer.setXslIterateBreakEvaluated(true);
             }
diff --git a/src/main/java/org/apache/xalan/templates/ElemIterateNextIteration.java b/src/main/java/org/apache/xalan/templates/ElemIterateNextIteration.java
index 4b65d5242..8cf7cfb9b 100644
--- a/src/main/java/org/apache/xalan/templates/ElemIterateNextIteration.java
+++ b/src/main/java/org/apache/xalan/templates/ElemIterateNextIteration.java
@@ -161,14 +161,7 @@ public class ElemIterateNextIteration extends ElemTemplateElement implements Exp
                                                                                       xpathContext.getSAXLocator()); 
             }
             
-            if (isXslInstructionInTailPositionOfSequenceConstructor(this)) {
-                elemIterateNextIterationProcessing(transformer);
-            }
-            else {
-                throw new TransformerException("XTSE0010 : An xsl:next-iteration instruction is not in a "
-                                                                                           + "tail position within the sequence constructor of "
-                                                                                           + "an xsl:iterate instruction.", xpathContext.getSAXLocator());   
-            }
+            elemIterateNextIterationProcessing(transformer);            
        }
        
        /**
diff --git a/src/main/java/org/apache/xalan/templates/ElemIterateOnCompletion.java b/src/main/java/org/apache/xalan/templates/ElemIterateOnCompletion.java
index b2de0e32f..b7bf5d751 100644
--- a/src/main/java/org/apache/xalan/templates/ElemIterateOnCompletion.java
+++ b/src/main/java/org/apache/xalan/templates/ElemIterateOnCompletion.java
@@ -32,8 +32,6 @@ import com.sun.org.apache.xml.internal.dtm.DTM;
 /*
  * Implementation of the XSLT 3.0 xsl:on-completion instruction.
  * 
- * Ref : https://www.w3.org/TR/xslt-30/#element-iterate
- * 
  * @author Mukul Gandhi <mu...@apache.org>
  * 
  * @xsl.usage advanced
@@ -163,33 +161,41 @@ public class ElemIterateOnCompletion extends ElemTemplateElement implements Expr
                                                                   
            if (transformer.isXslIterateOnCompletionActive()) {               
                XPathContext xctxt = transformer.getXPathContext();
+                                                            
+               final int prevCurrentNode = xctxt.getCurrentNode();
+               final int prevCurrExprNode = xctxt.getCurrentExpressionNode();
                
-               // During evaluation of xsl:on-completion instruction, the XPath context item
-               // is absent. We make following two changes to an active XPath context to
-               // ensure this.
-               xctxt.pushCurrentNode(DTM.NULL);
-               xctxt.pushCurrentExpressionNode(DTM.NULL);
-               
-               if (xpathSelectPatternStr != null) {
-                   SerializationHandler rth = transformer.getResultTreeHandler();
+               try {
+            	   // During evaluation of xsl:on-completion instruction, an
+                   // XPath context item is absent.
+            	   xctxt.pushCurrentNode(DTM.NULL);
+                   xctxt.pushCurrentExpressionNode(DTM.NULL);
                    
-                   try {
-                       m_selectExpression.executeCharsToContentHandler(xctxt, rth);
-                   } 
-                   catch (TransformerException ex) {
-                       throw ex;
-                   } 
-                   catch (SAXException ex) {
-                       throw new TransformerException(ex);
-                   }
+            	   if (xpathSelectPatternStr != null) {
+            		   SerializationHandler rth = transformer.getResultTreeHandler();
+
+            		   try {
+            			   m_selectExpression.executeCharsToContentHandler(xctxt, rth);
+            		   } 
+            		   catch (TransformerException ex) {
+            			   throw ex;
+            		   } 
+            		   catch (SAXException ex) {
+            			   throw new TransformerException(ex);
+            		   }
+            	   }
+            	   else {
+            		   for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
+            				                                                      elemTemplate = elemTemplate.m_nextSibling) {
+            			   xctxt.setSAXLocator(elemTemplate);
+            			   transformer.setCurrentElement(elemTemplate);
+            			   elemTemplate.execute(transformer);
+            		   } 
+            	   }
                }
-               else {
-                   for (ElemTemplateElement elemTemplate = this.m_firstChild; elemTemplate != null; 
-                                                                        elemTemplate = elemTemplate.m_nextSibling) {
-                      xctxt.setSAXLocator(elemTemplate);
-                      transformer.setCurrentElement(elemTemplate);
-                      elemTemplate.execute(transformer);
-                   } 
+               finally {
+            	   xctxt.pushCurrentNode(prevCurrentNode);
+                   xctxt.pushCurrentExpressionNode(prevCurrExprNode);
                }
            }                      
        }
diff --git a/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java b/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
index 6a5761a49..8dcdfe631 100644
--- a/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
+++ b/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
@@ -1841,14 +1841,11 @@ public class ElemTemplateElement extends UnImplNode
          ElemTemplateElement xslInstrParentElement = xslInstr.m_parentNode;
           
          if (xslInstrParentElement instanceof ElemIf) {
-            result = isXslInstructionInTailPositionOfSequenceConstructor(
-                                                                                             xslInstrParentElement); 
+            result = isXslInstructionInTailPositionOfSequenceConstructor(xslInstrParentElement); 
          }
-         else if ((xslInstrParentElement instanceof ElemWhen) || (xslInstrParentElement 
-                                                                                   instanceof ElemOtherwise)) {
+         else if ((xslInstrParentElement instanceof ElemWhen) || (xslInstrParentElement instanceof ElemOtherwise)) {
              xslInstrParentElement = xslInstrParentElement.m_parentNode;
-             result = isXslInstructionInTailPositionOfSequenceConstructor(
-                                                                                                      xslInstrParentElement);
+             result = isXslInstructionInTailPositionOfSequenceConstructor(xslInstrParentElement);
          }
       }
       else {
diff --git a/src/main/java/org/apache/xpath/operations/Variable.java b/src/main/java/org/apache/xpath/operations/Variable.java
index 92d8ae192..6aeadc041 100644
--- a/src/main/java/org/apache/xpath/operations/Variable.java
+++ b/src/main/java/org/apache/xpath/operations/Variable.java
@@ -22,11 +22,13 @@ package org.apache.xpath.operations;
 
 import java.util.Map;
 
+import javax.xml.transform.SourceLocator;
 import javax.xml.transform.TransformerException;
 
-import org.apache.xalan.res.XSLMessages;
 import org.apache.xalan.templates.Constants;
 import org.apache.xalan.templates.ElemCatch;
+import org.apache.xalan.templates.ElemIterateOnCompletion;
+import org.apache.xalan.templates.ElemVariable;
 import org.apache.xalan.xslt.util.XslTransformData;
 import org.apache.xml.utils.QName;
 import org.apache.xpath.Expression;
@@ -163,7 +165,8 @@ public class Variable extends Expression implements PathComponent
 		  java.lang.String nsUri = m_qname.getNamespaceURI();
 		  if ((Constants.XSL_ERROR_NAMESACE).equals(nsUri)) {
 			 if (Constants.XSL_ERROR_CODE.equals(varLocalName) || Constants.XSL_ERROR_DESCRIPTION.equals(varLocalName) || 
-					 Constants.XSL_ERROR_LINE_NUMBER.equals(varLocalName) || Constants.XSL_ERROR_COLUMN_NUMBER.equals(varLocalName)) {
+					                                              Constants.XSL_ERROR_LINE_NUMBER.equals(varLocalName) || 
+					                                              Constants.XSL_ERROR_COLUMN_NUMBER.equals(varLocalName)) {
 				 return; 
 			 }
 		  }
@@ -174,15 +177,6 @@ public class Variable extends Expression implements PathComponent
 		  // like function item, "for", "let", "quantified" expressions.
 		  return;    
 	  }
-	  
-	  if (XslTransformData.m_xpathNodeCombiningExprRhsStrBuff == null) {
-		  java.lang.String msg = XSLMessages.createXPATHMessage(XPATHErrorResources.ER_COULD_NOT_FIND_VAR, 
-				  																				   new Object[]{m_qname.toString()});
-
-		  TransformerException te = new TransformerException(msg, this);
-
-		  throw new org.apache.xml.utils.WrappedRuntimeException(te);
-	  }
     
   }
 
@@ -242,6 +236,8 @@ public class Variable extends Expression implements PathComponent
       
         XObject result = null;
         
+        SourceLocator srcLocator = xctxt.getSAXLocator();
+        
         Map<QName, XObject> xpathVarMap = xctxt.getXPathVarMap();
         XObject varValue = xpathVarMap.get(m_qname);
         
@@ -257,7 +253,7 @@ public class Variable extends Expression implements PathComponent
         }
         
         try {
-           if (m_fixUpWasCalled) {    
+           if (m_fixUpWasCalled) {        	  
               if (m_isGlobal) {
                  result = xctxt.getVarStack().getGlobalVariable(xctxt, m_index, destructiveOK);
               }
@@ -268,11 +264,19 @@ public class Variable extends Expression implements PathComponent
            else {  
               result = xctxt.getVarStack().getVariableOrParam(xctxt, m_qname);
            }
+           
+           ElemVariable elemVariable = this.getElemVariable();
+           ExpressionNode exprNode = getExpressionOwner();
+           if ((elemVariable == null) && (exprNode instanceof ElemIterateOnCompletion)) {
+        	   throw new javax.xml.transform.TransformerException("XPST0008 : Variable $" + m_qname.toString() + " "
+             			                                                                  + "accessed before it is bound!", srcLocator); 
+           }
         }
         catch (javax.xml.transform.TransformerException ex) {
            java.lang.String exceptionMesg = ex.getMessage();
            if ((m_qname == null) || ((exceptionMesg != null) && (exceptionMesg.startsWith("XTDE0050") || exceptionMesg.startsWith("XPTY") 
-        		                                                                                      || exceptionMesg.startsWith("FOUT")))) {
+        		                                                                                      || exceptionMesg.startsWith("FOUT")
+        		                                                                                      || exceptionMesg.startsWith("XPST0008")))) {
               throw ex;   
            }
            else if (XslTransformData.m_xpathNodeCombiningExprRhsStrBuff != null) {
@@ -294,7 +298,7 @@ public class Variable extends Expression implements PathComponent
         	  }
         	  catch (TransformerException ex1) {
                   throw new javax.xml.transform.TransformerException("Variable $" + m_qname.toString() + " "
-                                                                                                  			+ "accessed before it is bound!.");
+                                                                                                  			+ "accessed before it is bound!", srcLocator);
         	  }
            }
         }
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_as-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_as-test-set_result.xml
index a05b523c2..3bfc070d6 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_as-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_as-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:43Z" fail="31" name="as" pass="73" skipped="4" statusUnknown="1" totalRun="105">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:39Z" fail="31" name="as" pass="73" skipped="4" statusUnknown="1" totalRun="105">
    <testResult status="pass" testName="as-0101"/>
    <testResult status="pass" testName="as-0102"/>
    <testResult status="pass" testName="as-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml
index 0883ff4c8..96357db12 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:47Z" fail="15" name="avt" pass="20" skipped="0" statusUnknown="0" totalRun="35">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:39Z" fail="15" name="avt" pass="20" skipped="0" statusUnknown="0" totalRun="35">
    <testResult status="pass" testName="avt-0101"/>
    <testResult status="fail" testName="avt-0201"/>
    <testResult status="pass" testName="avt-0202"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
index 3ed77aaa9..9365bf9cd 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T11:00:00Z" fail="28" name="expand-text" pass="34" skipped="0" statusUnknown="0" totalRun="62">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="28" name="expand-text" pass="34" skipped="0" statusUnknown="0" totalRun="62">
    <testResult status="pass" testName="cvt-001"/>
    <testResult status="pass" testName="cvt-002"/>
    <testResult status="pass" testName="cvt-003"/>
@@ -37,7 +37,7 @@
    <testResult status="pass" testName="cvt-024"/>
    <testResult status="fail" testName="cvt-025">
       <outResult>
-         <errTrace>Variable $d accessed before it is bound!.</errTrace>
+         <errTrace>Variable $d accessed before it is bound!</errTrace>
          <errTrace>java.lang.NullPointerException</errTrace>
       </outResult>
    </testResult>
@@ -53,7 +53,7 @@
    <testResult status="pass" testName="cvt-031"/>
    <testResult status="fail" testName="cvt-032">
       <outResult>
-         <errTrace>Variable $stylesheet.attributes accessed before it is bound!.</errTrace>
+         <errTrace>Variable $stylesheet.attributes accessed before it is bound!</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="cvt-033">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml
index 87197de6e..8d66403f6 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:48Z" fail="59" name="match" pass="69" skipped="8" statusUnknown="1" totalRun="129">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:40Z" fail="59" name="match" pass="69" skipped="8" statusUnknown="1" totalRun="129">
    <testResult status="pass" testName="match-001"/>
    <testResult status="pass" testName="match-002"/>
    <testResult status="pass" testName="match-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml
index 5e43f72df..8e5730ac0 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:51Z" fail="5" name="select" pass="19" skipped="0" statusUnknown="1" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:40Z" fail="5" name="select" pass="19" skipped="0" statusUnknown="1" totalRun="25">
    <testResult status="pass" testName="select-0101"/>
    <testResult status="pass" testName="select-0102"/>
    <testResult status="pass" testName="select-0201"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
index 770fb0a6c..61268b0a0 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T11:00:00Z" fail="15" name="xpath-default-namespace" pass="11" skipped="0" statusUnknown="0" totalRun="26">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="15" name="xpath-default-namespace" pass="11" skipped="0" statusUnknown="0" totalRun="26">
    <testResult status="pass" testName="xpath-default-namespace-0101"/>
    <testResult status="pass" testName="xpath-default-namespace-0102"/>
    <testResult status="pass" testName="xpath-default-namespace-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
index 4a66e14fe..839931418 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:26Z" fail="8" name="attribute-set" pass="41" skipped="1" statusUnknown="0" totalRun="49">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:18Z" fail="8" name="attribute-set" pass="41" skipped="1" statusUnknown="0" totalRun="49">
    <testResult status="pass" testName="attribute-set-0101"/>
    <testResult status="fail" testName="attribute-set-0102">
       <outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
index 94b064762..9515ba3a1 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:26Z" fail="12" name="character-map" pass="15" skipped="1" statusUnknown="1" totalRun="28">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:18Z" fail="12" name="character-map" pass="15" skipped="1" statusUnknown="1" totalRun="28">
    <testResult status="pass" testName="character-map-001"/>
    <testResult status="pass" testName="character-map-002"/>
    <testResult status="pass" testName="character-map-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
index 12b884383..6a3b56f02 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:07Z" fail="32" name="function" pass="56" skipped="22" statusUnknown="0" totalRun="88">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:46Z" fail="32" name="function" pass="56" skipped="22" statusUnknown="0" totalRun="88">
    <testResult status="fail" testName="function-0001">
       <outResult/>
    </testResult>
@@ -48,15 +48,7 @@
    <testResult status="pass" testName="function-0602"/>
    <testResult status="fail" testName="function-0701">
       <outResult>
-         <errTrace>XPST0008 : Could not find variable with the name of square-17</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-15</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-10</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-6</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-17</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-15</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-10</errTrace>
-         <errTrace>XPST0008 : Could not find variable with the name of square-6</errTrace>
-         <errTrace>java.lang.NullPointerException</errTrace>
+         <errTrace>java.lang.NumberFormatException</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="function-0901"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_variable-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_variable-test-set_result.xml
index f7e16168b..8d1a20822 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_variable-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_variable-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:40Z" fail="3" name="variable" pass="16" skipped="0" statusUnknown="1" totalRun="20">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:37Z" fail="3" name="variable" pass="16" skipped="0" statusUnknown="1" totalRun="20">
    <testResult status="pass" testName="variable-0101"/>
    <testResult status="pass" testName="variable-0102"/>
    <testResult status="pass" testName="variable-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
index 750770197..f6cd6464a 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:27Z" fail="18" name="axes" pass="183" skipped="0" statusUnknown="0" totalRun="201">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:18Z" fail="18" name="axes" pass="183" skipped="0" statusUnknown="0" totalRun="201">
    <testResult status="pass" testName="axes-001"/>
    <testResult status="pass" testName="axes-002"/>
    <testResult status="pass" testName="axes-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml
index 61ee45755..da57d648b 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:32Z" fail="5" name="castable" pass="4" skipped="0" statusUnknown="0" totalRun="9">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:19Z" fail="5" name="castable" pass="4" skipped="0" statusUnknown="0" totalRun="9">
    <testResult status="pass" testName="castable-001"/>
    <testResult status="pass" testName="castable-002"/>
    <testResult status="pass" testName="castable-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
index 3fcd67457..937173c64 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:32Z" fail="0" name="expression" pass="9" skipped="0" statusUnknown="1" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:19Z" fail="0" name="expression" pass="9" skipped="0" statusUnknown="1" totalRun="10">
    <testResult status="pass" testName="expression-0101"/>
    <testResult status="pass" testName="expression-0301"/>
    <testResult status="pass" testName="expression-0302"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
index 0e3595e57..3b2192546 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:33Z" fail="2" name="for" pass="1" skipped="0" statusUnknown="1" totalRun="4">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:19Z" fail="2" name="for" pass="1" skipped="0" statusUnknown="1" totalRun="4">
    <testResult status="fail" testName="for-001"/>
    <testResult status="fail" testName="for-002"/>
    <testResult status="pass" testName="for-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
index 7ac635e21..bd466a257 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:38Z" fail="48" name="higher-order-functions" pass="23" skipped="5" statusUnknown="0" totalRun="71">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:21Z" fail="48" name="higher-order-functions" pass="23" skipped="5" statusUnknown="0" totalRun="71">
    <testResult status="pass" testName="higher-order-functions-001"/>
    <testResult status="pass" testName="higher-order-functions-002"/>
    <testResult status="pass" testName="higher-order-functions-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
index 073034cfe..9fc605b21 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:34Z" fail="25" name="math" pass="124" skipped="0" statusUnknown="1" totalRun="150">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:21Z" fail="25" name="math" pass="124" skipped="0" statusUnknown="1" totalRun="150">
    <testResult status="pass" testName="math-0101"/>
    <testResult status="pass" testName="math-3315"/>
    <testResult status="pass" testName="math-0101"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
index 7a667f36a..940f1bdd7 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:37Z" fail="36" name="nodetest" pass="2" skipped="0" statusUnknown="0" totalRun="38">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:21Z" fail="36" name="nodetest" pass="2" skipped="0" statusUnknown="0" totalRun="38">
    <testResult status="pass" testName="nodetest-001"/>
    <testResult status="pass" testName="nodetest-002"/>
    <testResult status="fail" testName="nodetest-003">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
index f2372adf3..59edcc1ed 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:38Z" fail="3" name="path" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:21Z" fail="3" name="path" pass="7" skipped="0" statusUnknown="0" totalRun="10">
    <testResult status="pass" testName="path-001"/>
    <testResult status="pass" testName="path-002"/>
    <testResult status="pass" testName="path-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
index a80db9ca5..4f002be0a 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:39Z" fail="7" name="predicate" pass="50" skipped="0" statusUnknown="0" totalRun="57">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:22Z" fail="7" name="predicate" pass="50" skipped="0" statusUnknown="0" totalRun="57">
    <testResult status="fail" testName="predicate-001"/>
    <testResult status="fail" testName="predicate-002"/>
    <testResult status="fail" testName="predicate-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
index 8d3a064ab..f16732433 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:49Z" fail="0" name="deep-equal" pass="2" skipped="0" statusUnknown="0" totalRun="2">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:24Z" fail="0" name="deep-equal" pass="2" skipped="0" statusUnknown="0" totalRun="2">
    <testResult status="pass" testName="deep-equal-001"/>
    <testResult status="pass" testName="deep-equal-002"/>
 </testrun>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_format-number-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_format-number-test-set_result.xml
index 701cd8aeb..8f17b25b1 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_format-number-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_format-number-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:57Z" fail="32" name="format-number" pass="38" skipped="4" statusUnknown="0" totalRun="70">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="32" name="format-number" pass="38" skipped="4" statusUnknown="0" totalRun="70">
    <testResult status="fail" testName="format-number-001"/>
    <testResult status="fail" testName="format-number-002"/>
    <testResult status="fail" testName="format-number-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
index 13bba875c..d43a80366 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T11:00:02Z" fail="8" name="json-to-xml" pass="24" skipped="0" statusUnknown="1" totalRun="33">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="8" name="json-to-xml" pass="24" skipped="0" statusUnknown="1" totalRun="33">
    <testResult status="pass" testName="json-to-xml-001"/>
    <testResult status="pass" testName="json-to-xml-002"/>
    <testResult status="pass" testName="json-to-xml-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
index 590eb8256..b3f97340d 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:54Z" fail="29" name="key" pass="54" skipped="0" statusUnknown="0" totalRun="83">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="29" name="key" pass="54" skipped="0" statusUnknown="0" totalRun="83">
    <testResult status="pass" testName="key-001"/>
    <testResult status="fail" testName="key-002">
       <outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
index 4fab364cf..6747f3b66 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:49Z" fail="11" name="position" pass="126" skipped="0" statusUnknown="1" totalRun="138">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:24Z" fail="11" name="position" pass="126" skipped="0" statusUnknown="1" totalRun="138">
    <testResult status="pass" testName="position-0101"/>
    <testResult status="fail" testName="position-0102"/>
    <testResult status="fail" testName="position-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
index e4217a5c8..d5dce1d82 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:54Z" fail="3" name="root" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="3" name="root" pass="7" skipped="0" statusUnknown="0" totalRun="10">
    <testResult status="pass" testName="root-0101"/>
    <testResult status="fail" testName="root-0102"/>
    <testResult status="pass" testName="root-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
index eb0e6d7ce..185cb1cb3 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:52Z" fail="14" name="analyze-string" pass="39" skipped="5" statusUnknown="0" totalRun="53">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:24Z" fail="14" name="analyze-string" pass="39" skipped="5" statusUnknown="0" totalRun="53">
    <testResult status="pass" testName="analyze-string-001"/>
    <testResult status="pass" testName="analyze-string-002"/>
    <testResult status="pass" testName="analyze-string-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
index bd95e7290..007d0b2b5 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:52Z" fail="25" name="apply-templates" pass="21" skipped="4" statusUnknown="0" totalRun="46">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:40Z" fail="25" name="apply-templates" pass="21" skipped="4" statusUnknown="0" totalRun="46">
    <testResult status="fail" testName="apply-templates-001">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
 &#13;
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
index 86977332c..ef6852382 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:56Z" fail="21" name="attribute" pass="8" skipped="0" statusUnknown="1" totalRun="30">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:41Z" fail="21" name="attribute" pass="8" skipped="0" statusUnknown="1" totalRun="30">
    <testResult status="fail" testName="attribute-0001"/>
    <testResult status="fail" testName="attribute-0002"/>
    <testResult status="fail" testName="attribute-0003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
index 6ac7a0076..e221e2c9e 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:57Z" fail="14" name="call-template" pass="27" skipped="1" statusUnknown="0" totalRun="41">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:42Z" fail="14" name="call-template" pass="27" skipped="1" statusUnknown="0" totalRun="41">
    <testResult status="fail" testName="call-template-0001">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out/&gt;</outResult>
    </testResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
index 4ad7099cd..52c424032 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:58Z" fail="3" name="choose" pass="20" skipped="0" statusUnknown="1" totalRun="24">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:42Z" fail="3" name="choose" pass="20" skipped="0" statusUnknown="1" totalRun="24">
    <testResult status="pass" testName="choose-0101"/>
    <testResult status="pass" testName="choose-0102"/>
    <testResult status="fail" testName="choose-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
index 124855352..021e7b047 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:00Z" fail="31" name="copy" pass="28" skipped="0" statusUnknown="1" totalRun="60">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:43Z" fail="31" name="copy" pass="28" skipped="0" statusUnknown="1" totalRun="60">
    <testResult status="pass" testName="copy-0101"/>
    <testResult status="pass" testName="copy-0102"/>
    <testResult status="pass" testName="copy-0103"/>
@@ -100,7 +100,7 @@
       <outResult>
          <errTrace>XTSE0010 : an instruction xsl:where-populated is not known to the XSLT processor.</errTrace>
          <errTrace>XPST0003 : An XPath expression /out/comment() = "Boo!" has syntax error. Unknown op code : 0.</errTrace>
-         <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="copy-1214">
@@ -112,7 +112,7 @@
       <outResult>
          <errTrace>XTTE0570 : The xs:string value 'Boo!' cannot be cast to a type node().</errTrace>
          <errTrace>XPST0003 : An XPath expression /out/text() = "Boo!" has syntax error. Unknown op code : 0.</errTrace>
-         <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
       </outResult>
    </testResult>
    <testResult testName="copy-1216"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
index 3be841396..0e625e816 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:04Z" fail="18" name="element" pass="11" skipped="0" statusUnknown="0" totalRun="29">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:46Z" fail="18" name="element" pass="11" skipped="0" statusUnknown="0" totalRun="29">
    <testResult status="fail" testName="element-0001">
       <outResult/>
    </testResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
index 6dbaadb57..4f2e7c725 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:53Z" fail="24" name="for-each-group" pass="49" skipped="4" statusUnknown="1" totalRun="74">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:40Z" fail="24" name="for-each-group" pass="49" skipped="4" statusUnknown="1" totalRun="74">
    <testResult status="pass" testName="for-each-group-001"/>
    <testResult status="skipped" testName="for-each-group-002a" xsltVersion="xslt 2.0 only"/>
    <testResult status="pass" testName="for-each-group-002"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
index 22af001dc..82b2fbdc9 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:02Z" fail="25" name="iterate" pass="19" skipped="0" statusUnknown="0" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:44Z" fail="22" name="iterate" pass="22" skipped="0" statusUnknown="0" totalRun="44">
    <testResult status="pass" testName="iterate-001"/>
    <testResult status="pass" testName="iterate-002"/>
    <testResult status="pass" testName="iterate-003"/>
@@ -9,80 +9,10 @@
          <errTrace>XTSE3120 : An xsl:break instruction doesn't have xsl:iterate instruction as ancestor.</errTrace>
       </outResult>
    </testResult>
-   <testResult status="fail" testName="iterate-008">
-      <outResult>
-         <errTrace>org.apache.xml.utils.WrappedRuntimeException: XPST0008 : Could not find variable with the name of basketCost</errTrace>
-      </outResult>
-   </testResult>
-   <testResult status="fail" testName="iterate-009">
-      <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Pride and Prejudice&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Wuthering Heights&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Tess of the d'Urbervilles&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Jude the Obscure&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;The Big Over Easy&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;The Eyre Affair&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;/out&gt;&#13;
-</outResult>
-   </testResult>
-   <testResult status="fail" testName="iterate-010">
-      <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Pride and Prejudice&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Wuthering Heights&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Tess of the d'Urbervilles&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Jude the Obscure&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;The Big Over Easy&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;The Eyre Affair&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;/out&gt;&#13;
-</outResult>
-   </testResult>
-   <testResult status="fail" testName="iterate-011">
-      <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Pride and Prejudice&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Wuthering Heights&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Tess of the d'Urbervilles&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;Jude the Obscure&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;The Big Over Easy&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;item cost="0"&gt;&#13;
-&lt;TITLE&gt;The Eyre Affair&lt;/TITLE&gt;&#13;
-&lt;/item&gt;&#13;
-&lt;/out&gt;&#13;
-</outResult>
-   </testResult>
+   <testResult status="pass" testName="iterate-008"/>
+   <testResult status="pass" testName="iterate-009"/>
+   <testResult status="pass" testName="iterate-010"/>
+   <testResult status="pass" testName="iterate-011"/>
    <testResult status="pass" testName="iterate-012"/>
    <testResult status="pass" testName="iterate-013"/>
    <testResult status="pass" testName="iterate-014"/>
@@ -94,10 +24,14 @@
    <testResult status="fail" testName="iterate-020"/>
    <testResult status="fail" testName="iterate-021"/>
    <testResult status="pass" testName="iterate-022"/>
-   <testResult status="pass" testName="iterate-023"/>
+   <testResult status="fail" testName="iterate-023">
+      <outResult>
+         <errTrace>XTSE3120 : An next-iteration instruction is not in a tail position of xsl:iterate's sequence constructor.</errTrace>
+      </outResult>
+   </testResult>
    <testResult status="fail" testName="iterate-024">
       <outResult>
-         <errTrace>org.apache.xml.utils.WrappedRuntimeException: XPST0008 : Could not find variable with the name of count</errTrace>
+         <errTrace>XTSE3120 : An next-iteration instruction is not in a tail position of xsl:iterate's sequence constructor.</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="iterate-025">
@@ -108,20 +42,20 @@
    <testResult status="fail" testName="iterate-028">
       <outResult>
          <errTrace>XPST0003 : An XPath expression /out/text()[. = "exit at 12 of 76"] has syntax error. Unknown op code : 0.</errTrace>
-         <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
       </outResult>
    </testResult>
    <testResult status="pass" testName="iterate-029"/>
    <testResult status="fail" testName="iterate-030">
       <outResult>
-         <errTrace>XTSE0010 : An xsl:next-iteration instruction is not in a tail position within the sequence constructor of an xsl:iterate instruction.</errTrace>
+         <errTrace>XTSE3120 : An next-iteration instruction is not in a tail position of xsl:iterate's sequence constructor.</errTrace>
          <errTrace>XPST0003 : An XPath expression /out/text()["count 2"] has syntax error. Unknown op code : 0.</errTrace>
-         <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="iterate-031">
       <outResult>
-         <errTrace>XTSE0010 : An xsl:next-iteration instruction is not in a tail position within the sequence constructor of an xsl:iterate instruction.</errTrace>
+         <errTrace>XTSE3120 : An next-iteration instruction is not in a tail position of xsl:iterate's sequence constructor.</errTrace>
       </outResult>
    </testResult>
    <testResult status="pass" testName="iterate-032"/>
@@ -129,7 +63,7 @@
    <testResult status="fail" testName="iterate-034">
       <outResult/>
    </testResult>
-   <testResult status="pass" testName="iterate-035"/>
+   <testResult status="fail" testName="iterate-035"/>
    <testResult status="fail" testName="iterate-036">
       <outResult>
          <errTrace>FOAR0001 : An integer division by zero error.</errTrace>
@@ -157,11 +91,7 @@
    <testResult status="fail" testName="iterate-043">
       <outResult/>
    </testResult>
-   <testResult status="fail" testName="iterate-901">
-      <outResult>
-         <errTrace>org.apache.xml.utils.WrappedRuntimeException: XPST0008 : Could not find variable with the name of basketCost</errTrace>
-      </outResult>
-   </testResult>
+   <testResult status="pass" testName="iterate-901"/>
    <testResult status="fail" testName="iterate-902">
       <outResult>
          <errTrace>XTTE0590 : The value to parameter 'basketCost' cannot be assigned. Either the parameter's input is not available or parameter's value cannot be cast to an expected type.</errTrace>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
index 45717d0eb..b1d55aa45 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:02Z" fail="17" name="sequence" pass="8" skipped="1" statusUnknown="1" totalRun="26">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:44Z" fail="17" name="sequence" pass="8" skipped="1" statusUnknown="1" totalRun="26">
    <testResult status="fail" testName="sequence-0101"/>
    <testResult status="fail" testName="sequence-0102"/>
    <testResult status="pass" testName="sequence-0103"/>
@@ -6,17 +6,17 @@
    <testResult status="fail" testName="sequence-0105"/>
    <testResult status="fail" testName="sequence-0106">
       <outResult>
-         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="sequence-0107">
       <outResult>
-         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="sequence-0108">
       <outResult>
-         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
       </outResult>
    </testResult>
    <testResult status="pass" testName="sequence-0109"/>
@@ -26,7 +26,7 @@
    <testResult status="fail" testName="sequence-0113"/>
    <testResult status="fail" testName="sequence-0114">
       <outResult>
-         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix 'xs' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
       </outResult>
    </testResult>
    <testResult status="fail" testName="sequence-0115">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
index 720ed721d..90988be52 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:05Z" fail="31" name="sort" pass="50" skipped="0" statusUnknown="0" totalRun="81">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:46Z" fail="31" name="sort" pass="50" skipped="0" statusUnknown="0" totalRun="81">
    <testResult status="pass" testName="sort-003"/>
    <testResult status="pass" testName="sort-001"/>
    <testResult status="pass" testName="sort-002"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
index aeb22e357..2622a6e14 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
@@ -1,8 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:58:55Z" fail="22" name="try" pass="15" skipped="5" statusUnknown="0" totalRun="37">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:24:41Z" fail="21" name="try" pass="16" skipped="5" statusUnknown="0" totalRun="37">
    <testResult status="pass" testName="try-001"/>
-   <testResult status="fail" testName="try-002">
-      <outResult/>
-   </testResult>
+   <testResult status="fail" testName="try-002"/>
    <testResult status="fail" testName="try-003">
       <outResult>
          <errTrace>Could not find function: {http://www.w3.org/2005/xpath-functions}error()</errTrace>
@@ -10,14 +8,8 @@
          <errTrace>java.lang.NullPointerException</errTrace>
       </outResult>
    </testResult>
-   <testResult status="fail" testName="try-004">
-      <outResult/>
-   </testResult>
-   <testResult status="fail" testName="try-005">
-      <outResult>
-         <errTrace>org.apache.xml.utils.WrappedRuntimeException: XPST0008 : Could not find variable with the name of {http://www.w3.org/2005/xqt-errors}module</errTrace>
-      </outResult>
-   </testResult>
+   <testResult status="fail" testName="try-004"/>
+   <testResult status="pass" testName="try-005"/>
    <testResult status="pass" testName="try-006"/>
    <testResult status="pass" testName="try-007"/>
    <testResult status="pass" testName="try-008"/>
@@ -34,22 +26,28 @@
    <testResult status="skipped" testName="try-015" xsltVersion="xslt 2.0 only"/>
    <testResult status="fail" testName="try-016"/>
    <testResult status="skipped" testName="try-017" xsltVersion="xslt 2.0 only"/>
-   <testResult status="fail" testName="try-018">
-      <outResult/>
-   </testResult>
+   <testResult status="fail" testName="try-018"/>
    <testResult status="fail" testName="try-019"/>
    <testResult status="pass" testName="try-020"/>
    <testResult status="fail" testName="try-021">
       <outResult/>
    </testResult>
    <testResult status="fail" testName="try-022">
-      <outResult/>
+      <outResult>
+         <errTrace>XPTY0004 : An exception occured while evaluating an xsl:result-document instruction. Following run-time error occured : d:\xslt30-test-master\tests\insn\try (Access is denied).</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix '' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix '' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
+      </outResult>
    </testResult>
    <testResult status="fail" testName="try-023">
       <outResult/>
    </testResult>
    <testResult status="fail" testName="try-024">
-      <outResult/>
+      <outResult>
+         <errTrace>XPST0081 : An XML namespace prefix '' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
+         <errTrace>XPST0003 : An XPath expression                                    /output/output/note = "secondary document written"                   /output/output/*:error/@code[contains(.,"FOAR0001")]                   contains(/output/output/*:error/message, "zero")                                 has syntax error. Unknown op code : 21.</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
+      </outResult>
    </testResult>
    <testResult status="skipped" testName="try-025" xsltVersion="xslt 2.0 only"/>
    <testResult status="skipped" testName="try-026" xsltVersion="xslt 2.0 only"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_xsl-document-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_xsl-document-test-set_result.xml
index 97069012f..569ad6807 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_xsl-document-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_xsl-document-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:59Z" fail="13" name="xsl-document" pass="12" skipped="0" statusUnknown="0" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="13" name="xsl-document" pass="12" skipped="0" statusUnknown="0" totalRun="25">
    <testResult status="pass" testName="xsl-document-0101"/>
    <testResult status="fail" testName="xsl-document-0102">
       <outResult>
@@ -16,7 +16,7 @@
    <testResult status="pass" testName="xsl-document-0203"/>
    <testResult status="fail" testName="xsl-document-0301">
       <outResult>
-         <errTrace>XPST0081 : An XML namespace prefix '' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation</errTrace>
+         <errTrace>XPST0081 : An XML namespace prefix '' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation.</errTrace>
          <errTrace>XPST0003 : An XPath expression /out/node()[1][self::*:e1][namespace-uri()="http://www.example.org/foo"][@t1="1"][@t2="2"][@t3="3"] has syntax error. Unknown op code : 0.</errTrace>
          <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
       </outResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_regex-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_regex-test-set_result.xml
index 7937e4e91..0bc894884 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_regex-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_regex-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:58Z" fail="12" name="regex" pass="32" skipped="1" statusUnknown="0" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:25Z" fail="12" name="regex" pass="32" skipped="1" statusUnknown="0" totalRun="44">
    <testResult status="pass" testName="regex-001"/>
    <testResult status="fail" testName="regex-002"/>
    <testResult status="pass" testName="regex-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
index 027270c27..80debe6c8 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:41Z" fail="25" name="boolean" pass="87" skipped="0" statusUnknown="0" totalRun="112">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:22Z" fail="25" name="boolean" pass="87" skipped="0" statusUnknown="0" totalRun="112">
    <testResult status="pass" testName="boolean-001"/>
    <testResult status="pass" testName="boolean-002"/>
    <testResult status="pass" testName="boolean-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml
index ba2d7d15b..99b295e2f 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:46Z" fail="28" name="date" pass="56" skipped="0" statusUnknown="1" totalRun="85">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:22Z" fail="28" name="date" pass="56" skipped="0" statusUnknown="1" totalRun="85">
    <testResult status="pass" testName="date-001"/>
    <testResult status="pass" testName="date-002"/>
    <testResult status="pass" testName="date-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
index d27049e87..6b706acb3 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:43Z" fail="15" name="node" pass="17" skipped="0" statusUnknown="0" totalRun="32">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:22Z" fail="15" name="node" pass="17" skipped="0" statusUnknown="0" totalRun="32">
    <testResult status="pass" testName="node-0101"/>
    <testResult status="pass" testName="node-0201"/>
    <testResult status="fail" testName="node-0301">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
index acd829f26..6605bfa3b 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-10T10:59:44Z" fail="8" name="string" pass="128" skipped="0" statusUnknown="0" totalRun="136">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-16T13:25:22Z" fail="8" name="string" pass="128" skipped="0" statusUnknown="0" totalRun="136">
    <testResult status="pass" testName="string-001"/>
    <testResult status="pass" testName="string-002"/>
    <testResult status="pass" testName="string-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml
index 7c52c55e9..0c8bddba8 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<testResult dateTime="2025-09-10T11:00:12Z" desc="W3C XSLT 3.0 test suite results" fail="781" pass="1635" skipped="66" success="67.23%" totalRun="2432" xslt_processor="Xalan-J XSLT 3.0 development code">
+<testResult dateTime="2025-09-16T13:25:38Z" desc="W3C XSLT 3.0 test suite results" fail="777" pass="1639" skipped="66" success="67.39%" totalRun="2432" xslt_processor="Xalan-J XSLT 3.0 development code">
   <attr>
     <as fail="31" pass="73" skipped="4" success="69.52%" totalRun="105"/>
     <avt fail="15" pass="20" skipped="0" success="57.14%" totalRun="35"/>
@@ -42,10 +42,10 @@
     <copy fail="31" pass="28" skipped="0" success="46.67%" totalRun="60"/>
     <element fail="18" pass="11" skipped="0" success="37.93%" totalRun="29"/>
     <for-each-group fail="24" pass="49" skipped="4" success="66.22%" totalRun="74"/>
-    <iterate fail="25" pass="19" skipped="0" success="43.18%" totalRun="44"/>
+    <iterate fail="22" pass="22" skipped="0" success="50.0%" totalRun="44"/>
     <sequence fail="17" pass="8" skipped="1" success="30.77%" totalRun="26"/>
     <sort fail="31" pass="50" skipped="0" success="61.73%" totalRun="81"/>
-    <try fail="22" pass="15" skipped="5" success="40.54%" totalRun="37"/>
+    <try fail="21" pass="16" skipped="5" success="43.24%" totalRun="37"/>
     <xsl-document fail="13" pass="12" skipped="0" success="48.0%" totalRun="25"/>
   </insn>
   <misc>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xalan.apache.org
For additional commands, e-mail: commits-help@xalan.apache.org