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/07/02 12:45:16 UTC

(xalan-java) branch xalan-j_xslt3.0_mvn updated: committing few xalan-j xslt 3.0 implementation bug fixes on this dev repos branch

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 6d5a87b65 committing few xalan-j xslt 3.0 implementation bug fixes on this dev repos branch
6d5a87b65 is described below

commit 6d5a87b654453d394ce84336ac91e2a53f9fc3a6
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Wed Jul 2 18:14:54 2025 +0530

    committing few xalan-j xslt 3.0 implementation bug fixes on this dev repos branch
---
 .../org/apache/xalan/templates/ElemFunction.java   |   2 +-
 .../org/apache/xalan/templates/ElemSequence.java   |  32 ++-
 .../org/apache/xalan/templates/ElemValueOf.java    |   4 +-
 src/main/java/org/apache/xpath/Expression.java     |   4 +
 .../java/org/apache/xpath/compiler/Compiler.java   |  12 +-
 .../java/org/apache/xpath/compiler/OpCodes.java    |   4 +-
 .../org/apache/xpath/compiler/XPathParser.java     |  65 ++++-
 .../composite/XPathExprFuncCallExtendedArg.java    |  77 ++++++
 .../xpath/composite/XPathSequenceConstructor.java  |  12 +-
 .../apache/xpath/functions/FuncFunctionArity.java  |  35 ++-
 .../apache/xpath/functions/FuncFunctionName.java   |  34 ++-
 .../xpath/functions/XPathDynamicFunctionCall.java  | 133 +---------
 .../XSL3ConstructorOrExtensionFunction.java        |   4 +
 .../xpath/functions/XSL3FunctionService.java       | 288 +++++++++++++++++++--
 .../tests/w3c/xslt3/W3CXslTransformTestsUtil.java  |  54 ++--
 .../w3c/xslt3/result/attr/_as-test-set_result.xml  |   2 +-
 .../w3c/xslt3/result/attr/_avt-test-set_result.xml |   2 +-
 .../xslt3/result/attr/_match-test-set_result.xml   |   2 +-
 .../xslt3/result/attr/_select-test-set_result.xml  |   2 +-
 .../result/decl/_attribute-set-test-set_result.xml |   4 +-
 .../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 +-
 .../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    |   2 +-
 .../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 |   2 +-
 .../result/insn/_sequence-test-set_result.xml      |   2 +-
 .../xslt3/result/insn/_sort-test-set_result.xml    |   2 +-
 .../w3c/xslt3/result/insn/_try-test-set_result.xml |   2 +-
 .../result/insn/_xsl-document-test-set_result.xml  |   2 +-
 .../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 +-
 56 files changed, 603 insertions(+), 255 deletions(-)

diff --git a/src/main/java/org/apache/xalan/templates/ElemFunction.java b/src/main/java/org/apache/xalan/templates/ElemFunction.java
index d0c0e1779..57f912b6c 100644
--- a/src/main/java/org/apache/xalan/templates/ElemFunction.java
+++ b/src/main/java/org/apache/xalan/templates/ElemFunction.java
@@ -330,7 +330,7 @@ public class ElemFunction extends ElemTemplate
         				                            (seqTypeItemOccurenceIndicator == SequenceTypeSupport.OccurrenceIndicator.ONE_OR_MANY) ||
         				                            (seqTypeItemOccurenceIndicator == SequenceTypeSupport.OccurrenceIndicator.ZERO_OR_ONE))) {
         		   // An XPath sequence type occurrence indicator with value absent, or any 
-        		   // other occurrence indicator is ok for this case.
+        		   // other occurrence indicator is ok.
         		   isSeqCardinalityOk = true;
         		}
         		else if ((seqTypeItemOccurenceIndicator == SequenceTypeSupport.OccurrenceIndicator.ZERO_OR_MANY) ||
diff --git a/src/main/java/org/apache/xalan/templates/ElemSequence.java b/src/main/java/org/apache/xalan/templates/ElemSequence.java
index b1dc01b7e..16339871f 100644
--- a/src/main/java/org/apache/xalan/templates/ElemSequence.java
+++ b/src/main/java/org/apache/xalan/templates/ElemSequence.java
@@ -76,14 +76,14 @@ public class ElemSequence extends ElemTemplateElement
   private static final long serialVersionUID = 4299774714317634314L;
   
   /**
-   * Boolean value to indicate that, whether xsl:sequence instruction 
-   * is called from xsl:fork instruction. 
+   * Boolean value to indicate, whether xsl:sequence instruction 
+   * has been called from xsl:fork instruction. 
    */
   private boolean m_isCalledFromXslFork;
   
   /**
-   * xsl:sequence instruction's evaluation result. This is useful
-   * when xsl:sequence instruction is called from xsl:fork 
+   * An xsl:sequence instruction's evaluation result, when 
+   * xsl:sequence instruction has been called from xsl:fork 
    * instruction.
    */
   private XObject m_xslSequenceEvalResult = null;
@@ -315,7 +315,7 @@ public class ElemSequence extends ElemTemplateElement
 					  dtmIter = locPathIterator.asIterator(xctxt, contextNode);
 				  }
 				  catch (ClassCastException ex) {
-					  // no op
+					  // NO OP
 				  }
 
 				  if (dtmIter != null) {               
@@ -401,10 +401,15 @@ public class ElemSequence extends ElemTemplateElement
 			  }
 
 			  if (xslSequenceVal == null) {
-				  xslSequenceVal = m_selectPattern.execute(xctxt, sourceNode, this);
-				  if (xslSequenceVal instanceof XPathNamedFunctionReference) {
-					 (XslTransformSharedDatastore.xpathNamedFunctionRefSequence).add((XPathNamedFunctionReference)xslSequenceVal);  
+				  if (selectExpression instanceof XPathNamedFunctionReference) {
+					 (XslTransformSharedDatastore.xpathNamedFunctionRefSequence).add((XPathNamedFunctionReference)selectExpression); 
 				  }
+				  else {
+					  xslSequenceVal = m_selectPattern.execute(xctxt, sourceNode, this);
+					  if (xslSequenceVal instanceof XPathNamedFunctionReference) {
+						  (XslTransformSharedDatastore.xpathNamedFunctionRefSequence).add((XPathNamedFunctionReference)xslSequenceVal);  
+					  }
+				  }				  				  
 			  }        
 		  }
 		  else if (getFirstChildElem() == null) {
@@ -417,17 +422,16 @@ public class ElemSequence extends ElemTemplateElement
 		  }
 
 		  if (xslSequenceVal == null) {
-			  // The result of evaluation of xsl:sequence instruction here,
-			  // is an empty sequence.
-			  XPath emptySeqXPath = new XPath(XPathParser.XPATH_EXPR_STR_EMPTY_SEQUENCE, srcLocator, 
-					  null, XPath.SELECT, null);
-			  xslSequenceVal = emptySeqXPath.execute(xctxt, DTM.NULL, null);
+			  // An xsl:sequence instruction's evaluation result here 
+			  // will be an empty sequence.
+			  XPath xpathObj = new XPath(XPathParser.XPATH_EXPR_STR_EMPTY_SEQUENCE, srcLocator, null, XPath.SELECT, null);
+			  xslSequenceVal = xpathObj.execute(xctxt, DTM.NULL, null);
 		  }
 
 		  if (m_isCalledFromXslFork) {
 			  m_xslSequenceEvalResult = xslSequenceVal;
 		  }            		  
-		  else if (xslSequenceVal != null) {
+		  else {
 			  emitXslSequenceResultToSerializer(xctxt, transformer, xslSequenceVal);          
 		  }
 	  }
diff --git a/src/main/java/org/apache/xalan/templates/ElemValueOf.java b/src/main/java/org/apache/xalan/templates/ElemValueOf.java
index 09b935a56..1f45031dd 100644
--- a/src/main/java/org/apache/xalan/templates/ElemValueOf.java
+++ b/src/main/java/org/apache/xalan/templates/ElemValueOf.java
@@ -64,9 +64,7 @@ import xml.xpath31.processor.types.XSNumericType;
 import xml.xpath31.processor.types.XSQName;
 
 /**
- * Implementation of XSLT xsl:value-of instruction.
- * 
- * Ref : https://www.w3.org/TR/xslt-30/#element-value-of
+ * Implementation of XSLT 3.0 xsl:value-of instruction.
  * 
  * @author Scott Boag <sc...@us.ibm.com>
  * @author Ilene Seelemann
diff --git a/src/main/java/org/apache/xpath/Expression.java b/src/main/java/org/apache/xpath/Expression.java
index a8cb38cc9..6305713b3 100644
--- a/src/main/java/org/apache/xpath/Expression.java
+++ b/src/main/java/org/apache/xpath/Expression.java
@@ -596,6 +596,10 @@ public abstract class Expression implements java.io.Serializable, ExpressionNode
   	return m_parent.getColumnNumber();
   }
   
+  public List<QName> getXPathVarList() {
+	 return m_xpathVarList;  
+  }
+  
   /**
    * This method definition, evaluates an XPath expression suffix function call funcCall(..) 
    * within an expression like like /a/b/funcCall(..).
diff --git a/src/main/java/org/apache/xpath/compiler/Compiler.java b/src/main/java/org/apache/xpath/compiler/Compiler.java
index 7eb05d940..a7b15024b 100644
--- a/src/main/java/org/apache/xpath/compiler/Compiler.java
+++ b/src/main/java/org/apache/xpath/compiler/Compiler.java
@@ -286,6 +286,8 @@ public class Compiler extends OpMap
       expr = xpathExprWithFuncCallSuffix(opPos); break;
     case OpCodes.OP_CONTEXT_ITEM_WITH_PREDICATE :
       expr = xpathContextItemWithPredicate(opPos); break;
+    case OpCodes.OP_XPATH_FUNC_CALL_EXTENDED_ARG :
+      expr = xpathExpressionFuncCallExtendedArg(opPos); break;  
     case OpCodes.OP_QUO:
       error(XPATHErrorResources.ER_UNKNOWN_OPCODE, new Object[]{ "quo" });
       break;
@@ -1657,7 +1659,15 @@ private static final boolean DEBUG = false;
    */
   Expression xpathContextItemWithPredicate(int opPos) throws TransformerException
   {
-      return XPathParser.xpathContextItemWithPredicate;
+      return XPathParser.m_xpathContextItemWithPredicate;
+  }
+  
+  /**
+   * Compile an XPath expression function call extended argument list.
+   */
+  Expression xpathExpressionFuncCallExtendedArg(int opPos) throws TransformerException
+  {
+      return XPathParser.m_xpathExprFuncCallExtendedArg;
   }
   
   /**
diff --git a/src/main/java/org/apache/xpath/compiler/OpCodes.java b/src/main/java/org/apache/xpath/compiler/OpCodes.java
index 1db0380c1..73bdf7d90 100644
--- a/src/main/java/org/apache/xpath/compiler/OpCodes.java
+++ b/src/main/java/org/apache/xpath/compiler/OpCodes.java
@@ -762,8 +762,10 @@ public class OpCodes
   public static final int OP_XPATH_EXPR_WITH_FUNC_CALL_SUFFIX = 85;
   
   public static final int OP_CONTEXT_ITEM_WITH_PREDICATE = 86;
+  
+  public static final int OP_XPATH_FUNC_CALL_EXTENDED_ARG = 87;
 
   /** The next free ID. Please keep this up to date. */
-  private static final int NEXT_FREE_ID = 87;
+  private static final int NEXT_FREE_ID = 88;
   
 }
diff --git a/src/main/java/org/apache/xpath/compiler/XPathParser.java b/src/main/java/org/apache/xpath/compiler/XPathParser.java
index 31870bf4a..f50d8800f 100644
--- a/src/main/java/org/apache/xpath/compiler/XPathParser.java
+++ b/src/main/java/org/apache/xpath/compiler/XPathParser.java
@@ -57,6 +57,7 @@ import org.apache.xpath.composite.SequenceTypeMapTest;
 import org.apache.xpath.composite.SequenceTypeSupport;
 import org.apache.xpath.composite.XPathArrayConstructor;
 import org.apache.xpath.composite.XPathContextItemWithPredicate;
+import org.apache.xpath.composite.XPathExprFuncCallExtendedArg;
 import org.apache.xpath.composite.XPathExprFunctionCallSuffix;
 import org.apache.xpath.composite.XPathExprFunctionSuffix;
 import org.apache.xpath.composite.XPathForExpr;
@@ -256,7 +257,9 @@ public class XPathParser
   
   static XPathExprFunctionCallSuffix m_xpathExprWithFuncCallSuffix = null;
   
-  static XPathContextItemWithPredicate xpathContextItemWithPredicate = null;
+  static XPathContextItemWithPredicate m_xpathContextItemWithPredicate = null;
+  
+  static XPathExprFuncCallExtendedArg m_xpathExprFuncCallExtendedArg = null;
   
   private String m_arrowOpRemainingXPathExprStr = null;
   
@@ -1818,7 +1821,7 @@ public class XPathParser
      	 
      	 insertOp(opPos1, 2, OpCodes.OP_CONTEXT_ITEM_WITH_PREDICATE);
      	 
-		 xpathContextItemWithPredicate = new XPathContextItemWithPredicate();
+		 m_xpathContextItemWithPredicate = new XPathContextItemWithPredicate();
 		 
 		 consumeExpected('[');
 		 StringBuffer xpathPredicateSuffixStrBuff = new StringBuffer();
@@ -1850,8 +1853,8 @@ public class XPathParser
         	 xpathPredicateSuffixStr = prefixStr + suffixStr;  
          }
 		 
-		 xpathContextItemWithPredicate.setXPathPredicateSuffixExpr(xpathPredicateSuffixStr);		 
-		 xpathContextItemWithPredicate.setContextItemChar('.');
+		 m_xpathContextItemWithPredicate.setXPathPredicateSuffixExpr(xpathPredicateSuffixStr);		 
+		 m_xpathContextItemWithPredicate.setContextItemChar('.');
 		 
 		 m_ops.setOp(opPos1 + OpMap.MAPINDEX_LENGTH,
                   								 m_ops.getOp(OpMap.MAPINDEX_LENGTH) - opPos1);
@@ -4507,6 +4510,60 @@ public class XPathParser
     else {
     	m_isParseSequenceTypeExprWithUserDefinedType = false;	
     }
+    
+    if (tokenIs('(')) {
+    	/**
+    	 * XPath parse of a possible function argument literal list suffix. 
+    	 * This can handle an XPath function call syntax like prefix:func1(args1)(args2), 
+    	 * where an XPath expression syntax prefix:func1(args1) returns a function item 
+    	 * that can be called with it's required arguments (i.e, args2).
+    	 */
+    	
+    	appendOp(2, OpCodes.OP_XPATH_FUNC_CALL_EXTENDED_ARG);
+    	
+    	consumeExpected('(');
+    	
+    	List<String> funcArgrgXPathExprStrList = new ArrayList<String>();
+    	
+    	while (!tokenIs(')') && m_token != null)
+        {
+    		if (tokenIs(','))
+    		{
+    			error(XPATHErrorResources.ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG, null);
+    		}
+
+    		StringBuffer strBuff = new StringBuffer();
+    		while (!(tokenIs(',') || tokenIs(')')) && m_token != null) {
+    			strBuff.append(m_token);
+    			nextToken();
+    		}
+
+    		String strValue = strBuff.toString();
+    		if (strValue.length() > 0) {
+    			funcArgrgXPathExprStrList.add(strValue);
+    		}
+
+    		if (!tokenIs(')'))
+    		{
+    			consumeExpected(',');
+
+    			if (tokenIs(')'))
+    			{
+    				error(XPATHErrorResources.ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG, null);
+    			}
+    		}
+        }
+    	
+    	m_xpathExprFuncCallExtendedArg = new XPathExprFuncCallExtendedArg();    	
+    	if (funcArgrgXPathExprStrList.size() > 0) {    		
+    		m_xpathExprFuncCallExtendedArg.setFunctionArgXPathExprStrList(funcArgrgXPathExprStrList);
+    	}
+    	
+    	consumeExpected(')');
+    	
+    	m_ops.setOp(opPos + OpMap.MAPINDEX_LENGTH,
+                       m_ops.getOp(OpMap.MAPINDEX_LENGTH) - opPos);
+    }
 
     m_ops.setOp(m_ops.getOp(OpMap.MAPINDEX_LENGTH), OpCodes.ENDOP);
     m_ops.setOp(OpMap.MAPINDEX_LENGTH,m_ops.getOp(OpMap.MAPINDEX_LENGTH) + 1);
diff --git a/src/main/java/org/apache/xpath/composite/XPathExprFuncCallExtendedArg.java b/src/main/java/org/apache/xpath/composite/XPathExprFuncCallExtendedArg.java
new file mode 100644
index 000000000..197830254
--- /dev/null
+++ b/src/main/java/org/apache/xpath/composite/XPathExprFuncCallExtendedArg.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.xpath.composite;
+
+import java.util.List;
+import java.util.Vector;
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.xpath.Expression;
+import org.apache.xpath.ExpressionOwner;
+import org.apache.xpath.XPathContext;
+import org.apache.xpath.XPathVisitor;
+import org.apache.xpath.objects.XObject;
+
+/**
+ * A class definition providing support for XPath parse of 
+ * function call syntax, like prefix:func1(args1)(args2). The 
+ * list of string values within an object of this class, stores 
+ * XPath expression strings for the function arguments args2. 
+ * 
+ * @author Mukul Gandhi <mu...@apache.org>
+ * 
+ * @xsl.usage advanced
+ */
+public class XPathExprFuncCallExtendedArg extends Expression {
+
+	private static final long serialVersionUID = -5784911363958937383L;
+	
+	private List<String> m_functionArgXPathExprStrList = null;
+
+	@Override
+	public void callVisitors(ExpressionOwner owner, XPathVisitor visitor) {
+		// NO OP
+	}
+
+	@Override
+	public XObject execute(XPathContext xctxt) throws TransformerException {
+		// NO OP
+		return null;
+	}
+
+	@Override
+	public void fixupVariables(Vector vars, int globalsSize) {
+		// NO OP
+	}
+
+	@Override
+	public boolean deepEquals(Expression expr) {
+		// NO OP
+		return false;
+	}
+
+	public List<String> getFunctionArgXPathExprStrList() {
+		return m_functionArgXPathExprStrList;
+	}
+
+	public void setFunctionArgXPathExprStrList(List<String> functionArgXPathExprStrList) {
+		this.m_functionArgXPathExprStrList = functionArgXPathExprStrList;
+	}
+
+}
diff --git a/src/main/java/org/apache/xpath/composite/XPathSequenceConstructor.java b/src/main/java/org/apache/xpath/composite/XPathSequenceConstructor.java
index f49241086..c899ad026 100644
--- a/src/main/java/org/apache/xpath/composite/XPathSequenceConstructor.java
+++ b/src/main/java/org/apache/xpath/composite/XPathSequenceConstructor.java
@@ -17,7 +17,6 @@
 package org.apache.xpath.composite;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Vector;
 
@@ -224,16 +223,7 @@ public class XPathSequenceConstructor extends Expression {
            }
            else if (xpathExpr instanceof XSL3ConstructorOrExtensionFunction) {
         	   XSL3ConstructorOrExtensionFunction xsl3ConstructorOrExtensionFunction = (XSL3ConstructorOrExtensionFunction)xpathExpr;        	           	   
-        	   XObject funcEvalResult = xsl3ConstructorOrExtensionFunction.execute(xctxt);        	           	   
-        	   String[] strParts = xpathExprStr.split("\\)\\(");
-        	   if (strParts.length > 1) {
-        		  String argStr = strParts[strParts.length - 1];
-        		  argStr = argStr.substring(0, argStr.length() - 1);
-        		  String[] argArray = argStr.split(",");
-        		  funcEvalResult = m_xsl3FunctionService.evaluateXPathNamedFunctionReference((XPathNamedFunctionReference)funcEvalResult, Arrays.asList(argArray), 
-																                             prefixTable, m_vars, m_globals_size, getExpressionOwner(), 
-																                             xctxt); 
-        	   }        	   
+        	   XObject funcEvalResult = xsl3ConstructorOrExtensionFunction.execute(xctxt);        	           	           	          	   
         	   resultSeq.add(funcEvalResult);
            }
            else {
diff --git a/src/main/java/org/apache/xpath/functions/FuncFunctionArity.java b/src/main/java/org/apache/xpath/functions/FuncFunctionArity.java
index 9317e554a..8b310cb8b 100644
--- a/src/main/java/org/apache/xpath/functions/FuncFunctionArity.java
+++ b/src/main/java/org/apache/xpath/functions/FuncFunctionArity.java
@@ -130,6 +130,37 @@ public class FuncFunctionArity extends FunctionDef1Arg
 					                                                                                          + " not found.", srcLocator); 
 			}
 		}
+		else if (arg0 instanceof XSL3ConstructorOrExtensionFunction) {
+			XSL3ConstructorOrExtensionFunction xsl3ConstructorOrExtensionFunction = (XSL3ConstructorOrExtensionFunction)arg0;
+			XObject xObj = xsl3ConstructorOrExtensionFunction.execute(xctxt);
+			if (xObj instanceof XPathNamedFunctionReference) {
+				XPathNamedFunctionReference xpathNamedFunctionReference = (XPathNamedFunctionReference)xObj;
+				String localName = xpathNamedFunctionReference.getFuncName();
+				String namespace = xpathNamedFunctionReference.getFuncNamespace();
+				Short arity = xpathNamedFunctionReference.getArity(); 
+				if ((FunctionTable.XPATH_BUILT_IN_FUNCS_NS_URI).equals(namespace) || (FunctionTable.XPATH_BUILT_IN_MATH_FUNCS_NS_URI).equals(namespace) ||
+					(FunctionTable.XPATH_BUILT_IN_MAP_FUNCS_NS_URI).equals(namespace) || (FunctionTable.XPATH_BUILT_IN_ARRAY_FUNCS_NS_URI).equals(namespace)) {
+					FunctionTable funcTable = xctxt.getFunctionTable();
+					Object funcId = funcTable.getFunctionId(localName);
+					if (funcId != null) {
+						Function function = funcTable.getFunction(Integer.valueOf(funcId.toString()));
+						List<Short> funcDefinedArity = Arrays.asList(function.getDefinedArity());
+						if (funcDefinedArity.contains(arity)) {
+							result = new XSInteger(String.valueOf(arity));
+						}
+						else {
+							throw new TransformerException("XPST0017 : An XSL function definition for function reference {" 
+						                                                                     + namespace + "}" + localName + "#" + arity + " not found.", srcLocator);	
+						}
+					}					
+				}
+			}
+			else if (xObj instanceof XPathInlineFunction) {
+				XPathInlineFunction xpathInlineFunction = (XPathInlineFunction)xObj;
+				List<InlineFunctionParameter> funcParamList = xpathInlineFunction.getFuncParamList();
+				result = new XSInteger(String.valueOf(funcParamList.size()));
+			}
+		}
 		else if (arg0 instanceof XPathInlineFunction) {
 			XPathInlineFunction xpathInlineFunction = (XPathInlineFunction)arg0;
 			List<InlineFunctionParameter> funcParamList = xpathInlineFunction.getFuncParamList();
@@ -140,8 +171,8 @@ public class FuncFunctionArity extends FunctionDef1Arg
 	}
     
 	/**
-	 * Method definition to get an XSL transformation's TransformerImpl 
-	 * object instance within the current XSL transformation context. 
+	 * Method definition to get, an XSL transformation's TransformerImpl 
+	 * object instance available within the current XSL transformation context. 
 	 * 
 	 * @return						TransformerImpl object instance
 	 */
diff --git a/src/main/java/org/apache/xpath/functions/FuncFunctionName.java b/src/main/java/org/apache/xpath/functions/FuncFunctionName.java
index 7e1f2f162..873ba8f5f 100644
--- a/src/main/java/org/apache/xpath/functions/FuncFunctionName.java
+++ b/src/main/java/org/apache/xpath/functions/FuncFunctionName.java
@@ -108,18 +108,30 @@ public class FuncFunctionName extends FunctionDef1Arg
 		}
 		else if (arg0 instanceof NodeTest) {
 			NodeTest nodeTest = (NodeTest)arg0;
-			
+
 			result = getFunctionNameFromNodeTestExpr(nodeTest, srcLocator);
-		 }
-		 else if (arg0 instanceof XPathInlineFunction) {
+		}		
+		else if (arg0 instanceof XSL3ConstructorOrExtensionFunction) {
+			XSL3ConstructorOrExtensionFunction xsl3ConstructorOrExtensionFunction = (XSL3ConstructorOrExtensionFunction)arg0;
+			XObject xObj = xsl3ConstructorOrExtensionFunction.execute(xctxt);
+			if (xObj instanceof XPathNamedFunctionReference) {
+				XPathNamedFunctionReference xpathNamedFunctionReference = (XPathNamedFunctionReference)xObj;
+				
+				result = getFunctionNameFromNamedFuncRef(xpathNamedFunctionReference, funcTable, srcLocator);
+			}
+			else if (xObj instanceof XPathInlineFunction) {
+			    result = new ResultSequence();
+			}
+		}
+		else if (arg0 instanceof XPathInlineFunction) {
 			result = new ResultSequence();
-		 }
-		 else {
+		}
+		else {
 			throw new javax.xml.transform.TransformerException("XPST0017 : An XPath function definition for the supplied function "
-						                                                                                + "reference not found.", srcLocator); 
-		 }
-		
-		 return result;
+																												+ "reference not found.", srcLocator); 
+		}
+
+		return result;
 	}
 
 	/**
@@ -274,8 +286,8 @@ public class FuncFunctionName extends FunctionDef1Arg
 
 		StylesheetRoot stylesheetRoot = (StylesheetRoot)stylesheetRootNode; 
 		ElemFunction elemFunction = XslTransformEvaluationHelper.getElemFunctionFromNodeTestExpression(
-				nodeTest, stylesheetRoot.getTransformerImpl(), 
-				srcLocator);
+																									nodeTest, stylesheetRoot.getTransformerImpl(), 
+																									srcLocator);
 		String funcNameRef = nodeTest.getLocalName();
 		String namespace = nodeTest.getNamespace();
 		int hashCharIdx = funcNameRef.indexOf('#');
diff --git a/src/main/java/org/apache/xpath/functions/XPathDynamicFunctionCall.java b/src/main/java/org/apache/xpath/functions/XPathDynamicFunctionCall.java
index c1beb2f57..e09f1a737 100644
--- a/src/main/java/org/apache/xpath/functions/XPathDynamicFunctionCall.java
+++ b/src/main/java/org/apache/xpath/functions/XPathDynamicFunctionCall.java
@@ -17,7 +17,6 @@
 package org.apache.xpath.functions;
 
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -43,11 +42,8 @@ import org.apache.xpath.ExpressionOwner;
 import org.apache.xpath.XPath;
 import org.apache.xpath.XPathContext;
 import org.apache.xpath.XPathVisitor;
-import org.apache.xpath.composite.SequenceTypeData;
-import org.apache.xpath.composite.SequenceTypeSupport;
 import org.apache.xpath.composite.XPathNamedFunctionReference;
 import org.apache.xpath.objects.ElemFunctionItem;
-import org.apache.xpath.objects.InlineFunctionParameter;
 import org.apache.xpath.objects.ResultSequence;
 import org.apache.xpath.objects.XMLNodeCursorImpl;
 import org.apache.xpath.objects.XObject;
@@ -109,7 +105,6 @@ public class XPathDynamicFunctionCall extends Expression {
     
     private XSL3FunctionService m_xsl3FunctionService = XSLFunctionBuilder.getXSLFunctionService();
     
-
     /**
      * Evaluate an XPath dynamic function call expression.
      */
@@ -160,12 +155,14 @@ public class XPathDynamicFunctionCall extends Expression {
             }
                 	    
     	    if (functionRef instanceof XPathInlineFunction) {    	    		    	    	
-	           evalResult = evaluateXPathInlineFunction(xctxt, (XPathInlineFunction)functionRef, m_argList, prefixTable);
+	           evalResult = m_xsl3FunctionService.evaluateXPathInlineFunction((XPathInlineFunction)functionRef, m_argList, 
+	        		                                                           xctxt, prefixTable, m_vars, m_globals_size, 
+	        		                                                           m_xpathVarList, m_funcRefVarName);
                
 	           if ((evalResult instanceof XPathNamedFunctionReference) && (m_trailingArgList != null)) {
 	        	  evalResult = m_xsl3FunctionService.evaluateXPathNamedFunctionReference((XPathNamedFunctionReference)evalResult, m_trailingArgList, 
-	        			                                                                 prefixTable, m_vars, m_globals_size, getExpressionOwner(), 
-	        			                                                                 xctxt); 
+	        			                                                                  prefixTable, m_vars, m_globals_size, getExpressionOwner(), 
+	        			                                                                  xctxt); 
 	           }
 	        }
     	    else if (functionRef instanceof XPathMap) {
@@ -526,7 +523,9 @@ public class XPathDynamicFunctionCall extends Expression {
       }
        
       if ((evalResult instanceof XPathInlineFunction) && (m_trailingArgList != null)) {
-    	 evalResult = evaluateXPathInlineFunction(xctxt, (XPathInlineFunction)evalResult, m_trailingArgList, prefixTable); 
+    	 evalResult = m_xsl3FunctionService.evaluateXPathInlineFunction((XPathInlineFunction)evalResult, m_trailingArgList, 
+    			                                                        xctxt, prefixTable, m_vars, m_globals_size, 
+    			                                                        m_xpathVarList, m_funcRefVarName); 
       }
                
       return evalResult;
@@ -586,122 +585,6 @@ public class XPathDynamicFunctionCall extends Expression {
     	return evalResult;
 	}
     
-    /**
-     * Method definition to evaluate an XPath inline function reference.
-     * 
-     * @param xctxt									An XPath context object
-     * @param xpathInlineFunction			        An XPath compiled inline function reference object		
-     * @param argList                               A list of XPath string values for argument information of 
-     *                                              inline function reference.
-     * @param prefixTable                           An XML prefix table list object reference containing
-     *                                              an XSL context namespace binding information.
-     * @return									    The result of evaluation of an XPath inline function
-     *                                              reference.
-     * @throws TransformerException
-     */
-    private XObject evaluateXPathInlineFunction(XPathContext xctxt, XPathInlineFunction xpathInlineFunction, 
-    		                                    List<String> argList, List<XMLNSDecl> prefixTable) throws TransformerException {
-    	
-    	XObject evalResult = null;
-    	
-    	Map<QName, XObject> inlineFunctionVarMap = xctxt.getXPathVarMap();
-
-    	SourceLocator srcLocator = xctxt.getSAXLocator();
-
-    	final int contextNode = xctxt.getCurrentNode(); 
-
-    	String inlineFnXPathStr = xpathInlineFunction.getFuncBodyXPathExprStr();
-    	List<InlineFunctionParameter> funcParamList = xpathInlineFunction.getFuncParamList();           
-
-    	int argCount1 = argList.size();
-
-    	if (argCount1 != funcParamList.size()) {
-    		throw new javax.xml.transform.TransformerException("XPTY0004 : Number of arguments required for "
-																		    				+ "XPath dynamic function call is " + funcParamList.size() + ". "
-																		    				+ "Arguments provided : " + argCount1 + ".", srcLocator);    
-    	}	           	           
-
-    	Map<QName, XObject> functionParamAndArgMap = new HashMap<QName, XObject>();
-
-    	for (int idx = 0; idx < funcParamList.size(); idx++) {
-    		InlineFunctionParameter funcParam = funcParamList.get(idx);                                                         
-
-    		String argXPathStr = argList.get(idx);
-
-    		if (prefixTable != null) {
-    			argXPathStr = XslTransformEvaluationHelper.replaceNsUrisWithPrefixesOnXPathStr(argXPathStr, prefixTable);
-    		}
-
-    		XPath argXPath = new XPath(argXPathStr, srcLocator, xctxt.getNamespaceContext(), XPath.SELECT, null);
-    		if (m_vars != null) {
-    			argXPath.fixupVariables(m_vars, m_globals_size);
-    		}
-
-    		XObject argValue = argXPath.execute(xctxt, contextNode, xctxt.getNamespaceContext());
-
-    		String funcParamName = funcParam.getParamName();
-    		SequenceTypeData paramType = funcParam.getParamType();
-
-    		if (paramType != null) {
-    			try {
-    				argValue = SequenceTypeSupport.castXdmValueToAnotherType(argValue, null, paramType, null);                     
-    				if (argValue == null) {
-    					throw new TransformerException("XTTE0505 : An item type of argument at position " + (idx + 1) + " of XPath dynamic "
-			    							                                              + "function call $" + m_funcRefVarName + ", "
-			    							                                              + "doesn't match an expected type.", srcLocator);  
-    				}
-    			}
-    			catch (TransformerException ex) {
-    				throw new TransformerException("XTTE0505 : An item type of argument at position " + (idx + 1) + " of XPath dynamic "
-		    						                                                  + "function call $" + m_funcRefVarName + ", "
-		    						                                                  + "doesn't match an expected type.", srcLocator); 
-    			}
-    		}
-
-    		m_xpathVarList.add(new QName(funcParamName));
-
-    		functionParamAndArgMap.put(new QName(funcParamName), argValue);
-    	}
-
-    	inlineFunctionVarMap.putAll(functionParamAndArgMap);
-
-    	if (prefixTable != null) {
-    		inlineFnXPathStr = XslTransformEvaluationHelper.replaceNsUrisWithPrefixesOnXPathStr(inlineFnXPathStr, prefixTable);
-    	}
-
-    	XPath inlineFnXPath = new XPath(inlineFnXPathStr, srcLocator, xctxt.getNamespaceContext(), 
-    			XPath.SELECT, null);
-    	if (m_vars != null) {
-    		inlineFnXPath.fixupVariables(m_vars, m_globals_size);
-    	}
-
-    	evalResult = inlineFnXPath.execute(xctxt, contextNode, xctxt.getNamespaceContext());
-
-    	SequenceTypeData funcReturnType = xpathInlineFunction.getReturnType();
-    	if (funcReturnType != null) {
-    		try {
-    			evalResult = SequenceTypeSupport.castXdmValueToAnotherType(evalResult, null, funcReturnType, null);
-    			if (evalResult == null) {
-    				throw new TransformerException("XTTE0505 : An item type of result of dynamic function call $"+ m_funcRefVarName + ", "
-    						                                                                         + "doesn't match an expected type.", srcLocator);  
-    			}
-    		}
-    		catch (TransformerException ex) {
-    			throw new TransformerException("XTTE0505 : An item type of result of dynamic function call $"+ m_funcRefVarName + ", "
-    					                                                                             + "doesn't match an expected type.", srcLocator);  
-    		}
-    	}
-
-    	Set<QName> keysOfArgVariables = functionParamAndArgMap.keySet();    	
-    	Iterator<QName> iter = keysOfArgVariables.iterator();    	
-    	while (iter.hasNext()) {
-    		QName key = iter.next();
-    		inlineFunctionVarMap.remove(key);
-    	}
-    	
-    	return evalResult;
-	}
-    
     /**
      * Method definition to lookup an XDM map entry's value for the specified key.
      * 
diff --git a/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java b/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java
index c193b7fc2..16386aa95 100644
--- a/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java
+++ b/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java
@@ -356,5 +356,9 @@ public class XSL3ConstructorOrExtensionFunction extends Function
     else
       return m_extensionName;
   }
+  
+  public Vector getArgVector() {
+	 return m_argVec;  
+  }
 
 }
diff --git a/src/main/java/org/apache/xpath/functions/XSL3FunctionService.java b/src/main/java/org/apache/xpath/functions/XSL3FunctionService.java
index ef4cf3faf..60994ec4d 100644
--- a/src/main/java/org/apache/xpath/functions/XSL3FunctionService.java
+++ b/src/main/java/org/apache/xpath/functions/XSL3FunctionService.java
@@ -24,7 +24,13 @@ import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.Vector;
 
 import javax.xml.XMLConstants;
@@ -33,6 +39,7 @@ import javax.xml.transform.TransformerException;
 
 import org.apache.xalan.templates.Constants;
 import org.apache.xalan.templates.ElemFunction;
+import org.apache.xalan.templates.ElemParam;
 import org.apache.xalan.templates.ElemTemplate;
 import org.apache.xalan.templates.ElemTemplateElement;
 import org.apache.xalan.templates.StylesheetRoot;
@@ -54,9 +61,14 @@ import org.apache.xpath.XPathContext;
 import org.apache.xpath.axes.SelfIteratorNoPredicate;
 import org.apache.xpath.compiler.FunctionTable;
 import org.apache.xpath.compiler.Keywords;
+import org.apache.xpath.composite.SequenceTypeData;
+import org.apache.xpath.composite.SequenceTypeSupport;
+import org.apache.xpath.composite.XPathExprFuncCallExtendedArg;
 import org.apache.xpath.composite.XPathNamedFunctionReference;
+import org.apache.xpath.objects.InlineFunctionParameter;
 import org.apache.xpath.objects.ResultSequence;
 import org.apache.xpath.objects.XObject;
+import org.apache.xpath.objects.XPathInlineFunction;
 import org.apache.xpath.types.XSBase64Binary;
 import org.apache.xpath.types.XSByte;
 import org.apache.xpath.types.XSGDay;
@@ -182,27 +194,120 @@ public class XSL3FunctionService {
     				}
 
     				TemplateList templateList = stylesheetRoot.getTemplateListComposed();
-
-    				int argCount = funcObj.getArgCount();
-    				ElemTemplate elemTemplate = templateList.getXslFunction(new QName(funcNamespace, funcName), argCount);
+    				
+    				Vector argVector = funcObj.getArgVector();
+    				int xslFuncArgCount = 0;
+    				ResultSequence xslFuncArgSequence = new ResultSequence();
+    				List<String> funcExtArgStrList = null;
+    				for (int idx = 0; idx < argVector.size(); idx++) {
+    					Expression argExpr = (Expression)(argVector.elementAt(idx));
+    					if (!(argExpr instanceof XPathExprFuncCallExtendedArg)) {
+    						XObject xslFuncArgVal = null;
+    						if (!(argExpr instanceof XPathNamedFunctionReference)) { 
+    							xslFuncArgVal = argExpr.execute(xctxt);
+    						}
+    						else {
+    							xslFuncArgVal = (XPathNamedFunctionReference)argExpr; 	
+    						}
+    						xslFuncArgSequence.add(xslFuncArgVal);
+    						xslFuncArgCount++;	
+    					}
+    					else {    						    						
+    						XPathExprFuncCallExtendedArg xpathExprFuncCallExtendedArg = (XPathExprFuncCallExtendedArg)argExpr;
+    						funcExtArgStrList = xpathExprFuncCallExtendedArg.getFunctionArgXPathExprStrList();
+    					}
+    				}
+    				
+    				ElemTemplate elemTemplate = templateList.getXslFunction(new QName(funcNamespace, funcName), xslFuncArgCount);
 
     				if ((elemTemplate != null) && (elemTemplate instanceof ElemFunction)) {
-    					// Evaluate XSL stylesheet function call
-    					ResultSequence argSequence = new ResultSequence();
-    					for (int idx = 0; idx < funcObj.getArgCount(); idx++) {
-    						Expression argExpr = funcObj.getArg(idx);
-    						XObject argVal = null;
-    						if (!(argExpr instanceof XPathNamedFunctionReference)) { 
-    						    argVal = argExpr.execute(xctxt);
-    					    }
-    					    else {
-    					        argVal = (XPathNamedFunctionReference)argExpr; 	
-    					    }
+    					// Evaluate XSL stylesheet function call    					
+    					ElemFunction elemFunction = (ElemFunction)elemTemplate;
+    					
+    					evalResult = elemFunction.evaluateXslFunction(transformerImpl, xslFuncArgSequence);
+    					
+    					if ((evalResult instanceof XPathNamedFunctionReference) && (funcExtArgStrList != null)) {
+    					   XPathNamedFunctionReference xpathNamedFunctionReference = (XPathNamedFunctionReference)evalResult;    					   
+    					   String localName = xpathNamedFunctionReference.getFuncName();
+    					   String namespace = xpathNamedFunctionReference.getFuncNamespace();
+    					   Short arity = xpathNamedFunctionReference.getArity();    					   
+    					   if ((int)arity == funcExtArgStrList.size()) {
+    						  if ((FunctionTable.XPATH_BUILT_IN_FUNCS_NS_URI).equals(namespace) || (FunctionTable.XPATH_BUILT_IN_MATH_FUNCS_NS_URI).equals(namespace) ||
+    							  (FunctionTable.XPATH_BUILT_IN_MAP_FUNCS_NS_URI).equals(namespace) || (FunctionTable.XPATH_BUILT_IN_ARRAY_FUNCS_NS_URI).equals(namespace)) {
+    							  FunctionTable funcTable = xctxt.getFunctionTable();
+    							  Object funcId = funcTable.getFunctionId(localName);
+    							  if (funcId != null) {
+    								 Function function = funcTable.getFunction(Integer.valueOf(funcId.toString()));
+    								 List<Short> funcDefinedArity = Arrays.asList(function.getDefinedArity());
+    								 if (funcDefinedArity.contains(arity)) {
+    									for (int idx = 0; idx < funcExtArgStrList.size(); idx++) {
+    									   String xpathExprStr = funcExtArgStrList.get(idx);
+    									   XPath argXPath = new XPath(xpathExprStr, srcLocator, xctxt.getNamespaceContext(), XPath.SELECT, null);    									   
+    									   try {
+											  function.setArg(argXPath.getExpression(), idx);
+										   } 
+    									   catch (WrongNumberArgsException ex) {
+											  // NO OP
+										   }    									
+    									}
+    									
+    									evalResult = function.execute(xctxt);
+    								 }
+    								 else {
+    									throw new TransformerException("XPTY0004 : The function arity value specified in an XPath named "
+    											                                         + "function reference is " + arity + ", but the corresponding "
+    											                                         + "XPath function {" + namespace + "}" + localName + " doesn't allow this arity.", srcLocator);  
+    								 }
+    							  }
+    							  else {
+    								  throw new TransformerException("XPTY0004 : The function {" + namespace + "}" + localName + " referred "
+    								  		                                                     + "within an XPath expression is not found.", srcLocator); 
+    							  }
+    						  }
+    					   }
+    					   else {
+    						  throw new TransformerException("XPTY0004 : The number of arguments provided during an XPath function call {" + namespace + "}" + localName 
+    								                                                    + " is " + funcExtArgStrList.size() + ", but the corresponding XPath named function "
+    								                                                    + "reference specifies the function arity value as " + arity + ".", srcLocator); 
+    					   }
+    					}
+    					else if ((evalResult instanceof XPathInlineFunction) && (funcExtArgStrList != null)) {
+    						int paramIdx = 0;    						
+    						Map<QName, XObject> xpathVarMap = xctxt.getXPathVarMap();    						
+    						for (ElemTemplateElement elem = elemFunction.getFirstChildElem(); elem != null; 
+    								                                                               elem = elem.getNextSiblingElem()) {
+    							if (elem.getXSLToken() == Constants.ELEMNAME_PARAMVARIABLE) {
+    								ElemParam elemParam = (ElemParam)elem;
+    								QName paramName = elemParam.getName();
+    								XObject argValue = xslFuncArgSequence.item(paramIdx);
+    								xpathVarMap.put(paramName, argValue);
+    								paramIdx++;
+    							}
+    							else {
+    								break; 
+    							}
+    						}
+    						
+    						XPathInlineFunction xpathInlineFunction = (XPathInlineFunction)evalResult;
     						
-    						argSequence.add(argVal);
+    						List<String> xpathInlineFuncArgList = new ArrayList<String>(); 
+    						for (int idx = 0; idx < funcExtArgStrList.size(); idx++) {
+    							String xpathExprStr = funcExtArgStrList.get(idx);								
+    							xpathInlineFuncArgList.add(xpathExprStr);    							
+    						}
+    						
+    						List<XMLNSDecl> prefixTable = null;
+					    	ElemTemplateElement elemTemplateElement = (ElemTemplateElement)xctxt.getNamespaceContext();
+
+					    	if (elemTemplateElement != null) {
+					    		prefixTable = (List<XMLNSDecl>)elemTemplateElement.getPrefixTable();
+					    	}
+					    						    	
+					        // REVISIT, for the first null argument & an argument 0
+    						evalResult = evaluateXPathInlineFunction(xpathInlineFunction, xpathInlineFuncArgList, 
+                                                                     xctxt, prefixTable, null, 0, 
+                                                                     ((Expression)xpathExpr).getXPathVarList(), null);    						
     					}
-
-    					evalResult = ((ElemFunction)elemTemplate).evaluateXslFunction(transformerImpl, argSequence);
     					
     					return evalResult;
     				}    				
@@ -1025,6 +1130,155 @@ public class XSL3FunctionService {
        return result;
     }
     
+    /**
+     * Method definition to evaluate an XPath inline function expression.
+     * 
+     * @param xpathInlineFunction			        An XPath compiled inline function reference object		
+     * @param argList                               A list of XPath string values for argument information of 
+     *                                              inline function reference.
+     * @param xctxt									An XPath context object                                              
+     * @param prefixTable                           An XML prefix table list object reference containing
+     *                                              an XSL context namespace binding information.
+     * @param varVector                             Collection of variable names within an XSL current evaluation 
+     *                                              context.                                              
+     * @param varGlobalSize                         An integer value to resolve variable names within an XSL
+     *                                              current evaluation context. 
+     * @param xpathVarList                          List of variable names to support resolving XSL run-time
+     *                                              XPath expression evaluation.
+     * @param xslDynFuncCallVarName                 If this method is called to evaluate an XPath dynamic 
+     *                                              function call, this argument contains name of the variable
+     *                                              referring to an XPath function that will be called.
+     * 
+     * @return									    The result of evaluation of an XPath inline function expression.
+     * @throws TransformerException
+     */
+    public XObject evaluateXPathInlineFunction(XPathInlineFunction xpathInlineFunction, List<String> argList, 
+    		                                   XPathContext xctxt, List<XMLNSDecl> prefixTable, Vector varVector, 
+    		                                   int varGlobalSize, List<QName> xpathVarList, String xslDynFuncCallVarName) throws TransformerException {
+    	
+    	XObject evalResult = null;
+    	
+    	Map<QName, XObject> inlineFunctionVarMap = xctxt.getXPathVarMap();
+
+    	SourceLocator srcLocator = xctxt.getSAXLocator();
+
+    	final int contextNode = xctxt.getCurrentNode(); 
+
+    	String inlineFnXPathStr = xpathInlineFunction.getFuncBodyXPathExprStr();
+    	List<InlineFunctionParameter> funcParamList = xpathInlineFunction.getFuncParamList();           
+
+    	int argCount1 = argList.size();
+
+    	if (argCount1 != funcParamList.size()) {
+    		throw new javax.xml.transform.TransformerException("XPTY0004 : Number of arguments required for "
+																		    				+ "XPath dynamic function call is " + funcParamList.size() + ". "
+																		    				+ "Arguments provided : " + argCount1 + ".", srcLocator);    
+    	}	           	           
+
+    	Map<QName, XObject> functionParamAndArgMap = new HashMap<QName, XObject>();
+
+    	for (int idx = 0; idx < funcParamList.size(); idx++) {
+    		InlineFunctionParameter funcParam = funcParamList.get(idx);                                                         
+
+    		String argXPathStr = argList.get(idx);
+
+    		if (prefixTable != null) {
+    			argXPathStr = XslTransformEvaluationHelper.replaceNsUrisWithPrefixesOnXPathStr(argXPathStr, prefixTable);
+    		}
+
+    		XPath argXPath = new XPath(argXPathStr, srcLocator, xctxt.getNamespaceContext(), XPath.SELECT, null);
+    		if (varVector != null) {
+    			argXPath.fixupVariables(varVector, varGlobalSize);
+    		}
+
+    		XObject argValue = argXPath.execute(xctxt, contextNode, xctxt.getNamespaceContext());
+
+    		String funcParamName = funcParam.getParamName();
+    		SequenceTypeData paramType = funcParam.getParamType();
+
+    		if (paramType != null) {
+    			try {
+    				argValue = SequenceTypeSupport.castXdmValueToAnotherType(argValue, null, paramType, null);                     
+    				if (argValue == null) {
+    					if (xslDynFuncCallVarName != null) {
+    					    throw new TransformerException("XTTE0505 : An item type of argument at position " + (idx + 1) + " of XPath dynamic "
+			    							                                              + "function call $" + xslDynFuncCallVarName + ", "
+			    							                                              + "doesn't match an expected type.", srcLocator);
+    					}
+    					else {
+    						throw new TransformerException("XTTE0505 : An item type of argument at position " + (idx + 1) + " of an XPath "
+                                                                                          + "function call, doesn't match an expected type.", srcLocator);
+    					}
+    				}
+    			}
+    			catch (TransformerException ex) {
+    				if (xslDynFuncCallVarName != null) {
+					    throw new TransformerException("XTTE0505 : An item type of argument at position " + (idx + 1) + " of XPath dynamic "
+		    							                                              + "function call $" + xslDynFuncCallVarName + ", "
+		    							                                              + "doesn't match an expected type.", srcLocator);
+					}
+					else {
+						throw new TransformerException("XTTE0505 : An item type of argument at position " + (idx + 1) + " of an XPath "
+                                                                                      + "function call, doesn't match an expected type.", srcLocator);
+					} 
+    			}
+    		}
+
+    		xpathVarList.add(new QName(funcParamName));
+
+    		functionParamAndArgMap.put(new QName(funcParamName), argValue);
+    	}
+
+    	inlineFunctionVarMap.putAll(functionParamAndArgMap);
+
+    	if (prefixTable != null) {
+    		inlineFnXPathStr = XslTransformEvaluationHelper.replaceNsUrisWithPrefixesOnXPathStr(inlineFnXPathStr, prefixTable);
+    	}
+
+    	XPath inlineFnXPath = new XPath(inlineFnXPathStr, srcLocator, xctxt.getNamespaceContext(), XPath.SELECT, null);
+    	if (varVector != null) {
+    		inlineFnXPath.fixupVariables(varVector, varGlobalSize);
+    	}
+
+    	evalResult = inlineFnXPath.execute(xctxt, contextNode, xctxt.getNamespaceContext());
+
+    	SequenceTypeData funcReturnType = xpathInlineFunction.getReturnType();
+    	if (funcReturnType != null) {
+    		try {
+    			evalResult = SequenceTypeSupport.castXdmValueToAnotherType(evalResult, null, funcReturnType, null);
+    			if (evalResult == null) {
+    				if (xslDynFuncCallVarName != null) {
+    				    throw new TransformerException("XTTE0505 : An item type of result of dynamic function call $"+ xslDynFuncCallVarName + ", "
+    						                                                                         + "doesn't match an expected type.", srcLocator);
+    				}
+    				else {
+    					throw new TransformerException("XTTE0505 : An item type of result of an XPath function call, doesn't match "
+    							                                                                     + "an expected type.", srcLocator);
+    				}
+    			}
+    		}
+    		catch (TransformerException ex) {
+    			if (xslDynFuncCallVarName != null) {
+				    throw new TransformerException("XTTE0505 : An item type of result of dynamic function call $"+ xslDynFuncCallVarName + ", "
+						                                                                             + "doesn't match an expected type.", srcLocator);
+				}
+				else {
+					throw new TransformerException("XTTE0505 : An item type of result of an XPath function call, doesn't match "
+							                                                                         + "an expected type.", srcLocator);
+				}  
+    		}
+    	}
+
+    	Set<QName> keysOfArgVariables = functionParamAndArgMap.keySet();    	
+    	Iterator<QName> iter = keysOfArgVariables.iterator();    	
+    	while (iter.hasNext()) {
+    		QName key = iter.next();
+    		inlineFunctionVarMap.remove(key);
+    	}
+    	
+    	return evalResult;
+	}
+    
     /**
      * Evaluate the XPath built-in constructor function call.
      */
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/W3CXslTransformTestsUtil.java b/src/test/java/org/apache/xalan/tests/w3c/xslt3/W3CXslTransformTestsUtil.java
index b307040bc..97a136648 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/W3CXslTransformTestsUtil.java
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/W3CXslTransformTestsUtil.java
@@ -97,6 +97,8 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
     
     private static final String EXPECTED_NODE_KIND_ASSERT_ALL_OF = "all-of";
     
+    private static final String EXPECTED_NODE_KIND_ASSERT_ANY_OF = "any-of";
+    
     private static final String EXPECTED_NODE_KIND_ASSERT = "assert";
     
     private static final String EXPECTED_NODE_KIND_ASSERT_XML = "assert-xml";        
@@ -250,8 +252,8 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
     		   StreamSource xsltStreamSrc = new StreamSource(xslStylesheetUriStr);
     		   
     		   try {
-    		      runW3CXSLTTestSuiteXslTransformAndProduceResult(testCaseName, xmlInpDomSource, xsltStreamSrc, 
-    		    		                                          expectedResultElem, elemTestRun, testResultDoc);
+    		      runW3CXSLTTestSuiteXslTransformAndEmitResult(testCaseName, xmlInpDomSource, xsltStreamSrc, 
+    		    		                                                     expectedResultElem, elemTestRun, testResultDoc);
     		   }
     		   catch (Exception ex) {
     			  System.out.println("Test case name : " + testCaseName + ", Exception message : " + ex.getMessage()); 
@@ -311,10 +313,10 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
     }
     
     /**
-     * This method definition runs one W3C XSLT 3.0 test case within a test set, 
-     * on Xalan-J's XSLT 3 implementation.
+     * Method definition to run, one W3C XSLT 3.0 test case within a test set, 
+     * using Xalan-J's XSLT 3 implementation.
      */
-    private void runW3CXSLTTestSuiteXslTransformAndProduceResult(String testCaseName, DOMSource xmlInpDomSource, 
+    private void runW3CXSLTTestSuiteXslTransformAndEmitResult(String testCaseName, DOMSource xmlInpDomSource, 
     		                                                     StreamSource xsltStreamSrc, Element expectedResultElem,  
             													 Element elemTestRun, Document testResultDoc) throws Exception {    	    	
 
@@ -339,6 +341,7 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
     		
     		Node nodeExpected = (expectedResultElem.getFirstChild()).getNextSibling();
     		String expectedNodeKindName = nodeExpected.getNodeName();
+    		
     		if (EXPECTED_NODE_KIND_ERROR.equals(expectedNodeKindName)) {
     			expErrCodeName = ((Element)nodeExpected).getAttribute("code");
     		}
@@ -393,7 +396,24 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
     			else {
     				testCaseExpectedAssertXPathList(elemTestResult, nodeExpected, resultStrWriter);
     		    }
-    		}    		
+    		}
+    		else if (EXPECTED_NODE_KIND_ASSERT_ANY_OF.equals(expectedNodeKindName)) {
+    			Node childNode = nodeExpected.getFirstChild();
+    			while (childNode != null) {
+    				if ((childNode instanceof Element) && EXPECTED_NODE_KIND_ASSERT_XML.equals(((Element)childNode).getNodeName())) {
+    					String xmlStr1 = ((Element)childNode).getTextContent();
+    					String xmlStr2 = resultStrWriter.toString();
+    					if (isTwoXmlHtmlStrEqual(xmlStr1, xmlStr2)) {
+    						elemTestResult.setAttribute("status", "pass");
+    						break;
+    					}
+    					else {
+    						elemTestResult.setAttribute("status", "fail");
+    					}
+    				}    				
+    				childNode = childNode.getNextSibling();
+    			}
+    		}
             else if (EXPECTED_NODE_KIND_ASSERT_XML.equals(expectedNodeKindName)) {
             	Element elemNode = (Element)nodeExpected;
             	String fileName = elemNode.getAttribute(FILE_ATTR);
@@ -407,14 +427,13 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
             		expectedResultStr = elemNode.getTextContent();            		
             	}
 
-            	Document xmlInpDoc1 = m_xmlDocumentBuilder.parse(new ByteArrayInputStream((resultStrWriter.toString()).getBytes()));
-            	String str1 = serializeXmlDomElementNode(xmlInpDoc1);
+            	Document xmlInpDoc1 = m_xmlDocumentBuilder.parse(new ByteArrayInputStream((resultStrWriter.toString()).getBytes()));            	
+            	String xmlHtmlStr1 = serializeXmlDomElementNode(xmlInpDoc1);
 
             	Document xmlInpDoc2 = m_xmlDocumentBuilder.parse(new ByteArrayInputStream((expectedResultStr).getBytes()));
+            	String xmlHtmlStr2 = serializeXmlDomElementNode(xmlInpDoc2);
 
-            	String str2 = serializeXmlDomElementNode(xmlInpDoc2);
-
-            	if (isTwoXmlHtmlStrEqual(str1, str2)) {            		
+            	if (isTwoXmlHtmlStrEqual(xmlHtmlStr1, xmlHtmlStr2)) {            		
             		elemTestResult.setAttribute("status", "pass");
             	}
             	else {
@@ -435,8 +454,9 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
             	}
 
             	Document xmlInpDoc1 = m_xmlDocumentBuilder.parse(new ByteArrayInputStream((resultStrWriter.toString()).getBytes()));
-            	String str1 = serializeXmlDomElementNode(xmlInpDoc1);
-            	StringReader strReader = new StringReader(str1);
+            	String xmlStr1 = serializeXmlDomElementNode(xmlInpDoc1);
+            	
+            	StringReader strReader = new StringReader(xmlStr1);
             	            	
             	XPathFactoryImpl xpathFactory = new XPathFactoryImpl();
             	XPath xpath = xpathFactory.newXPath();
@@ -536,10 +556,12 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
 		transformer.transform(new DOMSource(documentToBeTransformed), new StreamResult(strWriter));
 
 		Document xmlInpDoc1 = m_xmlDocumentBuilder.parse(new ByteArrayInputStream((strWriter.toString()).getBytes()));
-		String str1 = serializeXmlDomElementNode(xmlInpDoc1);
-		String str2 = serializeXmlDomElementNode(expectedResultDoc);
+		
+		String xmlStr1 = serializeXmlDomElementNode(xmlInpDoc1);
+		
+		String xmlStr2 = serializeXmlDomElementNode(expectedResultDoc);
 
-		if (isTwoXmlHtmlStrEqual(str1, str2)) {
+		if (isTwoXmlHtmlStrEqual(xmlStr1, xmlStr2)) {
 			elemTestResult.setAttribute("status", "pass");
 		}
 		else {
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 9d882fc29..aa896f913 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-06-30T12:04:16Z" fail="53" name="as" pass="51" skipped="4" statusUnknown="1" totalRun="109">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:45Z" fail="53" name="as" pass="51" skipped="4" statusUnknown="1" totalRun="109">
    <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 b735d8d5a..91defede0 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-06-30T12:04:19Z" fail="14" name="avt" pass="21" skipped="0" statusUnknown="0" totalRun="35">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:46Z" fail="14" name="avt" pass="21" 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/_match-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml
index b0fd95f43..878e7d233 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-06-30T12:04:20Z" fail="65" name="match" pass="59" skipped="8" statusUnknown="5" totalRun="137">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:47Z" fail="65" name="match" pass="59" skipped="8" statusUnknown="5" totalRun="137">
    <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 df6fef004..4e4f0d62d 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-06-30T12:04:23Z" fail="7" name="select" pass="16" skipped="0" statusUnknown="2" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:47Z" fail="7" name="select" pass="16" skipped="0" statusUnknown="2" totalRun="25">
    <testResult status="pass" testName="select-0101"/>
    <testResult status="pass" testName="select-0102"/>
    <testResult status="fail" testName="select-0201"/>
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 6ce05aa5b..f88d3a0cb 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-06-30T12:04:40Z" fail="7" name="attribute-set" pass="41" skipped="1" statusUnknown="1" totalRun="50">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:53Z" fail="8" name="attribute-set" pass="41" skipped="1" statusUnknown="0" totalRun="50">
    <testResult status="pass" testName="attribute-set-0101"/>
    <testResult status="fail" testName="attribute-set-0102">
       <outResult/>
@@ -6,7 +6,7 @@
    <testResult status="pass" testName="attribute-set-0104"/>
    <testResult status="pass" testName="attribute-set-0105"/>
    <testResult status="skipped" xsltVersion="2.0 only"/>
-   <testResult testName="attribute-set-0106a"/>
+   <testResult status="fail" testName="attribute-set-0106a"/>
    <testResult status="pass" testName="attribute-set-0107"/>
    <testResult status="fail" testName="attribute-set-0108">
       <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 a3957e6f9..05878dd40 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-06-30T12:04:40Z" fail="12" name="character-map" pass="15" skipped="0" statusUnknown="2" totalRun="29">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:53Z" fail="12" name="character-map" pass="15" skipped="0" statusUnknown="2" totalRun="29">
    <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 56c627968..613dac7a4 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,10 +1,10 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-30T12:04:38Z" fail="36" name="function" pass="24" skipped="4" statusUnknown="6" totalRun="70">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:53Z" fail="38" name="function" pass="26" skipped="4" statusUnknown="2" totalRun="70">
    <testResult status="fail" testName="function-0001">
       <outResult/>
    </testResult>
    <testResult status="pass" testName="function-0002"/>
-   <testResult testName="function-0003"/>
-   <testResult status="fail" testName="function-0004"/>
+   <testResult status="pass" testName="function-0003"/>
+   <testResult status="pass" testName="function-0004"/>
    <testResult status="pass" testName="function-0101"/>
    <testResult status="pass" testName="function-0102"/>
    <testResult status="pass" testName="function-0103"/>
@@ -76,7 +76,7 @@
    </testResult>
    <testResult status="fail" testName="function-1007"/>
    <testResult status="fail" testName="function-1009"/>
-   <testResult testName="function-1011"/>
+   <testResult status="fail" testName="function-1011"/>
    <testResult status="pass" testName="function-1012"/>
    <testResult status="fail" testName="function-1013"/>
    <testResult status="fail" testName="function-1014"/>
@@ -86,8 +86,8 @@
          <errTrace>java.lang.RuntimeException: ElemTemplateElement error: Found more than one XSL stylesheet function named: x:test with arity 1</errTrace>
       </outResult>
    </testResult>
-   <testResult testName="function-1017"/>
-   <testResult testName="function-1018"/>
+   <testResult status="fail" testName="function-1017"/>
+   <testResult status="fail" testName="function-1018"/>
    <testResult testName="function-1019"/>
    <testResult status="pass" testName="function-1020"/>
    <testResult status="fail" testName="function-1021">
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 433c79a10..1913fa653 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-06-30T12:04:14Z" fail="3" name="variable" pass="16" skipped="0" statusUnknown="1" totalRun="20">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:44Z" 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 e6e21951b..124944657 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-06-30T12:04:41Z" fail="28" name="axes" pass="173" skipped="0" statusUnknown="0" totalRun="201">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:54Z" fail="28" name="axes" pass="173" 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 cb5882439..1221efa52 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-06-30T12:04:46Z" fail="5" name="castable" pass="4" skipped="0" statusUnknown="0" totalRun="9">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:54Z" 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 1784e02fb..e733d0973 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-06-30T12:04:46Z" fail="0" name="expression" pass="9" skipped="0" statusUnknown="1" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:54Z" 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 7484a965a..bc75f515f 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-06-30T12:04:46Z" fail="2" name="for" pass="1" skipped="0" statusUnknown="1" totalRun="4">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:55Z" 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 fac6846ee..b7ea6bb41 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-06-30T12:04:52Z" fail="6" name="higher-order-functions" pass="18" skipped="0" statusUnknown="1" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:57Z" fail="6" name="higher-order-functions" pass="18" skipped="0" statusUnknown="1" totalRun="25">
    <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 6a518a073..0e9bfe3fc 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-06-30T12:04:48Z" fail="39" name="math" pass="108" skipped="0" statusUnknown="1" totalRun="148">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:56Z" fail="39" name="math" pass="108" skipped="0" statusUnknown="1" totalRun="148">
    <testResult status="pass" testName="math-0101"/>
    <testResult status="fail" testName="math-0102">
       <outResult/>
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 f8f2ea821..4d0b8c835 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-06-30T12:04:51Z" fail="36" name="nodetest" pass="2" skipped="0" statusUnknown="0" totalRun="38">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:57Z" 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 dd5a06d78..164bab238 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-06-30T12:04:51Z" fail="3" name="path" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:57Z" 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 e8d17c4f9..937481c4d 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-06-30T12:04:53Z" fail="7" name="predicate" pass="50" skipped="0" statusUnknown="0" totalRun="57">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:58Z" 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 54e4c2ed8..0f1fc1961 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-06-30T12:06:36Z" fail="0" name="deep-equal" pass="2" skipped="0" statusUnknown="0" totalRun="2">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:39Z" 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 9b2067713..55f36d442 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-06-30T12:06:42Z" fail="33" name="format-number" pass="37" skipped="4" statusUnknown="0" totalRun="74">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:41Z" fail="33" name="format-number" pass="37" skipped="4" statusUnknown="0" totalRun="74">
    <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/_key-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
index a794b0470..0f9a9de8f 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-06-30T12:06:41Z" fail="3" name="key" pass="21" skipped="0" statusUnknown="1" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:40Z" fail="3" name="key" pass="21" skipped="0" statusUnknown="1" totalRun="25">
    <testResult status="pass" testName="key-001"/>
    <testResult status="fail" testName="key-002"/>
    <testResult status="pass" testName="key-003"/>
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 6d817f796..6c8036ffd 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-06-30T12:06:37Z" fail="11" name="position" pass="126" skipped="0" statusUnknown="1" totalRun="138">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:39Z" 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 6dd797804..deaa4f9c3 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-06-30T12:06:40Z" fail="4" name="root" pass="6" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:40Z" fail="4" name="root" pass="6" skipped="0" statusUnknown="0" totalRun="10">
    <testResult status="fail" 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 f308f9e42..edac6844a 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-06-30T12:06:39Z" fail="17" name="analyze-string" pass="36" skipped="5" statusUnknown="0" totalRun="58">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:40Z" fail="17" name="analyze-string" pass="36" skipped="5" statusUnknown="0" totalRun="58">
    <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 997825ae4..13538cbe2 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-06-30T12:04:24Z" fail="29" name="apply-templates" pass="19" skipped="2" statusUnknown="0" totalRun="50">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:47Z" fail="29" name="apply-templates" pass="19" skipped="2" statusUnknown="0" totalRun="50">
    <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 b0e16285c..39288ec0c 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-06-30T12:04:27Z" fail="21" name="attribute" pass="8" skipped="0" statusUnknown="1" totalRun="30">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:48Z" fail="21" name="attribute" pass="8" skipped="0" statusUnknown="1" totalRun="30">
    <testResult status="fail" testName="attribute-0001"/>
    <testResult status="fail" testName="attribute-0002">
       <outResult/>
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 c5f7f7297..036c6a599 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-06-30T12:04:28Z" fail="14" name="call-template" pass="27" skipped="1" statusUnknown="0" totalRun="42">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:48Z" fail="14" name="call-template" pass="27" skipped="1" statusUnknown="0" totalRun="42">
    <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 56af1b534..ac6e9ddfe 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-06-30T12:04:29Z" fail="6" name="choose" pass="17" skipped="0" statusUnknown="1" totalRun="24">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:49Z" fail="6" name="choose" pass="17" 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 06165cc1b..9dd5c99aa 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-06-30T12:04:31Z" fail="43" name="copy" pass="16" skipped="0" statusUnknown="1" totalRun="60">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:50Z" fail="43" name="copy" pass="16" skipped="0" statusUnknown="1" totalRun="60">
    <testResult status="fail" testName="copy-0101"/>
    <testResult status="pass" testName="copy-0102"/>
    <testResult status="fail" testName="copy-0103"/>
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 ff739dc94..5adbf19ca 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-06-30T12:04:36Z" fail="18" name="element" pass="11" skipped="0" statusUnknown="0" totalRun="29">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:53Z" 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 bdd47fc2a..2ac016391 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-06-30T12:04:25Z" fail="27" name="for-each-group" pass="46" skipped="4" statusUnknown="1" totalRun="78">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:47Z" fail="27" name="for-each-group" pass="46" skipped="4" statusUnknown="1" totalRun="78">
    <testResult status="pass" testName="for-each-group-001"/>
    <testResult status="skipped" xsltVersion="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 a6319cafd..600e93a29 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-06-30T12:04:33Z" fail="32" name="iterate" pass="11" skipped="0" statusUnknown="1" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:51Z" fail="32" name="iterate" pass="11" skipped="0" statusUnknown="1" totalRun="44">
    <testResult status="pass" testName="iterate-001"/>
    <testResult status="pass" testName="iterate-002"/>
    <testResult status="pass" testName="iterate-003"/>
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 1bb29f54d..d7ac55322 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-06-30T12:04:34Z" fail="19" name="sequence" pass="7" skipped="0" statusUnknown="1" totalRun="27">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:51Z" fail="19" name="sequence" pass="7" skipped="0" statusUnknown="1" totalRun="27">
    <testResult status="fail" testName="sequence-0101"/>
    <testResult status="fail" testName="sequence-0102"/>
    <testResult status="pass" testName="sequence-0103"/>
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 667db0653..fa7b24a24 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-06-30T12:04:36Z" fail="44" name="sort" pass="35" skipped="0" statusUnknown="1" totalRun="80">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:53Z" fail="44" name="sort" pass="35" skipped="0" statusUnknown="1" totalRun="80">
    <testResult status="pass" testName="sort-001"/>
    <testResult status="pass" testName="sort-002"/>
    <testResult status="fail" testName="sort-003"/>
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 389810de5..8ed757536 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,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-30T12:04:27Z" fail="26" name="try" pass="11" skipped="5" statusUnknown="0" totalRun="42">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:48Z" fail="26" name="try" pass="11" skipped="5" statusUnknown="0" totalRun="42">
    <testResult status="pass" testName="try-001"/>
    <testResult status="fail" testName="try-002">
       <outResult/>
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 206b9725c..5d97be330 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-06-30T12:06:44Z" fail="13" name="xsl-document" pass="12" skipped="0" statusUnknown="0" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:41Z" 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>
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 c1ac6bdb2..5756051ef 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-06-30T12:06:43Z" fail="12" name="regex" pass="33" skipped="0" statusUnknown="0" totalRun="45">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:33:41Z" fail="12" name="regex" pass="33" skipped="0" statusUnknown="0" totalRun="45">
    <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 5149920a7..1178638e2 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-06-30T12:04:54Z" fail="24" name="boolean" pass="88" skipped="0" statusUnknown="0" totalRun="112">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:58Z" fail="24" name="boolean" pass="88" 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 a3fd262ba..5637e9e43 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-06-30T12:04:59Z" fail="47" name="date" pass="37" skipped="0" statusUnknown="1" totalRun="85">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:58Z" fail="47" name="date" pass="37" 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 8ce193297..8848d7a16 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-06-30T12:04:56Z" fail="17" name="node" pass="15" skipped="0" statusUnknown="0" totalRun="32">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:58Z" fail="17" name="node" pass="15" 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 ef5ac2e77..5642d7e25 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-06-30T12:04:56Z" fail="8" name="string" pass="128" skipped="0" statusUnknown="0" totalRun="136">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-07-02T12:31:58Z" 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 e96cb24a0..8683f794f 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-06-30T12:07:05Z" desc="W3C XSLT 3.0 test suite results" fail="791" pass="1364" skipped="38" success="63.01%" totalRun="2225" xslt_processor="Xalan-J XSLT 3.0 development code">
+<testResult dateTime="2025-07-02T12:41:39Z" desc="W3C XSLT 3.0 test suite results" fail="794" pass="1366" skipped="38" success="63.1%" totalRun="2225" xslt_processor="Xalan-J XSLT 3.0 development code">
   <attr>
     <as fail="53" pass="51" skipped="4" success="50.46%" totalRun="109"/>
     <avt fail="14" pass="21" skipped="0" success="60.0%" totalRun="35"/>
@@ -7,9 +7,9 @@
     <select fail="7" pass="16" skipped="0" success="64.0%" totalRun="25"/>
   </attr>
   <decl>
-    <attribute-set fail="7" pass="41" skipped="1" success="84.0%" totalRun="50"/>
+    <attribute-set fail="8" pass="41" skipped="1" success="84.0%" totalRun="50"/>
     <character-map fail="12" pass="15" skipped="0" success="51.72%" totalRun="29"/>
-    <function fail="36" pass="24" skipped="4" success="40.0%" totalRun="70"/>
+    <function fail="38" pass="26" skipped="4" success="42.86%" totalRun="70"/>
     <variable fail="3" pass="16" skipped="0" success="80.0%" totalRun="20"/>
   </decl>
   <expr>


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