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/12/10 17:02:14 UTC

(xalan-java) branch xalan-j_xslt3.0_mvn updated: committing few xalan-j xslt 3.0 implementation improvements

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 6e60cd70d committing few xalan-j xslt 3.0 implementation improvements
6e60cd70d is described below

commit 6e60cd70d6b5b04ef153ec4fdfd0560e3f149377
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Wed Dec 10 22:31:50 2025 +0530

    committing few xalan-j xslt 3.0 implementation improvements
---
 .../xalan/processor/XSLTElementProcessor.java      | 19 +++++++-
 .../org/apache/xalan/processor/XSLTSchema.java     |  2 +-
 .../org/apache/xalan/templates/ElemForEach.java    | 26 ++++++++---
 .../apache/xalan/templates/ElemForEachGroup.java   | 27 +++++++-----
 .../java/org/apache/xalan/templates/ElemSort.java  |  6 +--
 .../org/apache/xalan/xslt/util/StringUtil.java     | 51 +++++++++++++++++++++-
 .../java/org/apache/xpath/compiler/OpCodes.java    | 28 ++++++------
 .../org/apache/xpath/compiler/XPathParser.java     |  8 ++--
 .../xalan/tests/util/XslTransformTestsUtil.java    | 36 +++++++++++++++
 .../tests/w3c/xslt3/W3CXslTransformTestsUtil.java  | 10 +++++
 .../w3c/xslt3/result/attr/_as-test-set_result.xml  |  2 +-
 .../w3c/xslt3/result/attr/_avt-test-set_result.xml | 13 ++----
 .../_disable-output-escaping-test-set_result.xml   |  2 +-
 .../result/attr/_expand-text-test-set_result.xml   |  2 +-
 .../xslt3/result/attr/_match-test-set_result.xml   | 48 ++------------------
 .../xslt3/result/attr/_mode-test-set_result.xml    |  2 +-
 .../xslt3/result/attr/_select-test-set_result.xml  |  8 ++--
 .../xslt3/result/attr/_tunnel-test-set_result.xml  |  2 +-
 .../_xpath-default-namespace-test-set_result.xml   |  2 +-
 .../result/decl/_attribute-set-test-set_result.xml |  2 +-
 .../result/decl/_character-map-test-set_result.xml |  2 +-
 .../result/decl/_function-test-set_result.xml      |  4 +-
 .../xslt3/result/decl/_param-test-set_result.xml   |  2 +-
 .../result/decl/_strip-space-test-set_result.xml   |  2 +-
 .../result/decl/_template-test-set_result.xml      |  2 +-
 .../result/decl/_variable-test-set_result.xml      | 10 +++--
 .../xslt3/result/expr/_axes-test-set_result.xml    |  2 +-
 .../result/expr/_castable-test-set_result.xml      |  2 +-
 .../result/expr/_expression-test-set_result.xml    |  4 +-
 .../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    |  4 +-
 .../result/expr/_nodetest-test-set_result.xml      |  2 +-
 .../xslt3/result/expr/_path-test-set_result.xml    |  2 +-
 .../result/expr/_predicate-test-set_result.xml     | 12 ++---
 .../result/fn/_deep-equal-test-set_result.xml      |  2 +-
 .../result/fn/_format-number-test-set_result.xml   | 14 +++---
 .../result/fn/_json-to-xml-test-set_result.xml     |  2 +-
 .../w3c/xslt3/result/fn/_key-test-set_result.xml   |  2 +-
 .../xslt3/result/fn/_position-test-set_result.xml  |  2 +-
 .../w3c/xslt3/result/fn/_root-test-set_result.xml  |  2 +-
 .../result/fn/_xml-to-json-test-set_result.xml     |  2 +-
 .../insn/_analyze-string-test-set_result.xml       |  4 +-
 .../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 +-
 .../xslt3/result/insn/_message-test-set_result.xml |  6 +--
 .../result/insn/_sequence-test-set_result.xml      |  6 ++-
 .../xslt3/result/insn/_sort-test-set_result.xml    |  6 ++-
 .../w3c/xslt3/result/insn/_try-test-set_result.xml |  2 +-
 .../result/insn/_xsl-document-test-set_result.xml  |  6 +--
 .../misc/_built-in-templates-test-set_result.xml   |  2 +-
 .../xslt3/result/misc/_regex-test-set_result.xml   |  2 +-
 .../xslt3/result/type/_boolean-test-set_result.xml | 16 +++----
 .../xslt3/result/type/_date-test-set_result.xml    |  8 +++-
 .../xslt3/result/type/_node-test-set_result.xml    |  2 +-
 .../xslt3/result/type/_string-test-set_result.xml  |  6 +--
 .../result/w3c_xslt3_testsuite_xalan-j_result.xml  | 22 +++++-----
 63 files changed, 285 insertions(+), 195 deletions(-)

diff --git a/src/main/java/org/apache/xalan/processor/XSLTElementProcessor.java b/src/main/java/org/apache/xalan/processor/XSLTElementProcessor.java
index 8f2b8833a..0ddf39a6a 100644
--- a/src/main/java/org/apache/xalan/processor/XSLTElementProcessor.java
+++ b/src/main/java/org/apache/xalan/processor/XSLTElementProcessor.java
@@ -28,6 +28,7 @@ import javax.xml.transform.TransformerException;
 import org.apache.xalan.res.XSLMessages;
 import org.apache.xalan.res.XSLTErrorResources;
 import org.apache.xalan.templates.ElemTemplateElement;
+import org.apache.xalan.xslt.util.StringUtil;
 import org.apache.xml.utils.IntStack;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -374,9 +375,23 @@ public class XSLTElementProcessor extends ElemTemplateElement
     			}
     			else
     			{
+    				String attrName = attributes.getQName(i);
+    				String attrValue = attributes.getValue(i);
+    				
+    				// Remove any available XPath comments, from an XML 
+    				// attribute value.
+    				if (StringUtil.isStrHasXPathBalancedCommentDelim(attrValue)) {  
+    				   attrValue = StringUtil.removeXPathComments(attrValue);
+    				}
+    				
+    				// Remove AVT references having XPath empty expressions, from 
+    				// XML attribute value.
+    				if (attrDef.getType() == XSLTAttributeDef.T_AVT) {
+    				   attrValue = attrValue.replaceAll("\\{\\s*\\}", "");
+    				}
+    				
     				boolean success = attrDef.setAttrValue(handler, attrUri, attrLocalName,
-    						attributes.getQName(i), attributes.getValue(i),
-    						target);
+    						                                                            attrName, attrValue, target);
     				// Now we only add the element if it passed a validation check
     				if (success)
     					processedDefs.add(attrDef);
diff --git a/src/main/java/org/apache/xalan/processor/XSLTSchema.java b/src/main/java/org/apache/xalan/processor/XSLTSchema.java
index 649c92bc9..035aab2f7 100644
--- a/src/main/java/org/apache/xalan/processor/XSLTSchema.java
+++ b/src/main/java/org/apache/xalan/processor/XSLTSchema.java
@@ -332,7 +332,7 @@ public class XSLTSchema extends XSLTElementDef
     // Optional
     // xsl:for-each-group, xsl:sort 
     XSLTAttributeDef collationAttrOpt = new XSLTAttributeDef(null, "collation", 
-    	                                              XSLTAttributeDef.T_STRING, false, false, XSLTAttributeDef.ERROR);
+    	                                              XSLTAttributeDef.T_AVT, false, true, XSLTAttributeDef.ERROR);
     
     // Optional
     // xsl:sort
diff --git a/src/main/java/org/apache/xalan/templates/ElemForEach.java b/src/main/java/org/apache/xalan/templates/ElemForEach.java
index ae9a89ef1..ec5fa1fc5 100644
--- a/src/main/java/org/apache/xalan/templates/ElemForEach.java
+++ b/src/main/java/org/apache/xalan/templates/ElemForEach.java
@@ -665,7 +665,13 @@ public class ElemForEach extends ElemTemplateElement implements ExpressionOwner
     	for (int idx = 0; idx < sortElemCount; idx++) {
     	    ElemSort elemSort = (ElemSort)m_sortElems.get(idx);    	    
     	    AVT langAvt = elemSort.getLang();
-    	    String collation = elemSort.getCollation();
+    	    
+    	    String collation = null;
+    	    AVT collationAvt = elemSort.getCollation();
+    	    if (collationAvt != null) {
+    	       collation = collationAvt.evaluate(xctxt, sourceNode, xctxt.getNamespaceContext());
+    	    }
+    	    
     	    if ((langAvt != null) || (collation != null)) {
     	    	bool1 = true;
     	    }
@@ -810,12 +816,14 @@ public class ElemForEach extends ElemTemplateElement implements ExpressionOwner
 
     	int nextNode;
     	while (DTM.NULL != (nextNode = sourceNodes.nextNode()))
-    	{
+    	{    		
     		XMLNodeCursorImpl xdmNode = new XMLNodeCursorImpl(nextNode, xctxt);
+    		
     		rSeq.add(xdmNode);
     	}
-
+    	
     	processSequenceOrArray(transformer, xctxt, rSeq);
+    	    
     }
     
   }
@@ -1129,9 +1137,15 @@ public class ElemForEach extends ElemTemplateElement implements ExpressionOwner
 																														   + "the type '" + dataTypeStr + "', specified by XSL sort's "
 																														   + "data-type attribute.", srcLocator); 
 						   }
-					   }						  
+					   }
+					   
+					   int contextNode = xctxt.getCurrentNode();
 
-					   String collation = elemSort.getCollation();				   
+					   String collation = null;
+					   AVT collationAvt = elemSort.getCollation();
+					   if (collationAvt != null) {
+					      collation = collationAvt.evaluate(xctxt, contextNode, xctxt.getNamespaceContext());
+					   }
 
 					   SortKey sortKey = new SortKey(sorkKeyObj, sortOrderStr, collation, caseOrderStr, langStr);
 					   if (collation != null) {
@@ -1166,7 +1180,7 @@ public class ElemForEach extends ElemTemplateElement implements ExpressionOwner
 				   }
 
 				   resetXPathContextForXslSequenceProcessing(resultSeqItem, xctxt);
-			   }		   
+			   }
 		   }
 		   else {
 			   int inpSeqSize = xdmItemList.size();
diff --git a/src/main/java/org/apache/xalan/templates/ElemForEachGroup.java b/src/main/java/org/apache/xalan/templates/ElemForEachGroup.java
index 820bbc855..3868b553d 100644
--- a/src/main/java/org/apache/xalan/templates/ElemForEachGroup.java
+++ b/src/main/java/org/apache/xalan/templates/ElemForEachGroup.java
@@ -116,7 +116,7 @@ public class ElemForEachGroup extends ElemTemplateElement
   /**
    * The "collation" attribute value.
    */
-  private String m_collationUri = null;
+  private AVT m_collationUri = null;
   
   /**
    * An XPathCollationSupport object value. 
@@ -318,7 +318,7 @@ public class ElemForEachGroup extends ElemTemplateElement
    *
    * @param collation   String value for the "collation" attribute.
    */
-  public void setCollation(String collationUri)
+  public void setCollation(AVT collationUri)
   {
 	  m_collationUri = collationUri;   
   }
@@ -328,7 +328,7 @@ public class ElemForEachGroup extends ElemTemplateElement
    *
    * @return   String value of the "collation" attribute.
    */
-  public String getCollation()
+  public AVT getCollation()
   {
       return m_collationUri;
   }
@@ -1423,13 +1423,20 @@ public class ElemForEachGroup extends ElemTemplateElement
   private Object getNormalizedGroupingKeyValue(XPathContext xctxt, XObject groupingKeyValue) throws TransformerException {
       
 	  Object normalizedGroupingKeyValue = null;
+	  
+	  final int contextNode = xctxt.getCurrentNode();
+	  
+	  String collation = null;
+	  if (m_collationUri != null) {
+	     collation = m_collationUri.evaluate(xctxt, contextNode, xctxt.getNamespaceContext());
+	  }
       
       if (groupingKeyValue instanceof XString) {
-    	  if (m_collationUri == null) {
+    	  if (collation == null) {
     		 normalizedGroupingKeyValue = groupingKeyValue.str();   
     	  }
-    	  else {
-    	     normalizedGroupingKeyValue = new StringWithCollation(groupingKeyValue.str(), m_collationUri, m_xpathCollationSupport);
+    	  else {    		  
+    	     normalizedGroupingKeyValue = new StringWithCollation(groupingKeyValue.str(), collation, m_xpathCollationSupport);
     	  }
       }
       else if (groupingKeyValue instanceof XSQName) {
@@ -1439,11 +1446,11 @@ public class ElemForEachGroup extends ElemTemplateElement
     	  normalizedGroupingKeyValue = localPart + ((namespaceUri == null) ? "" : ":" + namespaceUri); 
       }
       else if (groupingKeyValue instanceof XSString) {
-    	  if (m_collationUri == null) {
+    	  if (collation == null) {
     		 normalizedGroupingKeyValue = ((XSString)groupingKeyValue).stringValue();   
     	  }
     	  else {
-             normalizedGroupingKeyValue = new StringWithCollation(((XSString)groupingKeyValue).stringValue(), m_collationUri, m_xpathCollationSupport);
+             normalizedGroupingKeyValue = new StringWithCollation(((XSString)groupingKeyValue).stringValue(), collation, m_xpathCollationSupport);
     	  }
       }
       else if (groupingKeyValue instanceof XNumber) {
@@ -1495,11 +1502,11 @@ public class ElemForEachGroup extends ElemTemplateElement
       }
       else if (groupingKeyValue instanceof ResultSequence) {
     	  if (m_collationUri == null) {
-    		  m_collationUri = XPathCollationSupport.UNICODE_CODEPOINT_COLLATION_URI;   
+    		  collation = XPathCollationSupport.UNICODE_CODEPOINT_COLLATION_URI;   
     	  }
     	  
     	  normalizedGroupingKeyValue = new ForEachGroupCompositeGroupingKey(xctxt, (ResultSequence)groupingKeyValue, 
-    			                                                									m_collationUri, m_xpathCollationSupport);
+    			                                                                                                 collation, m_xpathCollationSupport);
       }
       else {
           // Any other data type for grouping key, is treated as string
diff --git a/src/main/java/org/apache/xalan/templates/ElemSort.java b/src/main/java/org/apache/xalan/templates/ElemSort.java
index 613d223e4..f84055f99 100644
--- a/src/main/java/org/apache/xalan/templates/ElemSort.java
+++ b/src/main/java/org/apache/xalan/templates/ElemSort.java
@@ -277,14 +277,14 @@ public class ElemSort extends ElemTemplateElement
    * This class field, represents an optional collation URI specified 
    * with xsl:sort instruction.
    */
-  private String m_collation = null;
+  private AVT m_collation = null;
   
   /**
    * Get the value of xsl:sort's collation URI.
    * 
    * @return				Collation URI value
    */
-  public String getCollation() {
+  public AVT getCollation() {
 	 return m_collation; 
   }
   
@@ -293,7 +293,7 @@ public class ElemSort extends ElemTemplateElement
    * 
    * @param collation				Collation URI value
    */
-  public void setCollation(String collation) {
+  public void setCollation(AVT collation) {
 	 m_collation = collation; 
   }
   
diff --git a/src/main/java/org/apache/xalan/xslt/util/StringUtil.java b/src/main/java/org/apache/xalan/xslt/util/StringUtil.java
index b9c96b1ca..a0e2b3bfb 100644
--- a/src/main/java/org/apache/xalan/xslt/util/StringUtil.java
+++ b/src/main/java/org/apache/xalan/xslt/util/StringUtil.java
@@ -51,11 +51,11 @@ public class StringUtil {
     }
     
     /**
-     * Method definition to check, whether the supplied string value 
+     * Method definition, to check whether the supplied string value 
      * has balanced XPath comment delimiters. XPath comments have
      * lexical form (: comment text :)
      */
-    public static boolean isStrHasBalancedXPathCommentDelim(String strValue) {
+    public static boolean isStrHasXPathBalancedCommentDelim(String strValue) {
         
         boolean result = true;
         
@@ -95,6 +95,53 @@ public class StringUtil {
         return result; 
     }
     
+    /**
+     * Method definition, to remove XPath comments from the
+     * supplied string value.
+     * 
+     * This method handles occurrences of XPath nested comments,
+     * as well, as required by XPath 3.1 spec.
+     * 
+     * @param strValue				  The supplied string value
+     * @return                        String value, after the XPath 
+     *                                comments have been removed.  
+     */
+    public static String removeXPathComments(String strValue) {
+    	
+    	String result = null;
+
+    	String str1 = strValue;
+
+    	str1 = str1.replaceAll("\\(:", "\u0002");
+    	str1 = str1.replaceAll(":\\)", "\u0003");
+
+    	StringBuilder strBuilder = new StringBuilder();
+    	int level = 0;
+    	int strLength = str1.length();
+    	for (int idx = 0; idx < strLength; idx++) {
+    		char chr = str1.charAt(idx);
+    		if (chr == '\u0002') {
+    			level++;  
+    		}
+    		else if (chr == '\u0003') {
+    			if (level > 0) {
+    				level--;  
+    			}
+    		}
+    		else if (level == 0) {
+    			strBuilder.append(chr); 
+    		}
+    	}
+
+    	if (level <= 0) {
+    		str1 = strBuilder.toString(); 
+    	}
+
+    	result = str1;
+
+    	return result;
+    }
+    
     /**
      * Method definition, to get the string contents from a URL 
      * resource.
diff --git a/src/main/java/org/apache/xpath/compiler/OpCodes.java b/src/main/java/org/apache/xpath/compiler/OpCodes.java
index ea23eb7d5..9d5df426c 100644
--- a/src/main/java/org/apache/xpath/compiler/OpCodes.java
+++ b/src/main/java/org/apache/xpath/compiler/OpCodes.java
@@ -643,54 +643,54 @@ public class OpCodes
   public static final int AXES_END_TYPES = 53;
   
   /**
-   * Class definition, specifying XPath 3.1 specific op 
-   * codes.
+   * Class definition, specifying Xalan-J's XPath 3.1 
+   * op codes.
    */
   public class XPath3OpCodes {
 	  /**
-	   * For XPath 3.1 "to" range expressions.
+	   * Represents XPath 3.1 "to" range expressions.
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_TO = 100;
 
 	  /**
-	   * For XPath 3.1 value comparison operator "eq".
+	   * Represents XPath 3.1 value comparison operator "eq".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_VC_EQUALS = 101;
 
 	  /**
-	   * For XPath 3.1 value comparison operator "ne".
+	   * Represents XPath 3.1 value comparison operator "ne".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_VC_NOT_EQUALS = 102;
 
 	  /**
-	   * For XPath 3.1 value comparison operator "lt".
+	   * Represents XPath 3.1 value comparison operator "lt".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_VC_LT = 103;
 
 	  /**
-	   * For XPath 3.1 value comparison operator "gt".
+	   * Represents XPath 3.1 value comparison operator "gt".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_VC_GT = 104;
 
 	  /**
-	   * For XPath 3.1 value comparison operator "le".
+	   * Represents XPath 3.1 value comparison operator "le".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_VC_LE = 105;
 
 	  /**
-	   * For XPath 3.1 value comparison operator "ge".
+	   * Represents XPath 3.1 value comparison operator "ge".
 	   * 
 	   * @xsl.usage advanced
 	   */
@@ -711,35 +711,35 @@ public class OpCodes
 	  public static final int OP_SEQUENCE_CONSTRUCTOR_EXPR = 113;
 
 	  /**
-	   * For XPath 3.1 string concatenation operator "||".
+	   * Represents XPath 3.1 string concatenation operator "||".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_STR_CONCAT = 114;
 
 	  /**
-	   * For XPath 3.1 node concatenation operator "is".
+	   * Represents XPath 3.1 node concatenation operator "is".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_IS = 115;
 
 	  /**
-	   * For XPath 3.1 node concatenation operator "<<".
+	   * Represents XPath 3.1 node concatenation operator "<<".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_NC_PRECEDE = 116;
 
 	  /**
-	   * For XPath 3.1 node concatenation operator ">>".
+	   * Represents XPath 3.1 node concatenation operator ">>".
 	   * 
 	   * @xsl.usage advanced
 	   */
 	  public static final int OP_NC_FOLLOWS = 117;
 
 	  /**
-	   * For XPath 3.1 simple map operator '!'.
+	   * Represents XPath 3.1 simple map operator '!'.
 	   * 
 	   * @xsl.usage advanced
 	   */
diff --git a/src/main/java/org/apache/xpath/compiler/XPathParser.java b/src/main/java/org/apache/xpath/compiler/XPathParser.java
index 78919e513..9e0ba6e6b 100644
--- a/src/main/java/org/apache/xpath/compiler/XPathParser.java
+++ b/src/main/java/org/apache/xpath/compiler/XPathParser.java
@@ -378,10 +378,10 @@ public class XPathParser
 
     Lexer lexer = new Lexer(compiler, namespaceContext, this);
     
-    // Remove XPath expression comments from the supplied expression,
-    // before parse of an XPath expression.
-    if (StringUtil.isStrHasBalancedXPathCommentDelim(expression)) {
-       expression = expression.replaceAll("\\(:.*:\\)", "");
+    // Remove any available XPath comments, from an XPath 
+    // expression string.
+    if (StringUtil.isStrHasXPathBalancedCommentDelim(expression)) {    	
+       expression = StringUtil.removeXPathComments(expression);
     }
     else {
        error(XPATHErrorResources.ER_UNCLOSED_XPATH_COMMENT, new Object[]{});
diff --git a/src/test/java/org/apache/xalan/tests/util/XslTransformTestsUtil.java b/src/test/java/org/apache/xalan/tests/util/XslTransformTestsUtil.java
index a8f2f9df5..783ff10da 100644
--- a/src/test/java/org/apache/xalan/tests/util/XslTransformTestsUtil.java
+++ b/src/test/java/org/apache/xalan/tests/util/XslTransformTestsUtil.java
@@ -588,6 +588,42 @@ public class XslTransformTestsUtil extends FileComparisonUtil {
         return result;
     }
     
+    /**
+     * When running W3C XSLT 3.0 test suite, check whether the test case 
+     * is specified to test XSLT version backward compatibility.
+     *  
+     * @param testCaseNode
+     * @return						Boolean value true or false						
+     */
+    protected boolean isBackwardCompatibilityTestCase(Node testCaseNode) {
+    	
+        boolean result = false;
+        
+        NodeList nodeList = testCaseNode.getChildNodes();
+        int nodeListLength = nodeList.getLength();
+        for (int idx = 0; idx < nodeListLength; idx++) {
+     	  Node node = nodeList.item(idx);
+     	  if (node.getNodeType() == Node.ELEMENT_NODE) {
+     		 Element elemNode = (Element)node;
+     		 String elemName = elemNode.getLocalName();
+     		 if ("dependencies".equals(elemName)) {
+     			 NodeList nodeList1 = elemNode.getElementsByTagName("feature");
+     			 if (nodeList1.getLength() == 1) {
+     				 Element elem1 = (Element)(nodeList1.item(0));
+     				 String value = elem1.getAttribute("value");
+     				 if ("backwards_compatibility".equals(value)) {
+     					result = true;
+     					
+     					break; 
+     				 }
+     			 }
+     		 }
+     	  }
+        }
+        
+        return result;
+    }
+    
     /**
      * When running W3C XSLT 3.0 test suite, check whether the test case 
      * is written for schema aware feature.
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 411d5cb68..cc79cde31 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
@@ -184,6 +184,16 @@ public class W3CXslTransformTestsUtil extends XslTransformTestsUtil {
     			  
     			  continue; 
     		   }
+    		   else if (isBackwardCompatibilityTestCase(node)) {
+     			  // We skip running XSLT backward compatibility test cases
+     			  Element elemTestResult = testResultDoc.createElement("testResult");
+     			  elemTestResult.setAttribute("testName", testCaseName);
+  			      elemTestResult.setAttribute("status", "skipped");
+  			      elemTestResult.setAttribute("feature", "backwards_compatibility");
+     			  elemTestRun.appendChild(elemTestResult);
+     			  
+     			  continue; 
+     		   }
     		   else if (isXslSchemaAwareFeatureTestCase(node)) {
     			   // We skip running XSLT 3.0 schema aware feature test cases
     			   Element elemTestResult = testResultDoc.createElement("testResult");
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 e244e31bb..f4d022bba 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-11-13T16:37:29Z" fail="31" name="as" pass="80" skipped="93" statusUnknown="0" totalRun="111">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:19Z" fail="31" name="as" pass="80" skipped="93" statusUnknown="0" totalRun="111">
    <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 74717ae25..d424ce259 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-12-09T16:29:41Z" fail="7" name="avt" pass="28" skipped="0" statusUnknown="0" totalRun="35">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:20Z" fail="4" name="avt" pass="30" skipped="1" statusUnknown="0" totalRun="34">
    <testResult status="pass" testName="avt-0101"/>
    <testResult status="pass" testName="avt-0201"/>
    <testResult status="pass" testName="avt-0202"/>
@@ -14,8 +14,8 @@
    <testResult status="fail" testName="avt-1001"/>
    <testResult status="pass" testName="avt-1101"/>
    <testResult status="pass" testName="avt-1201"/>
-   <testResult status="fail" testName="avt-1202"/>
-   <testResult status="fail" testName="avt-1203"/>
+   <testResult status="pass" testName="avt-1202"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="avt-1203"/>
    <testResult status="pass" testName="avt-1204"/>
    <testResult status="pass" testName="avt-1205"/>
    <testResult status="pass" testName="avt-1206"/>
@@ -30,12 +30,7 @@
    <testResult status="pass" testName="avt-1901"/>
    <testResult status="pass" testName="avt-2001"/>
    <testResult status="pass" testName="avt-2101"/>
-   <testResult status="fail" testName="avt-2102">
-      <outResult>
-         <errTrace>Empty expression!</errTrace>
-         <errTrace>java.lang.NullPointerException</errTrace>
-      </outResult>
-   </testResult>
+   <testResult status="pass" testName="avt-2102"/>
    <testResult status="fail" testName="avt-2103">
       <outResult>
          <errTrace>Empty expression!</errTrace>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_disable-output-escaping-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_disable-output-escaping-test-set_result.xml
index fcaf35a14..b860484f5 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_disable-output-escaping-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_disable-output-escaping-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-17T13:21:01Z" fail="5" name="disable-output-escaping" pass="22" skipped="5" statusUnknown="0" totalRun="27">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:35Z" fail="5" name="disable-output-escaping" pass="22" skipped="5" statusUnknown="0" totalRun="27">
    <testResult status="pass" testName="doe-0176"/>
    <testResult status="pass" testName="doe-0176a"/>
    <testResult status="pass" testName="doe-0176b"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
index 8558b36bb..21e34d8f4 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:43Z" fail="8" name="expand-text" pass="51" skipped="3" statusUnknown="0" totalRun="59">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:34Z" fail="8" name="expand-text" pass="51" skipped="3" statusUnknown="0" totalRun="59">
    <testResult status="pass" testName="cvt-001"/>
    <testResult status="pass" testName="cvt-002"/>
    <testResult status="pass" testName="cvt-003"/>
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 eb7972a50..5f5abfdc7 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-12-09T16:29:41Z" fail="86" name="match" pass="96" skipped="112" statusUnknown="0" totalRun="182">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:20Z" fail="84" name="match" pass="98" skipped="112" statusUnknown="0" totalRun="182">
    <testResult status="pass" testName="match-001"/>
    <testResult status="pass" testName="match-002"/>
    <testResult status="pass" testName="match-003"/>
@@ -475,50 +475,8 @@ org.apache.xpath.XPathProcessorException: CONTINUE_AFTER_FATAL_ERROR</errTrace>
    <testResult feature="schema_aware" status="skipped" testName="match-243"/>
    <testResult feature="schema_aware" status="skipped" testName="match-244"/>
    <testResult status="pass" testName="match-245"/>
-   <testResult status="fail" testName="match-246a">
-      <outResult>
-         <errTrace>A node test that matches either NCName:* or QName was expected.</errTrace>
-         <errTrace>Extra illegal tokens: ')', '/', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')', '[', 'true', '(', ')', ']', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')', '[', 'true', '(', ')', '(', ')', ']'</errTrace>
-         <errTrace>A node test that matches either NCName:* or QName was expected.</errTrace>
-         <errTrace>Extra illegal tokens: ')', 'letters'</errTrace>
-         <errTrace>A node test that matches either NCName:* or QName was expected.</errTrace>
-         <errTrace>Extra illegal tokens: ')', 'letters'</errTrace>
-         <errTrace>Unknown nodetype: (</errTrace>
-         <errTrace>Extra illegal tokens: '(', '(', ')', ')', 'letters'</errTrace>
-         <errTrace>Expected ), but found: ::</errTrace>
-         <errTrace>org.xml.sax.SAXException: CONTINUE_AFTER_FATAL_ERROR
-org.apache.xpath.XPathProcessorException: CONTINUE_AFTER_FATAL_ERROR</errTrace>
-      </outResult>
-   </testResult>
-   <testResult status="fail" testName="match-246b">
-      <outResult>
-         <errTrace>A node test that matches either NCName:* or QName was expected.</errTrace>
-         <errTrace>Extra illegal tokens: ')', '/', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')', '[', 'true', '(', ')', ']', '(', ')'</errTrace>
-         <errTrace>Unknown nodetype: letters</errTrace>
-         <errTrace>Extra illegal tokens: 'letters', '(', ')', '[', 'true', '(', ')', '(', ')', ']'</errTrace>
-         <errTrace>A node test that matches either NCName:* or QName was expected.</errTrace>
-         <errTrace>Extra illegal tokens: ')', 'letters'</errTrace>
-         <errTrace>A node test that matches either NCName:* or QName was expected.</errTrace>
-         <errTrace>Extra illegal tokens: ')', 'letters'</errTrace>
-         <errTrace>Unknown nodetype: (</errTrace>
-         <errTrace>Extra illegal tokens: '(', '(', ')', ')', 'letters'</errTrace>
-         <errTrace>XTSE0010 : an instruction xsl:next-match is not known to the XSLT processor.</errTrace>
-      </outResult>
-   </testResult>
+   <testResult status="pass" testName="match-246a"/>
+   <testResult status="pass" testName="match-246b"/>
    <testResult status="fail" testName="match-247">
       <outResult>
          <errTrace>XPST0003 : An XPath expression @* | node()  has syntax error. Unknown op code : 0.</errTrace>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_mode-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_mode-test-set_result.xml
index ae8dde7b6..a82ab5252 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_mode-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_mode-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-15T17:37:04Z" fail="59" name="mode" pass="64" skipped="46" statusUnknown="0" totalRun="123">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:35Z" fail="59" name="mode" pass="64" skipped="46" statusUnknown="0" totalRun="123">
    <testResult status="pass" testName="mode-0001"/>
    <testResult feature="streaming" status="skipped" testName="mode-0002"/>
    <testResult status="pass" testName="mode-0003"/>
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 ff19d050c..944be8214 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-12-09T16:29:49Z" fail="28" name="select" pass="106" skipped="23" statusUnknown="1" totalRun="135">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:21Z" fail="27" name="select" pass="104" skipped="26" statusUnknown="1" totalRun="132">
    <testResult status="pass" testName="select-0101"/>
    <testResult status="pass" testName="select-0102"/>
    <testResult status="pass" testName="select-0201"/>
@@ -140,8 +140,8 @@ javax.xml.transform.TransformerException: XPST0051 : A sequence type occurence i
    <testResult status="pass" testName="select-3001"/>
    <testResult status="pass" testName="select-3101"/>
    <testResult status="pass" testName="select-3201"/>
-   <testResult status="pass" testName="select-3301"/>
-   <testResult status="pass" testName="select-3401"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="select-3301"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="select-3401"/>
    <testResult status="pass" testName="select-3501"/>
    <testResult status="pass" testName="select-3502"/>
    <testResult status="pass" testName="select-3601"/>
@@ -188,7 +188,7 @@ javax.xml.transform.TransformerException: XPST0051 : A sequence type occurence i
    <testResult status="pass" testName="select-7001"/>
    <testResult status="pass" testName="select-7101"/>
    <testResult status="pass" testName="select-7201"/>
-   <testResult status="fail" testName="select-7301"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="select-7301"/>
    <testResult status="pass" testName="select-7401"/>
    <testResult status="pass" testName="select-7501"/>
    <testResult status="skipped" testName="select-7502a" xsltVersion="XSLT 2.0/1.0 only test case"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_tunnel-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_tunnel-test-set_result.xml
index f6fa9d070..780ff90ff 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_tunnel-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_tunnel-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:44Z" fail="40" name="tunnel" pass="18" skipped="0" statusUnknown="0" totalRun="58">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:35Z" fail="40" name="tunnel" pass="18" skipped="0" statusUnknown="0" totalRun="58">
    <testResult status="pass" testName="tunnel-0101"/>
    <testResult status="pass" testName="tunnel-0102"/>
    <testResult status="fail" testName="tunnel-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
index b2fcd1664..4b40b1b11 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:43Z" fail="11" name="xpath-default-namespace" pass="11" skipped="4" statusUnknown="0" totalRun="22">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:34Z" fail="11" name="xpath-default-namespace" pass="11" skipped="4" statusUnknown="0" totalRun="22">
    <testResult status="pass" testName="xpath-default-namespace-0101"/>
    <testResult status="pass" testName="xpath-default-namespace-0102"/>
    <testResult status="pass" testName="xpath-default-namespace-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
index a3031f676..5576dbbb7 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-11-13T16:37:37Z" fail="7" name="attribute-set" pass="42" skipped="1" statusUnknown="0" totalRun="49">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:27Z" fail="7" name="attribute-set" pass="42" skipped="1" statusUnknown="0" totalRun="49">
    <testResult status="pass" testName="attribute-set-0101"/>
    <testResult status="fail" testName="attribute-set-0102">
       <outResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
index 788e96424..68027cb05 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-11-15T17:36:56Z" fail="14" name="character-map" pass="13" skipped="1" statusUnknown="1" totalRun="28">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:27Z" fail="14" name="character-map" pass="13" skipped="1" statusUnknown="1" totalRun="28">
    <testResult status="pass" testName="character-map-001"/>
    <testResult status="pass" testName="character-map-002"/>
    <testResult status="pass" testName="character-map-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
index b3ec5ccfb..ec0ac713a 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-22T12:03:48Z" fail="32" name="function" pass="55" skipped="23" statusUnknown="0" totalRun="87">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:26Z" fail="32" name="function" pass="55" skipped="23" statusUnknown="0" totalRun="87">
    <testResult status="fail" testName="function-0001">
       <outResult>
          <errTrace>Could not find function: {http://www.w3.org/2005/xpath-functions}format-integer()</errTrace>
@@ -81,7 +81,7 @@
       </outResult>
    </testResult>
    <testResult status="fail" testName="function-1018">
-      <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x="http://xxx.com/" one="banana"/&gt;</outResult>
+      <outResult/>
    </testResult>
    <testResult status="fail" testName="function-1019">
       <outResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_param-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_param-test-set_result.xml
index 1f06fd74d..acd15bffc 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_param-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_param-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:45Z" fail="18" name="param" pass="12" skipped="1" statusUnknown="0" totalRun="30">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:36Z" fail="18" name="param" pass="12" skipped="1" statusUnknown="0" totalRun="30">
    <testResult status="pass" testName="param-0101"/>
    <testResult status="pass" testName="param-0102"/>
    <testResult status="pass" testName="param-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_strip-space-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_strip-space-test-set_result.xml
index 6183c895e..e7b5ff3b6 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_strip-space-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_strip-space-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:45Z" fail="14" name="strip-space" pass="13" skipped="3" statusUnknown="0" totalRun="27">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:36Z" fail="14" name="strip-space" pass="13" skipped="3" statusUnknown="0" totalRun="27">
    <testResult status="pass" testName="strip-space-001"/>
    <testResult status="fail" testName="strip-space-002">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;TEST xmlns:xs="http://www.w3.org/2001/XMLSchema"/&gt;</outResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_template-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_template-test-set_result.xml
index 9945e97b7..b5f76804e 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_template-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_template-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:45Z" fail="0" name="template" pass="6" skipped="0" statusUnknown="0" totalRun="6">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:36Z" fail="0" name="template" pass="6" skipped="0" statusUnknown="0" totalRun="6">
    <testResult status="pass" testName="template-001"/>
    <testResult status="pass" testName="template-002"/>
    <testResult status="pass" testName="template-003"/>
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 75f4c0e77..ee976809d 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-11-13T16:37:27Z" fail="19" name="variable" pass="86" skipped="3" statusUnknown="0" totalRun="105">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:17Z" fail="18" name="variable" pass="85" skipped="5" statusUnknown="0" totalRun="103">
    <testResult status="pass" testName="variable-0101"/>
    <testResult status="pass" testName="variable-0102"/>
    <testResult status="pass" testName="variable-0103"/>
@@ -19,7 +19,9 @@
    <testResult status="pass" testName="variable-0116"/>
    <testResult status="pass" testName="variable-0117"/>
    <testResult status="fail" testName="variable-0118">
-      <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out xmlns:xs="http://www.w3.org/2001/XMLSchema" att="2"/&gt;</outResult>
+      <outResult>*** Error not detected! ***&#13;
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&lt;out xmlns:xs="http://www.w3.org/2001/XMLSchema" att="2"/&gt;</outResult>
    </testResult>
    <testResult status="fail" testName="variable-0119">
       <outResult>
@@ -44,7 +46,7 @@
    <testResult status="pass" testName="variable-0301"/>
    <testResult status="fail" testName="variable-0302"/>
    <testResult status="fail" testName="variable-0303"/>
-   <testResult status="fail" testName="variable-0401"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="variable-0401"/>
    <testResult status="fail" testName="variable-0501"/>
    <testResult status="pass" testName="variable-0601"/>
    <testResult status="pass" testName="variable-0701"/>
@@ -82,7 +84,7 @@
    <testResult status="pass" testName="variable-1905"/>
    <testResult status="pass" testName="variable-2001"/>
    <testResult status="pass" testName="variable-2101"/>
-   <testResult status="pass" testName="variable-2201"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="variable-2201"/>
    <testResult status="fail" testName="variable-2202">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out&gt;It is global!&lt;/out&gt;</outResult>
    </testResult>
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 3b6b43655..542aa8308 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-12-09T16:30:24Z" fail="10" name="axes" pass="190" skipped="2" statusUnknown="0" totalRun="200">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:27Z" fail="10" name="axes" pass="190" skipped="2" statusUnknown="0" totalRun="200">
    <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 0fc98eaa1..c72c1677a 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-11-13T16:37:37Z" fail="3" name="castable" pass="6" skipped="0" statusUnknown="0" totalRun="9">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:28Z" fail="3" name="castable" pass="6" 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 582c083a1..8f7b50a60 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-11-15T17:36:57Z" fail="15" name="expression" pass="85" skipped="4" statusUnknown="1" totalRun="101">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:28Z" fail="15" name="expression" pass="84" skipped="5" statusUnknown="1" totalRun="100">
    <testResult status="pass" testName="expression-0101"/>
    <testResult status="pass" testName="expression-0301"/>
    <testResult status="pass" testName="expression-0302"/>
@@ -120,7 +120,7 @@
    <testResult status="pass" testName="expression-4209"/>
    <testResult status="pass" testName="expression-4210"/>
    <testResult status="pass" testName="expression-4301"/>
-   <testResult status="pass" testName="expression-4302"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="expression-4302"/>
    <testResult status="fail" testName="expression-4303">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;span&gt;false&lt;/span&gt;</outResult>
    </testResult>
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 0cf72cf20..8385f8879 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-11-13T16:37:38Z" fail="1" name="for" pass="2" skipped="1" statusUnknown="0" totalRun="3">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:29Z" fail="1" name="for" pass="2" skipped="1" statusUnknown="0" totalRun="3">
    <testResult status="pass" testName="for-001"/>
    <testResult status="pass" testName="for-002"/>
    <testResult status="fail" 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 3338e26ae..e8afb6c81 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-11-13T16:37:33Z" fail="36" name="higher-order-functions" pass="33" skipped="7" statusUnknown="0" totalRun="69">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:23Z" fail="36" name="higher-order-functions" pass="33" skipped="7" statusUnknown="0" totalRun="69">
    <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 311f86e51..047edbc70 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-11-13T16:37:38Z" fail="25" name="math" pass="128" skipped="8" statusUnknown="0" totalRun="153">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:29Z" fail="25" name="math" pass="128" skipped="8" statusUnknown="0" totalRun="153">
    <testResult status="pass" testName="math-0101"/>
    <testResult status="pass" testName="math-3315"/>
    <testResult status="pass" testName="math-0101"/>
@@ -150,7 +150,7 @@
    <testResult status="pass" testName="math-3314"/>
    <testResult status="pass" testName="math-3315"/>
    <testResult status="pass" testName="math-3316"/>
-   <testResult reason="Xalan configured" status="skipped" testName="math-3317"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="math-3317"/>
    <testResult status="pass" testName="math-3318"/>
    <testResult status="pass" testName="math-3319"/>
    <testResult status="skipped" testName="math-3320" xsltVersion="XSLT 2.0/1.0 only test case"/>
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 e43070fd5..d2d564ee9 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-11-13T16:37:39Z" fail="0" name="nodetest" pass="3" skipped="35" statusUnknown="0" totalRun="3">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:29Z" fail="0" name="nodetest" pass="3" skipped="35" statusUnknown="0" totalRun="3">
    <testResult status="pass" testName="nodetest-001"/>
    <testResult status="pass" testName="nodetest-002"/>
    <testResult status="pass" 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 58fcff386..83db2c908 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-11-13T16:37:39Z" fail="3" name="path" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:29Z" 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 37b40ee21..4ea766950 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,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:39Z" 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"/>
-   <testResult status="pass" testName="predicate-004"/>
-   <testResult status="pass" testName="predicate-005"/>
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:29Z" fail="4" name="predicate" pass="48" skipped="5" statusUnknown="0" totalRun="52">
+   <testResult feature="backwards_compatibility" status="skipped" testName="predicate-001"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="predicate-002"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="predicate-003"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="predicate-004"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="predicate-005"/>
    <testResult status="pass" testName="predicate-006"/>
    <testResult status="pass" testName="predicate-007"/>
    <testResult status="pass" testName="predicate-008"/>
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 d38832067..fce391cff 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-11-13T16:37:41Z" fail="0" name="deep-equal" pass="2" skipped="0" statusUnknown="0" totalRun="2">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:32Z" 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 d2af23224..c1983a1a6 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-11-13T16:37:43Z" fail="32" name="format-number" pass="38" skipped="4" statusUnknown="0" totalRun="70">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:34Z" fail="32" name="format-number" pass="32" skipped="10" statusUnknown="0" totalRun="64">
    <testResult status="fail" testName="format-number-001"/>
    <testResult status="fail" testName="format-number-002"/>
    <testResult status="fail" testName="format-number-003"/>
@@ -12,7 +12,7 @@
    <testResult status="pass" testName="format-number-011"/>
    <testResult status="pass" testName="format-number-012"/>
    <testResult status="fail" testName="format-number-013"/>
-   <testResult status="pass" testName="format-number-014"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="format-number-014"/>
    <testResult status="pass" testName="format-number-015"/>
    <testResult status="pass" testName="format-number-016"/>
    <testResult status="pass" testName="format-number-017"/>
@@ -33,13 +33,13 @@
    <testResult status="fail" testName="format-number-032"/>
    <testResult status="pass" testName="format-number-033"/>
    <testResult status="fail" testName="format-number-034"/>
-   <testResult status="pass" testName="format-number-035"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="format-number-035"/>
    <testResult status="fail" testName="format-number-036"/>
    <testResult status="fail" testName="format-number-037"/>
-   <testResult status="pass" testName="format-number-038"/>
-   <testResult status="pass" testName="format-number-039"/>
-   <testResult status="pass" testName="format-number-040"/>
-   <testResult status="pass" testName="format-number-041"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="format-number-038"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="format-number-039"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="format-number-040"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="format-number-041"/>
    <testResult status="pass" testName="format-number-042"/>
    <testResult status="pass" testName="format-number-043"/>
    <testResult status="fail" testName="format-number-044"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
index 79ea877c7..4ee7e5e6c 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:44Z" fail="7" name="json-to-xml" pass="18" skipped="35" statusUnknown="0" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:34Z" fail="7" name="json-to-xml" pass="18" skipped="35" statusUnknown="0" totalRun="25">
    <testResult status="pass" testName="json-to-xml-001"/>
    <testResult status="pass" testName="json-to-xml-002"/>
    <testResult status="pass" testName="json-to-xml-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
index 36cc43042..25a1a83e3 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-12-09T16:31:02Z" fail="36" name="key" pass="60" skipped="3" statusUnknown="0" totalRun="96">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:33Z" fail="36" name="key" pass="60" skipped="3" statusUnknown="0" totalRun="96">
    <testResult status="pass" testName="key-001"/>
    <testResult status="fail" testName="key-002">
       <outResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
index 8f4acfbb1..fab967ab8 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-11-13T16:37:42Z" fail="19" name="position" pass="191" skipped="1" statusUnknown="0" totalRun="210">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:32Z" fail="19" name="position" pass="191" skipped="1" statusUnknown="0" totalRun="210">
    <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 3e6cc4eb6..d2283ea8b 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-11-13T16:37:42Z" fail="3" name="root" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:33Z" fail="3" name="root" pass="7" skipped="0" statusUnknown="0" totalRun="10">
    <testResult status="pass" testName="root-0101"/>
    <testResult status="fail" testName="root-0102"/>
    <testResult status="pass" testName="root-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_xml-to-json-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_xml-to-json-test-set_result.xml
index fcc66bc91..f963c64ca 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_xml-to-json-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_xml-to-json-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:45Z" fail="35" name="xml-to-json" pass="52" skipped="65" statusUnknown="1" totalRun="88">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:36Z" fail="35" name="xml-to-json" pass="52" skipped="65" statusUnknown="1" totalRun="88">
    <testResult status="pass" testName="xml-to-json-A001"/>
    <testResult status="pass" testName="xml-to-json-A002"/>
    <testResult status="pass" testName="xml-to-json-A003"/>
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 fcc053527..75dca080d 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-11-13T16:37:42Z" fail="14" name="analyze-string" pass="39" skipped="5" statusUnknown="0" totalRun="53">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:33Z" fail="14" name="analyze-string" pass="39" skipped="5" statusUnknown="0" totalRun="53">
    <testResult status="pass" testName="analyze-string-001"/>
    <testResult status="pass" testName="analyze-string-002"/>
    <testResult status="pass" testName="analyze-string-003"/>
@@ -58,7 +58,7 @@
    <testResult status="fail" testName="analyze-string-092">
       <outResult>
          <errTrace>Expected ), but found: "s "</errTrace>
-         <errTrace>java.lang.ClassCastException</errTrace>
+         <errTrace>java.lang.ClassCastException: org.apache.xpath.objects.XNumber cannot be cast to java.lang.String</errTrace>
       </outResult>
    </testResult>
    <testResult status="pass" testName="analyze-string-093"/>
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 a04f046a4..993b76cb3 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-11-28T08:22:25Z" fail="15" name="apply-templates" pass="22" skipped="13" statusUnknown="0" totalRun="37">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:22Z" fail="15" name="apply-templates" pass="22" skipped="13" statusUnknown="0" totalRun="37">
    <testResult status="pass" testName="apply-templates-001"/>
    <testResult status="pass" testName="apply-templates-002"/>
    <testResult status="pass" testName="conflict-resolution-0101"/>
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 5b81c84f9..4e41677d4 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-11-22T12:04:04Z" fail="11" name="attribute" pass="11" skipped="7" statusUnknown="1" totalRun="23">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:30Z" fail="11" name="attribute" pass="11" skipped="7" statusUnknown="1" totalRun="23">
    <testResult status="pass" testName="attribute-0001"/>
    <testResult status="pass" testName="attribute-0002"/>
    <testResult status="pass" testName="attribute-0003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
index 80c26b93d..cba50cf03 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-11-15T17:36:59Z" fail="12" name="call-template" pass="28" skipped="2" statusUnknown="0" totalRun="40">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:30Z" fail="12" name="call-template" pass="28" skipped="2" statusUnknown="0" totalRun="40">
    <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 29e4b29c4..9b187756b 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-11-13T16:37:33Z" fail="6" name="choose" pass="48" skipped="1" statusUnknown="0" totalRun="54">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:23Z" fail="6" name="choose" pass="48" skipped="1" statusUnknown="0" totalRun="54">
    <testResult status="pass" testName="choose-0101"/>
    <testResult status="pass" testName="choose-0102"/>
    <testResult reason="Xalan configured" status="skipped" 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 2f8983b8d..8897a74ff 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-11-13T16:37:34Z" fail="49" name="copy" pass="76" skipped="23" statusUnknown="0" totalRun="125">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:24Z" fail="49" name="copy" pass="76" skipped="23" statusUnknown="0" totalRun="125">
    <testResult status="pass" testName="copy-0101"/>
    <testResult status="pass" testName="copy-0102"/>
    <testResult status="pass" 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 dc5ac82a4..13e95fd8e 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-11-13T16:37:35Z" fail="14" name="element" pass="15" skipped="0" statusUnknown="0" totalRun="29">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:26Z" fail="14" name="element" pass="15" skipped="0" statusUnknown="0" totalRun="29">
    <testResult status="pass" testName="element-0001"/>
    <testResult status="pass" testName="element-0002"/>
    <testResult status="pass" testName="element-0003"/>
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 20834a767..0bb21ca03 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-11-13T16:37:32Z" fail="30" name="for-each-group" pass="50" skipped="5" statusUnknown="0" totalRun="80">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:22Z" fail="30" name="for-each-group" pass="50" skipped="5" statusUnknown="0" totalRun="80">
    <testResult status="pass" testName="for-each-group-001"/>
    <testResult status="skipped" testName="for-each-group-002a" xsltVersion="XSLT 2.0/1.0 only test case"/>
    <testResult status="fail" 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 4c1901feb..8ea3aeb9f 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-11-13T16:37:34Z" fail="1" name="iterate" pass="43" skipped="0" statusUnknown="0" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:25Z" fail="1" name="iterate" pass="43" skipped="0" statusUnknown="0" 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/_message-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_message-test-set_result.xml
index 4988483b4..10ba2ac01 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_message-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_message-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-01T16:45:11Z" fail="7" name="message" pass="34" skipped="3" statusUnknown="1" totalRun="42">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:37Z" fail="7" name="message" pass="34" skipped="3" statusUnknown="1" totalRun="42">
    <testResult status="pass" testName="message-0001"/>
    <testResult status="pass" testName="message-0001a"/>
    <testResult status="pass" testName="message-0002"/>
@@ -33,9 +33,7 @@
    <testResult reason="Xalan configured" status="skipped" testName="message-0309"/>
    <testResult reason="Xalan configured" status="skipped" testName="message-0310"/>
    <testResult status="pass" testName="message-0311"/>
-   <testResult status="fail" testName="message-0312">
-      <outResult/>
-   </testResult>
+   <testResult status="fail" testName="message-0312"/>
    <testResult status="pass" testName="message-0313"/>
    <testResult status="pass" testName="message-0314"/>
    <testResult status="fail" testName="message-0315"/>
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 0939ed9b5..9d743378d 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-11-13T16:37:35Z" fail="43" name="sequence" pass="43" skipped="6" statusUnknown="0" totalRun="86">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:25Z" fail="42" name="sequence" pass="43" skipped="7" statusUnknown="0" totalRun="85">
    <testResult status="fail" testName="sequence-0101"/>
    <testResult status="fail" testName="sequence-0102"/>
    <testResult status="pass" testName="sequence-0103"/>
@@ -37,7 +37,7 @@
    <testResult status="pass" testName="sequence-0116"/>
    <testResult status="pass" testName="sequence-0117"/>
    <testResult status="pass" testName="sequence-0118"/>
-   <testResult status="fail" testName="sequence-0119"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="sequence-0119"/>
    <testResult reason="Xalan configured" status="skipped" testName="sequence-0120"/>
    <testResult status="pass" testName="sequence-0121"/>
    <testResult status="fail" testName="sequence-0122"/>
@@ -67,10 +67,12 @@
    <testResult status="pass" testName="sequence-0134"/>
    <testResult status="fail" testName="sequence-0135">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;foo/&gt;&#13;
+&#13;
 </outResult>
    </testResult>
    <testResult status="fail" testName="sequence-0136">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
+&#13;
 </outResult>
    </testResult>
    <testResult status="skipped" testName="sequence-0137" xsltVersion="XSLT 2.0/1.0 only test case"/>
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 5f6561fe2..c5cf3283c 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-11-13T16:37:35Z" fail="30" name="sort" pass="51" skipped="0" statusUnknown="0" totalRun="81">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:26Z" fail="30" name="sort" pass="51" skipped="0" statusUnknown="0" totalRun="81">
    <testResult status="pass" testName="sort-003"/>
    <testResult status="pass" testName="sort-001"/>
    <testResult status="pass" testName="sort-002"/>
@@ -28,16 +28,20 @@
    <testResult status="pass" testName="sort-026"/>
    <testResult status="fail" testName="sort-027">
       <outResult>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;&lt;out lang="default-order"/&gt;&#13;
+&#13;
 </outResult>
    </testResult>
    <testResult status="fail" testName="sort-028">
       <outResult>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;&lt;out lang="default-order"/&gt;&#13;
+&#13;
 </outResult>
       <outResult>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;&lt;out lang="default-order"/&gt;&#13;
+&#13;
 </outResult>
    </testResult>
    <testResult status="fail" testName="sort-029">
       <outResult>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;&lt;out lang="default-order"/&gt;&#13;
+&#13;
 </outResult>
    </testResult>
    <testResult status="pass" testName="sort-030"/>
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 0e02875c2..e88cd6bdf 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-11-24T17:08:56Z" fail="7" name="try" pass="27" skipped="8" statusUnknown="0" totalRun="34">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:23Z" fail="7" name="try" pass="27" skipped="8" statusUnknown="0" totalRun="34">
    <testResult status="pass" testName="try-001"/>
    <testResult status="pass" testName="try-002"/>
    <testResult status="pass" testName="try-003"/>
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 59e86bd96..ec928267b 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-11-13T16:37:43Z" fail="11" name="xsl-document" pass="14" skipped="0" statusUnknown="0" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:34Z" fail="11" name="xsl-document" pass="14" skipped="0" statusUnknown="0" totalRun="25">
    <testResult status="pass" testName="xsl-document-0101"/>
    <testResult status="fail" testName="xsl-document-0102"/>
    <testResult status="pass" testName="xsl-document-0103"/>
@@ -28,9 +28,7 @@
       </outResult>
    </testResult>
    <testResult status="fail" testName="xsl-document-0602"/>
-   <testResult status="fail" testName="xsl-document-0603">
-      <outResult/>
-   </testResult>
+   <testResult status="fail" testName="xsl-document-0603"/>
    <testResult status="pass" testName="xsl-document-0604"/>
    <testResult status="pass" testName="xsl-document-0605"/>
    <testResult status="fail" testName="xsl-document-0606"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_built-in-templates-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_built-in-templates-test-set_result.xml
index 39f73c950..9c65513e1 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_built-in-templates-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_built-in-templates-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:44Z" fail="2" name="built-in-templates" pass="3" skipped="1" statusUnknown="0" totalRun="5">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:35Z" fail="2" name="built-in-templates" pass="3" skipped="1" statusUnknown="0" totalRun="5">
    <testResult status="pass" testName="built-in-templates-0101"/>
    <testResult status="pass" testName="built-in-templates-0102"/>
    <testResult status="fail" testName="built-in-templates-0201"/>
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 fcceb998d..8ec053124 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-11-15T17:37:03Z" fail="12" name="regex" pass="32" skipped="6" statusUnknown="0" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:34Z" fail="12" name="regex" pass="32" skipped="6" statusUnknown="0" totalRun="44">
    <testResult status="pass" testName="regex-001"/>
    <testResult status="fail" testName="regex-002"/>
    <testResult status="pass" testName="regex-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
index fe83468db..3fd2b0ac7 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-11-13T16:37:33Z" fail="1" name="boolean" pass="108" skipped="3" statusUnknown="0" totalRun="109">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:23Z" fail="1" name="boolean" pass="104" skipped="7" statusUnknown="0" totalRun="105">
    <testResult status="pass" testName="boolean-001"/>
    <testResult status="pass" testName="boolean-002"/>
    <testResult status="pass" testName="boolean-003"/>
@@ -30,7 +30,7 @@
    <testResult status="pass" testName="boolean-029"/>
    <testResult status="pass" testName="boolean-030"/>
    <testResult status="pass" testName="boolean-031"/>
-   <testResult status="pass" testName="boolean-032"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-032"/>
    <testResult status="pass" testName="boolean-033"/>
    <testResult status="pass" testName="boolean-034"/>
    <testResult status="pass" testName="boolean-035"/>
@@ -67,7 +67,7 @@
    <testResult status="pass" testName="boolean-066"/>
    <testResult status="pass" testName="boolean-067"/>
    <testResult status="pass" testName="boolean-068"/>
-   <testResult reason="Xalan configured" status="skipped" testName="boolean-069"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-069"/>
    <testResult status="pass" testName="boolean-070"/>
    <testResult status="pass" testName="boolean-071"/>
    <testResult status="pass" testName="boolean-072"/>
@@ -79,15 +79,15 @@
    <testResult status="pass" testName="boolean-078"/>
    <testResult status="pass" testName="boolean-079"/>
    <testResult status="pass" testName="boolean-080"/>
-   <testResult status="pass" testName="boolean-081"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-081"/>
    <testResult status="fail" testName="boolean-082">
       <outResult>
          <errTrace>XPST0003 : An XPath expression compare($non_blank_jcodes/dd:hcfa-jcode[position() &lt; $this_pos]/text(), ./text()) = 0 has syntax error. Unknown op code : 0.</errTrace>
          <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
       </outResult>
    </testResult>
-   <testResult status="pass" testName="boolean-083"/>
-   <testResult status="pass" testName="boolean-084"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-083"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-084"/>
    <testResult status="pass" testName="boolean-085"/>
    <testResult status="pass" testName="boolean-086"/>
    <testResult status="pass" testName="boolean-087"/>
@@ -98,8 +98,8 @@
    <testResult status="pass" testName="boolean-092"/>
    <testResult status="pass" testName="boolean-093"/>
    <testResult status="pass" testName="boolean-094"/>
-   <testResult reason="Xalan configured" status="skipped" testName="boolean-095"/>
-   <testResult reason="Xalan configured" status="skipped" testName="boolean-096"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-095"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="boolean-096"/>
    <testResult status="pass" testName="boolean-097"/>
    <testResult status="pass" testName="boolean-098"/>
    <testResult status="pass" testName="boolean-099"/>
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 9884aabbe..02687fd46 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-11-13T16:37:40Z" fail="73" name="date" pass="61" skipped="4" statusUnknown="0" totalRun="134">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:30Z" fail="73" name="date" pass="61" skipped="4" statusUnknown="0" totalRun="134">
    <testResult status="pass" testName="date-001"/>
    <testResult status="pass" testName="date-002"/>
    <testResult status="pass" testName="date-003"/>
@@ -43,7 +43,11 @@
    <testResult status="pass" testName="date-041"/>
    <testResult status="pass" testName="date-042"/>
    <testResult status="pass" testName="date-043"/>
-   <testResult status="fail" testName="date-044"/>
+   <testResult status="fail" testName="date-044">
+      <outResult>
+         <errTrace>This NodeSetDTM can not iterate to a previous node!</errTrace>
+      </outResult>
+   </testResult>
    <testResult status="pass" testName="date-045"/>
    <testResult status="pass" testName="date-046"/>
    <testResult status="pass" testName="date-047"/>
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 433836c84..2bb86549e 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-11-13T16:37:39Z" fail="1" name="node" pass="31" skipped="0" statusUnknown="0" totalRun="32">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:30Z" fail="1" name="node" pass="31" skipped="0" statusUnknown="0" totalRun="32">
    <testResult status="pass" testName="node-0101"/>
    <testResult status="pass" testName="node-0201"/>
    <testResult status="pass" 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 5633f8e47..ebca42e74 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,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-11-13T16:37:39Z" fail="6" name="string" pass="130" skipped="0" statusUnknown="0" totalRun="136">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-12-10T16:52:30Z" fail="6" name="string" pass="128" skipped="2" statusUnknown="0" totalRun="134">
    <testResult status="pass" testName="string-001"/>
    <testResult status="pass" testName="string-002"/>
-   <testResult status="pass" testName="string-003"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="string-003"/>
    <testResult status="pass" testName="string-004"/>
    <testResult status="pass" testName="string-005"/>
    <testResult status="pass" testName="string-006"/>
@@ -29,7 +29,7 @@
    <testResult status="pass" testName="string-028"/>
    <testResult status="pass" testName="string-029"/>
    <testResult status="pass" testName="string-030"/>
-   <testResult status="pass" testName="string-031"/>
+   <testResult feature="backwards_compatibility" status="skipped" testName="string-031"/>
    <testResult status="pass" testName="string-032"/>
    <testResult status="pass" testName="string-033"/>
    <testResult status="pass" testName="string-034"/>
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 7fb406790..6c7efc595 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,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<testResult dateTime="2025-12-09T16:31:43Z" desc="W3C XSLT 3.0 test suite results" fail="956" pass="2441" skipped="570" success="71.73%" totalRun="3403" xslt_processor="Xalan-J XSLT 3.0 development code">
+<testResult dateTime="2025-12-10T16:53:07Z" desc="W3C XSLT 3.0 test suite results" fail="945" pass="2427" skipped="595" success="71.85%" totalRun="3378" xslt_processor="Xalan-J XSLT 3.0 development code">
   <attr>
     <as fail="31" pass="80" skipped="93" success="72.07%" totalRun="111"/>
-    <avt fail="7" pass="28" skipped="0" success="80.0%" totalRun="35"/>
+    <avt fail="4" pass="30" skipped="1" success="88.24%" totalRun="34"/>
     <disable-output-escaping fail="5" pass="22" skipped="5" success="81.48%" totalRun="27"/>
     <expand-text fail="8" pass="51" skipped="3" success="86.44%" totalRun="59"/>
-    <match fail="86" pass="96" skipped="112" success="52.75%" totalRun="182"/>
+    <match fail="84" pass="98" skipped="112" success="53.85%" totalRun="182"/>
     <mode fail="59" pass="64" skipped="46" success="52.03%" totalRun="123"/>
-    <select fail="28" pass="106" skipped="23" success="78.52%" totalRun="135"/>
+    <select fail="27" pass="104" skipped="26" success="78.79%" totalRun="132"/>
     <tunnel fail="40" pass="18" skipped="0" success="31.03%" totalRun="58"/>
     <xpath-default-namespace fail="11" pass="11" skipped="4" success="50.0%" totalRun="22"/>
   </attr>
@@ -18,22 +18,22 @@
     <param fail="18" pass="12" skipped="1" success="40.0%" totalRun="30"/>
     <strip-space fail="14" pass="13" skipped="3" success="48.15%" totalRun="27"/>
     <template fail="0" pass="6" skipped="0" success="100.0%" totalRun="6"/>
-    <variable fail="19" pass="86" skipped="3" success="81.9%" totalRun="105"/>
+    <variable fail="18" pass="85" skipped="5" success="82.52%" totalRun="103"/>
   </decl>
   <expr>
     <axes fail="10" pass="190" skipped="2" success="95.0%" totalRun="200"/>
     <castable fail="3" pass="6" skipped="0" success="66.67%" totalRun="9"/>
-    <expression fail="15" pass="85" skipped="4" success="84.16%" totalRun="101"/>
+    <expression fail="15" pass="84" skipped="5" success="84.0%" totalRun="100"/>
     <for fail="1" pass="2" skipped="1" success="66.67%" totalRun="3"/>
     <higher-order-functions fail="36" pass="33" skipped="7" success="47.83%" totalRun="69"/>
     <math fail="25" pass="128" skipped="8" success="83.66%" totalRun="153"/>
     <nodetest fail="0" pass="3" skipped="35" success="100.0%" totalRun="3"/>
     <path fail="3" pass="7" skipped="0" success="70.0%" totalRun="10"/>
-    <predicate fail="7" pass="50" skipped="0" success="87.72%" totalRun="57"/>
+    <predicate fail="4" pass="48" skipped="5" success="92.31%" totalRun="52"/>
   </expr>
   <fn>
     <deep-equal fail="0" pass="2" skipped="0" success="100.0%" totalRun="2"/>
-    <format-number fail="32" pass="38" skipped="4" success="54.29%" totalRun="70"/>
+    <format-number fail="32" pass="32" skipped="10" success="50.0%" totalRun="64"/>
     <json-to-xml fail="7" pass="18" skipped="35" success="72.0%" totalRun="25"/>
     <key fail="36" pass="60" skipped="3" success="62.5%" totalRun="96"/>
     <position fail="19" pass="191" skipped="1" success="90.95%" totalRun="210"/>
@@ -51,7 +51,7 @@
     <for-each-group fail="30" pass="50" skipped="5" success="62.5%" totalRun="80"/>
     <iterate fail="1" pass="43" skipped="0" success="97.73%" totalRun="44"/>
     <message fail="7" pass="34" skipped="3" success="80.95%" totalRun="42"/>
-    <sequence fail="43" pass="43" skipped="6" success="50.0%" totalRun="86"/>
+    <sequence fail="42" pass="43" skipped="7" success="50.59%" totalRun="85"/>
     <sort fail="30" pass="51" skipped="0" success="62.96%" totalRun="81"/>
     <try fail="7" pass="27" skipped="8" success="79.41%" totalRun="34"/>
     <xsl-document fail="11" pass="14" skipped="0" success="56.0%" totalRun="25"/>
@@ -61,9 +61,9 @@
     <regex fail="12" pass="32" skipped="6" success="72.73%" totalRun="44"/>
   </misc>
   <type>
-    <boolean fail="1" pass="108" skipped="3" success="99.08%" totalRun="109"/>
+    <boolean fail="1" pass="104" skipped="7" success="99.05%" totalRun="105"/>
     <date fail="73" pass="61" skipped="4" success="45.52%" totalRun="134"/>
     <node fail="1" pass="31" skipped="0" success="96.88%" totalRun="32"/>
-    <string fail="6" pass="130" skipped="0" success="95.59%" totalRun="136"/>
+    <string fail="6" pass="128" skipped="2" success="95.52%" totalRun="134"/>
   </type>
 </testResult>


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