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

(xalan-java) branch xalan-j_xslt3.0_mvn updated: committing xalan-j implementation improvements to xslt 3.0 xsl:copy and xsl:copy-of instructions

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 95330cf44 committing xalan-j implementation improvements to xslt 3.0 xsl:copy and xsl:copy-of instructions
95330cf44 is described below

commit 95330cf440db31ef7165e1eb39dc694cab6d6422
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Mon Sep 8 23:06:51 2025 +0530

    committing xalan-j implementation improvements to xslt 3.0 xsl:copy and xsl:copy-of instructions
---
 LICENSE.txt => LICENSE                             |  51 ----
 LICENSE.xpath31_types-1.0.html                     | 258 +++++++++++++++++++++
 README                                             |   8 +-
 .../org/apache/xalan/processor/XSLTSchema.java     |   1 +
 .../apache/xalan/templates/ElemCallTemplate.java   |  65 ++++++
 .../java/org/apache/xalan/templates/ElemCopy.java  |  41 +++-
 .../xalan/templates/ElemTemplateElement.java       |   3 +
 .../org/apache/xalan/templates/TemplateList.java   |  11 +-
 .../apache/xalan/transformer/TransformerImpl.java  |  45 +++-
 .../org/apache/xpath/compiler/XPathParser.java     |   7 +
 .../xalan/tests/main/XalanXsl3TestSuite2.java      |   4 +-
 .../w3c/xslt3/result/attr/_as-test-set_result.xml  |   2 +-
 .../w3c/xslt3/result/attr/_avt-test-set_result.xml |   2 +-
 .../result/attr/_expand-text-test-set_result.xml   |   2 +-
 .../xslt3/result/attr/_match-test-set_result.xml   |   2 +-
 .../xslt3/result/attr/_select-test-set_result.xml  |   2 +-
 .../_xpath-default-namespace-test-set_result.xml   |   2 +-
 .../result/decl/_attribute-set-test-set_result.xml |   2 +-
 .../result/decl/_character-map-test-set_result.xml |   2 +-
 .../result/decl/_function-test-set_result.xml      |   2 +-
 .../result/decl/_variable-test-set_result.xml      |   2 +-
 .../xslt3/result/expr/_axes-test-set_result.xml    |   2 +-
 .../result/expr/_castable-test-set_result.xml      |   2 +-
 .../result/expr/_expression-test-set_result.xml    |   2 +-
 .../w3c/xslt3/result/expr/_for-test-set_result.xml |   2 +-
 .../_higher-order-functions-test-set_result.xml    |   2 +-
 .../xslt3/result/expr/_math-test-set_result.xml    |   2 +-
 .../result/expr/_nodetest-test-set_result.xml      |   2 +-
 .../xslt3/result/expr/_path-test-set_result.xml    |   2 +-
 .../result/expr/_predicate-test-set_result.xml     |   2 +-
 .../result/fn/_deep-equal-test-set_result.xml      |   2 +-
 .../result/fn/_format-number-test-set_result.xml   |   2 +-
 .../result/fn/_json-to-xml-test-set_result.xml     |   2 +-
 .../w3c/xslt3/result/fn/_key-test-set_result.xml   |   2 +-
 .../xslt3/result/fn/_position-test-set_result.xml  |   2 +-
 .../w3c/xslt3/result/fn/_root-test-set_result.xml  |   2 +-
 .../insn/_analyze-string-test-set_result.xml       |   4 +-
 .../insn/_apply-templates-test-set_result.xml      |   6 +-
 .../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    |   9 +-
 .../xslt3/result/insn/_element-test-set_result.xml |   2 +-
 .../insn/_for-each-group-test-set_result.xml       |   2 +-
 .../xslt3/result/insn/_iterate-test-set_result.xml |   2 +-
 .../result/insn/_sequence-test-set_result.xml      |   2 +-
 .../xslt3/result/insn/_sort-test-set_result.xml    |   2 +-
 .../w3c/xslt3/result/insn/_try-test-set_result.xml |   2 +-
 .../result/insn/_xsl-document-test-set_result.xml  |   6 +-
 .../xslt3/result/misc/_regex-test-set_result.xml   |   2 +-
 .../xslt3/result/type/_boolean-test-set_result.xml |   2 +-
 .../xslt3/result/type/_date-test-set_result.xml    |   2 +-
 .../xslt3/result/type/_node-test-set_result.xml    |   2 +-
 .../xslt3/result/type/_string-test-set_result.xml  |   2 +-
 .../result/w3c_xslt3_testsuite_xalan-j_result.xml  |   6 +-
 .../{XslCopySelectTests.java => XslCopyTests.java} |  60 ++++-
 src/test/resources/xsl_copy/gold/test3.out         |  18 ++
 src/test/resources/xsl_copy/gold/test4.out         |  12 +
 src/test/resources/xsl_copy/gold/test5.out         |  12 +
 src/test/resources/xsl_copy/gold/test6.out         |  10 +
 src/test/resources/xsl_copy/gold/test7.out         |  10 +
 src/test/resources/xsl_copy/test2.xml              |   8 +
 src/test/resources/xsl_copy/test3.xml              |   8 +
 src/test/resources/xsl_copy/test3.xsl              |  69 ++++++
 src/test/resources/xsl_copy/test4.xsl              |  43 ++++
 src/test/resources/xsl_copy/test5.xsl              |  44 ++++
 src/test/resources/xsl_copy/test6.xsl              |  56 +++++
 src/test/resources/xsl_copy/test7.xsl              |  55 +++++
 68 files changed, 871 insertions(+), 137 deletions(-)

diff --git a/LICENSE.txt b/LICENSE
similarity index 99%
rename from LICENSE.txt
rename to LICENSE
index 0825f35b9..cd96b72a8 100644
--- a/LICENSE.txt
+++ b/LICENSE
@@ -212,8 +212,6 @@ Source:   https://commons.apache.org/proper/commons-logging/
 Used by:  Xalan-Java 2's non Java extensions
 
 
-
-
 The following license applies to the included files:
   tools/ant.jar
   tools/antRun
@@ -273,12 +271,6 @@ Used By: Xalan's build process: java/build.xml and test/build.xml
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license, Apache Software License, Version 1.1,
 applies to the included BCEL.jar from Apache Jakarta
 (Byte Code Engineering Library).
@@ -347,12 +339,6 @@ Used By: BCEL.jar which is used by XSLTC component of xml-xalan/java
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license applies to the DOM documentation
 for the org.w3c.dom.* packages:
 
@@ -425,13 +411,6 @@ Last revised by Reagle $Date: 2005-07-19 12:33:09 -0400 (Tue, 19 Jul 2005) $
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
-
 The following license applies to the DOM software,
 for the org.w3c.dom.* packages in jar file xml-apis.jar:
 
@@ -495,12 +474,6 @@ Last revised by Reagle $Date: 2005-07-19 12:33:09 -0400 (Tue, 19 Jul 2005) $
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license applies to the SAX software,
 for the org.xml.sax.* packages in jar file xml-apis.jar:
 
@@ -510,12 +483,6 @@ and comes with NO WARRANTY. See http://www.saxproject.org for further informatio
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license applies to the jar file 
 java_cup.jar - LALR Parser Generator for Java(TM).
 Source:  http://www.cs.princeton.edu/~appel/modern/java/CUP
@@ -544,12 +511,6 @@ in connection with the use or performance of this software.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license applies to the jar file runtime.jar - Component
 of JavaCup: LALR Parser Generator for Java(TM).
 Source:  http://www.cs.princeton.edu/~appel/modern/java/CUP
@@ -579,12 +540,6 @@ in connection with the use or performance of this software.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license applies to the JLEX jar file 
 JLex.jar - A Lexical Analyzer Generator for Java(TM).
 Source:  http://www.cs.princeton.edu/~appel/modern/java/JLex
@@ -618,12 +573,6 @@ Sun endorses this product.
 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 
-
-
-
-
-
-
 The following license applies to the jar file 
 stylebook-1.0-b3_xalan-2.jar - Tool for generating Xalan documentation. 
 Integrated with Xalan-Java 2 and Xerces 2.
diff --git a/LICENSE.xpath31_types-1.0.html b/LICENSE.xpath31_types-1.0.html
new file mode 100644
index 000000000..832a9d448
--- /dev/null
+++ b/LICENSE.xpath31_types-1.0.html
@@ -0,0 +1,258 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head><body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/README b/README
index 2648e7054..fce7bdaba 100644
--- a/README
+++ b/README
@@ -17,7 +17,7 @@
 
 Copyright 1999-2025 The Apache Software Foundation
 
-Document last modified : 2025-09-05
+Document last modified : 2025-09-08
 
 Authors:
    Gary Gregory <gg...@apache.org>
@@ -49,11 +49,11 @@ The Maven build results like following shall be produced:
 [INFO]  T E S T S
 [INFO] -------------------------------------------------------
 [INFO] Running org.apache.xalan.tests.main.AllXalanXSLT3Tests
-[INFO] Tests run: 1286, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 42.258 s - in org.apache.xalan.tests.main.AllXalanXSLT3Tests
+[INFO] Tests run: 1291, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 111.382 s - in org.apache.xalan.tests.main.AllXalanXSLT3Tests
 [INFO]
 [INFO] Results:
 [INFO]
-[INFO] Tests run: 1286, Failures: 0, Errors: 0, Skipped: 0
+[INFO] Tests run: 1291, Failures: 0, Errors: 0, Skipped: 0
 [INFO]
 [INFO]
 [INFO] --- jar:3.3.0:jar (default-jar) @ xalan-java ---
@@ -62,7 +62,7 @@ The Maven build results like following shall be produced:
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time:  01:48 min
+[INFO] Total time:  03:39 min
 
 
 If the user needs to run Xalan-J's XSLT 3.0 implementation via Java application code, the value of JVM's system property 
diff --git a/src/main/java/org/apache/xalan/processor/XSLTSchema.java b/src/main/java/org/apache/xalan/processor/XSLTSchema.java
index 94de25bb6..9100d3ed3 100644
--- a/src/main/java/org/apache/xalan/processor/XSLTSchema.java
+++ b/src/main/java/org/apache/xalan/processor/XSLTSchema.java
@@ -932,6 +932,7 @@ public class XSLTSchema extends XSLTElementDef
                           new XSLTAttributeDef[]{
                                                   spaceAttr,
                                                   selectAttrOpt,
+                                                  xslCopyNamespacesOpt,
                                                   useAttributeSetsAttr,
                                                   typeAttrOpt,
                          		                  validationAttrOpt, 
diff --git a/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java b/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java
index 95f580790..bb0b2b4ae 100644
--- a/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java
+++ b/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java
@@ -81,6 +81,71 @@ public class ElemCallTemplate extends ElemForEach
    */
   private ElemTemplate m_template = null;
   
+  /**
+   * This class field, represents the value of "xpath-default-namespace" 
+   * attribute.
+   */
+  private String m_xpath_default_namespace = null;
+  
+  /**
+   * Set the value of "xpath-default-namespace" attribute.
+   *
+   * @param v   Value of the "xpath-default-namespace" attribute
+   */
+  public void setXpathDefaultNamespace(String v)
+  {
+	  m_xpath_default_namespace = v; 
+  }
+
+  /**
+   * Get the value of "xpath-default-namespace" attribute.
+   *  
+   * @return		  The value of "xpath-default-namespace" attribute 
+   */
+  public String getXpathDefaultNamespace() {
+	  return m_xpath_default_namespace;
+  }
+  
+  /**
+   * This class field, represents the value of "expand-text" 
+   * attribute.
+   */
+  private boolean m_expand_text;
+  
+  /**
+   * Variable to indicate whether, an attribute 'expand-text'
+   * is declared on xsl:apply-templates instruction.
+   */
+  private boolean m_expand_text_declared;
+
+  /**
+   * Set the value of "expand-text" attribute.
+   *
+   * @param v   Value of the "expand-text" attribute
+   */
+  public void setExpandText(boolean v)
+  {
+	  m_expand_text = v;
+	  m_expand_text_declared = true;
+  }
+
+  /**
+   * Get the value of "expand-text" attribute.
+   *  
+   * @return		  The value of "expand-text" attribute 
+   */
+  public boolean getExpandText() {
+	  return m_expand_text;
+  }
+  
+  /**
+   * Get a boolean value indicating whether, an "expand-text" 
+   * attribute has been declared. 
+   */
+  public boolean getExpandTextDeclared() {
+	  return m_expand_text_declared;
+  }
+  
   /**
    * Used to implement XSLT tunnel parameters.
    */
diff --git a/src/main/java/org/apache/xalan/templates/ElemCopy.java b/src/main/java/org/apache/xalan/templates/ElemCopy.java
index 95db28afe..bec761747 100644
--- a/src/main/java/org/apache/xalan/templates/ElemCopy.java
+++ b/src/main/java/org/apache/xalan/templates/ElemCopy.java
@@ -182,6 +182,31 @@ public class ElemCopy extends ElemUse
    */
   private int m_globals_size;
   
+  /**
+   * This class field represents, xsl:copy instruction's attribute 
+   * copy-namespaces's value, with default value true.
+   */
+  private boolean m_copy_namespaces = true;
+  
+  /**
+   * Set the value of "copy-namespaces" attribute.
+   *
+   * @param v   Value of the "copy-namespaces" attribute
+   */
+  public void setCopyNamespaces(boolean v)
+  {
+	  m_copy_namespaces = v;
+  }
+
+  /**
+   * Get the value of "copy-namespaces" attribute.
+   *  
+   * @return		  The value of "copy-namespaces" attribute 
+   */
+  public boolean getCopyNamespaces() {
+	  return m_copy_namespaces;
+  }
+  
   public void compose(StylesheetRoot sroot) throws TransformerException
   {
 	  super.compose(sroot);
@@ -293,11 +318,11 @@ public class ElemCopy extends ElemUse
 		  if ((DTM.DOCUMENT_NODE != nodeType) && (DTM.DOCUMENT_FRAGMENT_NODE != nodeType))
 		  {
 			  if (transformer.getDebug())
-				  transformer.getTraceManager().emitTraceEvent(this);
+				  transformer.getTraceManager().emitTraceEvent(this);			  
 			  
 			  if (nodeType == DTM.TEXT_NODE) {				  				  
-				  XMLNodeCursorImpl xdmNode = new XMLNodeCursorImpl(sourceNode, xctxt);
-				  String nodeStrValue = xdmNode.str();				  
+				  XMLNodeCursorImpl nodeSet = new XMLNodeCursorImpl(sourceNode, xctxt);
+				  String nodeStrValue = nodeSet.str();				  
 				  if (rthandler instanceof SerializerBase) {					  					  
 			    	  SerializerBase serializerBase = (SerializerBase)rthandler;
 			    	  CharacterMapConfig charMapConfig = serializerBase.getCharMapConfig();
@@ -311,7 +336,7 @@ public class ElemCopy extends ElemUse
 				  else {
 					  ClonerToResultTree.cloneToResultTree(sourceNode, nodeType, dtm, rthandler, false); 
 				  }				  
-			  }
+			  }			  
 			  else {
 			      ClonerToResultTree.cloneToResultTree(sourceNode, nodeType, dtm, rthandler, false);
 			  }
@@ -319,8 +344,11 @@ public class ElemCopy extends ElemUse
 			  if (DTM.ELEMENT_NODE == nodeType)
 			  {
 				  super.execute(transformer);
-				  SerializerUtils.processNSDecls(rthandler, sourceNode, nodeType, dtm);
-
+				  
+				  if (m_copy_namespaces) {
+				     SerializerUtils.processNSDecls(rthandler, sourceNode, nodeType, dtm);
+				  }
+				  
 				  if (type != null) {
 					  StylesheetRoot stylesheetRoot = XslTransformData.m_stylesheetRoot;
 					  XSModel xsModel = stylesheetRoot.getXsModel();        			          			          			  
@@ -401,6 +429,7 @@ public class ElemCopy extends ElemUse
 				  String localName = dtm.getLocalName(sourceNode);
 				  transformer.getResultTreeHandler().endElement(ns, localName, dtm.getNodeName(sourceNode));
 			  }
+			  
 			  if (transformer.getDebug())
 				  transformer.getTraceManager().emitTraceEndEvent(this);         
 		  }
diff --git a/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java b/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
index 63daa0d7e..6a5761a49 100644
--- a/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
+++ b/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
@@ -2257,6 +2257,9 @@ public class ElemTemplateElement extends UnImplNode
   	else if (elemTemplateElem instanceof ElemApplyTemplates) {
   		result = ((ElemApplyTemplates)elemTemplateElem).getExpandText();  		
   	}
+  	else if (elemTemplateElem instanceof ElemCallTemplate) {
+  		result = ((ElemCallTemplate)elemTemplateElem).getExpandText();  		
+  	}
   	else if (elemTemplateElem instanceof ElemForEach) {
   		result = ((ElemForEach)elemTemplateElem).getExpandText();  		
   	}
diff --git a/src/main/java/org/apache/xalan/templates/TemplateList.java b/src/main/java/org/apache/xalan/templates/TemplateList.java
index 681580f07..858badfab 100644
--- a/src/main/java/org/apache/xalan/templates/TemplateList.java
+++ b/src/main/java/org/apache/xalan/templates/TemplateList.java
@@ -40,7 +40,8 @@ import org.apache.xpath.patterns.StepPattern;
 import org.apache.xpath.patterns.UnionPattern;
 
 /**
- * Encapsulates a template list, and helps locate individual templates.
+ * Encapsulates a template list, and helps locate individual 
+ * templates and functions.
  * 
  * @xsl.usage advanced
  */
@@ -119,11 +120,11 @@ public class TemplateList implements java.io.Serializable
     		}
     		else if (matchExpr instanceof StepPattern)
     		{
-    			insertPatternInTable((StepPattern) matchExpr, template);
+    			insertPatternInTable((StepPattern)matchExpr, template);
     		}
     		else if (matchExpr instanceof UnionPattern)
     		{
-    			UnionPattern upat = (UnionPattern) matchExpr;
+    			UnionPattern upat = (UnionPattern)matchExpr;
     			StepPattern[] pats = upat.getPatterns();
     			int n = pats.length;
 
@@ -731,7 +732,7 @@ public class TemplateList implements java.io.Serializable
       xctxt.pushNamespaceContextNull();
       xctxt.pushCurrentNodeAndExpression(targetNode, targetNode);
       try
-      {
+      {    	
         do
         {
           ElemTemplate template = head.getTemplate();        
@@ -756,7 +757,7 @@ public class TemplateList implements java.io.Serializable
     }
 
     return null;
-  }  // end findTemplate
+  }  // end getTemplate
   
   /**
    * Given a target element, find the template that best
diff --git a/src/main/java/org/apache/xalan/transformer/TransformerImpl.java b/src/main/java/org/apache/xalan/transformer/TransformerImpl.java
index 877c99de9..19db17268 100644
--- a/src/main/java/org/apache/xalan/transformer/TransformerImpl.java
+++ b/src/main/java/org/apache/xalan/transformer/TransformerImpl.java
@@ -56,6 +56,7 @@ import org.apache.xalan.templates.Constants;
 import org.apache.xalan.templates.ElemApplyTemplates;
 import org.apache.xalan.templates.ElemAttribute;
 import org.apache.xalan.templates.ElemAttributeSet;
+import org.apache.xalan.templates.ElemCallTemplate;
 import org.apache.xalan.templates.ElemCharacterMap;
 import org.apache.xalan.templates.ElemChoose;
 import org.apache.xalan.templates.ElemComment;
@@ -775,7 +776,7 @@ public class TransformerImpl extends Transformer
 		m_errorHandler.fatalError(ex);
 		
 		return;
-	}		
+	}
 	
 	updateXPathDefaultNamespace(m_stylesheetRoot, m_stylesheetRoot.getXpathDefaultNamespace());
 	
@@ -2501,7 +2502,7 @@ public class TransformerImpl extends Transformer
           isDefaultTextRule = true;
           break;
         case DTM.DOCUMENT_NODE :
-          template = m_stylesheetRoot.getDefaultRootRule();
+          template = m_stylesheetRoot.getDefaultRootRule();          
           break;
         default :
 
@@ -4456,11 +4457,23 @@ public class TransformerImpl extends Transformer
 							 Expression matchExpr = matchXPath.getExpression();
 							 if (matchExpr instanceof StepPattern) {
 								 StepPattern stepPattern = (StepPattern)matchExpr;
-								 String targetStr = stepPattern.getTargetString();
-								 TemplateSubPatternAssociation templatePatternAssoc = new TemplateSubPatternAssociation(elemTemplate, 
-										                                                                                          stepPattern, targetStr);
-
-								 patternTable.put(targetStr, templatePatternAssoc);
+								 String targetStr = stepPattern.getTargetString();								 
+								 TemplateSubPatternAssociation templatePatternAssocPrev = (TemplateSubPatternAssociation)(patternTable.get(targetStr));
+								 if (templatePatternAssocPrev != null) {
+									 ElemTemplate elemTemplate2 = templatePatternAssocPrev.getTemplate();
+									 elemTemplate2.setMatch(matchXPath);
+									 TemplateSubPatternAssociation templatePatternAssocNew = new TemplateSubPatternAssociation(elemTemplate2, stepPattern, targetStr);
+									 templatePatternAssocPrev = templatePatternAssocPrev.getNext();
+									 while (templatePatternAssocPrev != null) {
+										 elemTemplate2 = templatePatternAssocPrev.getTemplate();
+										 elemTemplate2.setMatch(matchXPath);
+										 TemplateSubPatternAssociation templatePatternAssoc2 = new TemplateSubPatternAssociation(elemTemplate2, stepPattern, targetStr);
+										 templatePatternAssocNew.setNext(templatePatternAssoc2);									
+										 templatePatternAssocPrev = templatePatternAssocPrev.getNext();									
+									 }									 
+									 
+									 patternTable.put(targetStr, templatePatternAssocNew);
+								 }
 							 }
 							 else if (matchExpr instanceof UnionPattern) {
 								 UnionPattern xpathUnionPattern = (UnionPattern)matchExpr;
@@ -4469,7 +4482,7 @@ public class TransformerImpl extends Transformer
 									 StepPattern stepPattern = (StepPattern)stepPatternArr[i];
 									 String targetStr = stepPattern.getTargetString();
 									 TemplateSubPatternAssociation templatePatternAssoc = new TemplateSubPatternAssociation(elemTemplate, 
-											                                                                                          stepPattern, targetStr);
+											                                                                                          stepPattern, targetStr);									 									 
 									 patternTable.put(targetStr, templatePatternAssoc);
 								 }
 							 }
@@ -4492,6 +4505,14 @@ public class TransformerImpl extends Transformer
 						  xpathDefaultNamespace = ((ElemApplyTemplates)xslElem).getXpathDefaultNamespace();  
 					  }
 				  }
+				  else if (xslElem instanceof ElemCallTemplate) {
+					  if (((ElemCallTemplate)xslElem).getXpathDefaultNamespace() == null) {
+						  ((ElemCallTemplate)xslElem).setXpathDefaultNamespace(xpathDefaultNamespace);
+					  }
+					  else {
+						  xpathDefaultNamespace = ((ElemCallTemplate)xslElem).getXpathDefaultNamespace();  
+					  }
+				  }				  
 				  else if (xslElem instanceof ElemForEach) {
 					  if (((ElemForEach)xslElem).getXpathDefaultNamespace() == null) {
 						  ((ElemForEach)xslElem).setXpathDefaultNamespace(xpathDefaultNamespace);
@@ -4715,6 +4736,14 @@ public class TransformerImpl extends Transformer
 						  expandText = ((ElemApplyTemplates)xslElem).getExpandText();  
 					  }
 				  }
+				  else if (xslElem instanceof ElemCallTemplate) {
+					  if (!(((ElemCallTemplate)xslElem).getExpandTextDeclared())) {
+						  ((ElemCallTemplate)xslElem).setExpandText(expandText);
+					  }
+					  else {
+						  expandText = ((ElemCallTemplate)xslElem).getExpandText();  
+					  }
+				  }
 				  else if (xslElem instanceof ElemForEach) {
 					  if (!(((ElemForEach)xslElem).getExpandTextDeclared())) {
 						  ((ElemForEach)xslElem).setExpandText(expandText);
diff --git a/src/main/java/org/apache/xpath/compiler/XPathParser.java b/src/main/java/org/apache/xpath/compiler/XPathParser.java
index 08c61bab1..cec2df110 100644
--- a/src/main/java/org/apache/xpath/compiler/XPathParser.java
+++ b/src/main/java/org/apache/xpath/compiler/XPathParser.java
@@ -38,6 +38,7 @@ import org.apache.xalan.res.XSLMessages;
 import org.apache.xalan.templates.Constants;
 import org.apache.xalan.templates.ElemApplyTemplates;
 import org.apache.xalan.templates.ElemAttribute;
+import org.apache.xalan.templates.ElemCallTemplate;
 import org.apache.xalan.templates.ElemChoose;
 import org.apache.xalan.templates.ElemComment;
 import org.apache.xalan.templates.ElemCopy;
@@ -7768,6 +7769,12 @@ public class XPathParser
     			result = getXPathDefaultNamespace(((ElemApplyTemplates)xpathExprXslParentNode).getParentElem()); 
     		}
     	}
+    	else if (xpathExprXslParentNode instanceof ElemCallTemplate) {
+    		result = ((ElemCallTemplate)xpathExprXslParentNode).getXpathDefaultNamespace();
+    		if (result == null) {
+    			result = getXPathDefaultNamespace(((ElemCallTemplate)xpathExprXslParentNode).getParentElem()); 
+    		}
+    	}    	
     	else if (xpathExprXslParentNode instanceof ElemForEach) {
     		result = ((ElemForEach)xpathExprXslParentNode).getXpathDefaultNamespace();
     		if (result == null) {
diff --git a/src/test/java/org/apache/xalan/tests/main/XalanXsl3TestSuite2.java b/src/test/java/org/apache/xalan/tests/main/XalanXsl3TestSuite2.java
index c5563361d..1623d66cf 100644
--- a/src/test/java/org/apache/xalan/tests/main/XalanXsl3TestSuite2.java
+++ b/src/test/java/org/apache/xalan/tests/main/XalanXsl3TestSuite2.java
@@ -79,7 +79,7 @@ import org.apache.xalan.tests.xslt3.XslAnalyzeStringTests;
 import org.apache.xalan.tests.xslt3.XslAttributeTests;
 import org.apache.xalan.tests.xslt3.XslCharacterMapTests;
 import org.apache.xalan.tests.xslt3.XslContextItemTests;
-import org.apache.xalan.tests.xslt3.XslCopySelectTests;
+import org.apache.xalan.tests.xslt3.XslCopyTests;
 import org.apache.xalan.tests.xslt3.XslExpandTextTests;
 import org.apache.xalan.tests.xslt3.XslForEachGroupMiscTests;
 import org.apache.xalan.tests.xslt3.XslForEachGroupTests;
@@ -142,7 +142,7 @@ import org.junit.runners.Suite.SuiteClasses;
                 XPathDefaultNamespaceMiscTests.class, XslFunctionMiscTests.class, XslIncludeTests.class, 
                 XslIncludeMiscTests.class, FnNormalizeUnicodeTests.class, XslExpandTextTests.class,
                 XslJsonValidationTests.class, XPathUriQualifiedNameTests.class, FnRoundHalfToEvenTests.class,
-                XPathPartialFuncApplnTests.class, XslCopySelectTests.class })
+                XPathPartialFuncApplnTests.class, XslCopyTests.class })
 public class XalanXsl3TestSuite2 {
 
 }
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 041747793..887464384 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_as-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_as-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:50Z" fail="31" name="as" pass="73" skipped="4" statusUnknown="1" totalRun="105">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:16Z" fail="31" name="as" pass="73" skipped="4" statusUnknown="1" totalRun="105">
    <testResult status="pass" testName="as-0101"/>
    <testResult status="pass" testName="as-0102"/>
    <testResult status="pass" testName="as-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml
index 38506485e..e6ad73488 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_avt-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:51Z" fail="15" name="avt" pass="20" skipped="0" statusUnknown="0" totalRun="35">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:20Z" fail="15" name="avt" pass="20" skipped="0" statusUnknown="0" totalRun="35">
    <testResult status="pass" testName="avt-0101"/>
    <testResult status="fail" testName="avt-0201"/>
    <testResult status="pass" testName="avt-0202"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
index d823ea522..7ad23b6aa 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_expand-text-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:21Z" fail="28" name="expand-text" pass="34" skipped="0" statusUnknown="0" totalRun="62">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:59Z" fail="28" name="expand-text" pass="34" skipped="0" statusUnknown="0" totalRun="62">
    <testResult status="pass" testName="cvt-001"/>
    <testResult status="pass" testName="cvt-002"/>
    <testResult status="pass" testName="cvt-003"/>
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 f87c5bc67..0f199e81e 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_match-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:51Z" fail="59" name="match" pass="69" skipped="8" statusUnknown="1" totalRun="129">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:22Z" fail="59" name="match" pass="69" skipped="8" statusUnknown="1" totalRun="129">
    <testResult status="pass" testName="match-001"/>
    <testResult status="pass" testName="match-002"/>
    <testResult status="pass" testName="match-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml
index 12f30997b..09db9b554 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_select-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:52Z" fail="5" name="select" pass="19" skipped="0" statusUnknown="1" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:26Z" fail="5" name="select" pass="19" skipped="0" statusUnknown="1" totalRun="25">
    <testResult status="pass" testName="select-0101"/>
    <testResult status="pass" testName="select-0102"/>
    <testResult status="pass" testName="select-0201"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
index 1989f0359..b62007b22 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/attr/_xpath-default-namespace-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:21Z" fail="15" name="xpath-default-namespace" pass="11" skipped="0" statusUnknown="0" totalRun="26">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:58Z" fail="15" name="xpath-default-namespace" pass="11" skipped="0" statusUnknown="0" totalRun="26">
    <testResult status="pass" testName="xpath-default-namespace-0101"/>
    <testResult status="pass" testName="xpath-default-namespace-0102"/>
    <testResult status="pass" testName="xpath-default-namespace-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
index 96cf8be4d..4bb1abeba 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_attribute-set-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:15Z" fail="8" name="attribute-set" pass="41" skipped="1" statusUnknown="0" totalRun="49">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:15Z" fail="8" name="attribute-set" pass="41" skipped="1" statusUnknown="0" totalRun="49">
    <testResult status="pass" testName="attribute-set-0101"/>
    <testResult status="fail" testName="attribute-set-0102">
       <outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
index 722c4a9d4..3fc1cb853 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:14Z" fail="12" name="character-map" pass="15" skipped="1" statusUnknown="1" totalRun="28">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:14Z" fail="12" name="character-map" pass="15" skipped="1" statusUnknown="1" totalRun="28">
    <testResult status="pass" testName="character-map-001"/>
    <testResult status="pass" testName="character-map-002"/>
    <testResult status="pass" testName="character-map-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
index e14c382da..d8662b964 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:57Z" fail="32" name="function" pass="56" skipped="22" statusUnknown="0" totalRun="88">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:47Z" fail="32" name="function" pass="56" skipped="22" statusUnknown="0" totalRun="88">
    <testResult status="fail" testName="function-0001">
       <outResult/>
    </testResult>
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 28eb01782..eeeb8f3ef 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_variable-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_variable-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:49Z" fail="3" name="variable" pass="16" skipped="0" statusUnknown="1" totalRun="20">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:12Z" fail="3" name="variable" pass="16" skipped="0" statusUnknown="1" totalRun="20">
    <testResult status="pass" testName="variable-0101"/>
    <testResult status="pass" testName="variable-0102"/>
    <testResult status="pass" testName="variable-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
index b84428a26..22051ffd7 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:15Z" fail="18" name="axes" pass="183" skipped="0" statusUnknown="0" totalRun="201">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:16Z" fail="18" name="axes" pass="183" skipped="0" statusUnknown="0" totalRun="201">
    <testResult status="pass" testName="axes-001"/>
    <testResult status="pass" testName="axes-002"/>
    <testResult status="pass" testName="axes-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml
index 75d021c4c..b7274c8e9 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_castable-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:15Z" fail="5" name="castable" pass="4" skipped="0" statusUnknown="0" totalRun="9">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:21Z" fail="5" name="castable" pass="4" skipped="0" statusUnknown="0" totalRun="9">
    <testResult status="pass" testName="castable-001"/>
    <testResult status="pass" testName="castable-002"/>
    <testResult status="pass" testName="castable-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
index b0c5a0fe8..dcc2dd7ed 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:15Z" fail="0" name="expression" pass="9" skipped="0" statusUnknown="1" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:22Z" fail="0" name="expression" pass="9" skipped="0" statusUnknown="1" totalRun="10">
    <testResult status="pass" testName="expression-0101"/>
    <testResult status="pass" testName="expression-0301"/>
    <testResult status="pass" testName="expression-0302"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
index 7ec8591e4..5cf3a1719 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:16Z" fail="2" name="for" pass="1" skipped="0" statusUnknown="1" totalRun="4">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:23Z" fail="2" name="for" pass="1" skipped="0" statusUnknown="1" totalRun="4">
    <testResult status="fail" testName="for-001"/>
    <testResult status="fail" testName="for-002"/>
    <testResult status="pass" testName="for-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
index 0d75d0f54..5009ad6ec 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:17Z" fail="48" name="higher-order-functions" pass="23" skipped="5" statusUnknown="0" totalRun="71">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:30Z" fail="48" name="higher-order-functions" pass="23" skipped="5" statusUnknown="0" totalRun="71">
    <testResult status="pass" testName="higher-order-functions-001"/>
    <testResult status="pass" testName="higher-order-functions-002"/>
    <testResult status="pass" testName="higher-order-functions-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
index 12640e6c7..69b5bd6e4 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:17Z" fail="25" name="math" pass="124" skipped="0" statusUnknown="1" totalRun="150">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:25Z" fail="25" name="math" pass="124" skipped="0" statusUnknown="1" totalRun="150">
    <testResult status="pass" testName="math-0101"/>
    <testResult status="pass" testName="math-3315"/>
    <testResult status="pass" testName="math-0101"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
index 750a4135c..6a3b05aec 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:17Z" fail="36" name="nodetest" pass="2" skipped="0" statusUnknown="0" totalRun="38">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:28Z" fail="36" name="nodetest" pass="2" skipped="0" statusUnknown="0" totalRun="38">
    <testResult status="pass" testName="nodetest-001"/>
    <testResult status="pass" testName="nodetest-002"/>
    <testResult status="fail" testName="nodetest-003">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
index c5e56099c..e08859577 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:17Z" fail="3" name="path" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:30Z" 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 5bead5d03..2c1a7ca9b 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:18Z" fail="7" name="predicate" pass="50" skipped="0" statusUnknown="0" totalRun="57">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:32Z" fail="7" name="predicate" pass="50" skipped="0" statusUnknown="0" totalRun="57">
    <testResult status="fail" testName="predicate-001"/>
    <testResult status="fail" testName="predicate-002"/>
    <testResult status="fail" testName="predicate-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
index 5639a46b6..699e44e7d 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:20Z" fail="0" name="deep-equal" pass="2" skipped="0" statusUnknown="0" totalRun="2">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:45Z" 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 df2b4cca3..28f7560d7 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_format-number-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_format-number-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:20Z" fail="32" name="format-number" pass="38" skipped="4" statusUnknown="0" totalRun="70">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:55Z" fail="32" name="format-number" pass="38" skipped="4" statusUnknown="0" totalRun="70">
    <testResult status="fail" testName="format-number-001"/>
    <testResult status="fail" testName="format-number-002"/>
    <testResult status="fail" testName="format-number-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
index 4c994f49b..de0b5bd96 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_json-to-xml-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:21Z" fail="8" name="json-to-xml" pass="24" skipped="0" statusUnknown="1" totalRun="33">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:33:01Z" fail="8" name="json-to-xml" pass="24" skipped="0" statusUnknown="1" totalRun="33">
    <testResult status="pass" testName="json-to-xml-001"/>
    <testResult status="pass" testName="json-to-xml-002"/>
    <testResult status="pass" testName="json-to-xml-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
index f8921cd1e..851a22531 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:20Z" fail="29" name="key" pass="54" skipped="0" statusUnknown="0" totalRun="83">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:52Z" fail="29" name="key" pass="54" skipped="0" statusUnknown="0" totalRun="83">
    <testResult status="pass" testName="key-001"/>
    <testResult status="fail" testName="key-002">
       <outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
index 5f9012362..46a5e306f 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:20Z" fail="11" name="position" pass="126" skipped="0" statusUnknown="1" totalRun="138">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:45Z" fail="11" name="position" pass="126" skipped="0" statusUnknown="1" totalRun="138">
    <testResult status="pass" testName="position-0101"/>
    <testResult status="fail" testName="position-0102"/>
    <testResult status="fail" testName="position-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
index 12d6e6b5f..3f66a8312 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:20Z" fail="3" name="root" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:51Z" fail="3" name="root" pass="7" skipped="0" statusUnknown="0" totalRun="10">
    <testResult status="pass" testName="root-0101"/>
    <testResult status="fail" testName="root-0102"/>
    <testResult status="pass" testName="root-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
index a0d27b62f..277e79695 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:20Z" fail="14" name="analyze-string" pass="39" skipped="5" statusUnknown="0" totalRun="53">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:50Z" 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: org.apache.xpath.objects.XNumber cannot be cast to java.lang.String</errTrace>
+         <errTrace>java.lang.ClassCastException</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 39e29d360..cdd004c1e 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:52Z" fail="24" name="apply-templates" pass="22" skipped="4" statusUnknown="0" totalRun="46">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:27Z" fail="25" name="apply-templates" pass="21" skipped="4" statusUnknown="0" totalRun="46">
    <testResult status="fail" testName="apply-templates-001">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#13;
 &#13;
@@ -151,7 +151,9 @@
       <outResult/>
    </testResult>
    <testResult status="pass" testName="conflict-resolution-0702"/>
-   <testResult status="pass" testName="conflict-resolution-0703"/>
+   <testResult status="fail" testName="conflict-resolution-0703">
+      <outResult/>
+   </testResult>
    <testResult reason="allowed by xslt 3.0 test suite" status="skipped" testName="conflict-resolution-0801"/>
    <testResult reason="allowed by xslt 3.0 test suite" status="skipped" testName="conflict-resolution-0802"/>
    <testResult status="pass" testName="conflict-resolution-0901"/>
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 594826ee3..fe3daafb7 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:53Z" fail="21" name="attribute" pass="8" skipped="0" statusUnknown="1" totalRun="30">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:31Z" fail="21" name="attribute" pass="8" skipped="0" statusUnknown="1" totalRun="30">
    <testResult status="fail" testName="attribute-0001"/>
    <testResult status="fail" testName="attribute-0002"/>
    <testResult status="fail" testName="attribute-0003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
index c1ccb0c08..b77d579c2 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:53Z" fail="14" name="call-template" pass="27" skipped="1" statusUnknown="0" totalRun="41">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:32Z" fail="14" name="call-template" pass="27" skipped="1" statusUnknown="0" totalRun="41">
    <testResult status="fail" testName="call-template-0001">
       <outResult>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;out/&gt;</outResult>
    </testResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
index 69ce23561..a4719431c 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:53Z" fail="3" name="choose" pass="20" skipped="0" statusUnknown="1" totalRun="24">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:33Z" fail="3" name="choose" pass="20" skipped="0" statusUnknown="1" totalRun="24">
    <testResult status="pass" testName="choose-0101"/>
    <testResult status="pass" testName="choose-0102"/>
    <testResult status="fail" testName="choose-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
index 1ba1a2d60..f26b4f609 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:54Z" fail="32" name="copy" pass="27" skipped="0" statusUnknown="1" totalRun="60">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:37Z" fail="31" name="copy" pass="28" skipped="0" statusUnknown="1" totalRun="60">
    <testResult status="pass" testName="copy-0101"/>
    <testResult status="pass" testName="copy-0102"/>
    <testResult status="pass" testName="copy-0103"/>
@@ -16,12 +16,7 @@
    <testResult status="pass" testName="copy-0605"/>
    <testResult status="fail" testName="copy-0606"/>
    <testResult status="pass" testName="element-0607"/>
-   <testResult status="fail" testName="element-0608">
-      <outResult>
-         <errTrace>Illegal value: #current used for QNAME attribute: mode</errTrace>
-         <errTrace>Illegal value: #current used for QNAME attribute: mode</errTrace>
-      </outResult>
-   </testResult>
+   <testResult status="pass" testName="element-0608"/>
    <testResult status="fail" testName="copy-0609"/>
    <testResult status="fail" testName="copy-0610"/>
    <testResult status="fail" testName="copy-0611"/>
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 a29b24346..08ce9d90c 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:56Z" fail="18" name="element" pass="11" skipped="0" statusUnknown="0" totalRun="29">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:43Z" fail="18" name="element" pass="11" skipped="0" statusUnknown="0" totalRun="29">
    <testResult status="fail" testName="element-0001">
       <outResult/>
    </testResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
index f8297face..2d80ba071 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:52Z" fail="24" name="for-each-group" pass="49" skipped="4" statusUnknown="1" totalRun="74">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:28Z" fail="24" name="for-each-group" pass="49" skipped="4" statusUnknown="1" totalRun="74">
    <testResult status="pass" testName="for-each-group-001"/>
    <testResult status="skipped" testName="for-each-group-002a" xsltVersion="xslt 2.0 only"/>
    <testResult status="pass" testName="for-each-group-002"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
index 892fa4152..5e7c8797a 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:55Z" fail="25" name="iterate" pass="19" skipped="0" statusUnknown="0" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:39Z" fail="25" name="iterate" pass="19" 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/_sequence-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
index 23688571c..4bdf77d1f 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:55Z" fail="17" name="sequence" pass="8" skipped="1" statusUnknown="1" totalRun="26">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:40Z" fail="17" name="sequence" pass="8" skipped="1" statusUnknown="1" totalRun="26">
    <testResult status="fail" testName="sequence-0101"/>
    <testResult status="fail" testName="sequence-0102"/>
    <testResult status="pass" testName="sequence-0103"/>
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 42ab2d103..fb53160fa 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:55:56Z" fail="31" name="sort" pass="50" skipped="0" statusUnknown="0" totalRun="81">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:44Z" fail="31" name="sort" pass="50" skipped="0" statusUnknown="0" totalRun="81">
    <testResult status="pass" testName="sort-003"/>
    <testResult status="pass" testName="sort-001"/>
    <testResult status="pass" testName="sort-002"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
index 2b041cb16..77c867b50 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-09-06T11:55:53Z" fail="22" name="try" pass="15" skipped="5" statusUnknown="0" totalRun="37">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:31:30Z" fail="22" name="try" pass="15" skipped="5" statusUnknown="0" totalRun="37">
    <testResult status="pass" testName="try-001"/>
    <testResult status="fail" testName="try-002">
       <outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_xsl-document-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_xsl-document-test-set_result.xml
index 621b73fea..2029252e4 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,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:21Z" fail="13" name="xsl-document" pass="12" skipped="0" statusUnknown="0" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:58Z" fail="13" name="xsl-document" pass="12" skipped="0" statusUnknown="0" totalRun="25">
    <testResult status="pass" testName="xsl-document-0101"/>
    <testResult status="fail" testName="xsl-document-0102">
       <outResult>
          <errTrace>XPST0003 : An XPath expression /out/node()[1][self::comment()][.="Valuable comment"] has syntax error. Unknown op code : 0.</errTrace>
-         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
       </outResult>
    </testResult>
    <testResult status="pass" testName="xsl-document-0103"/>
@@ -18,7 +18,7 @@
       <outResult>
          <errTrace>XPST0081 : An XML namespace prefix '' hasn't been declared within an XSL stylesheet, or hasn't been set for XPath API invocation</errTrace>
          <errTrace>XPST0003 : An XPath expression /out/node()[1][self::*:e1][namespace-uri()="http://www.example.org/foo"][@t1="1"][@t2="2"][@t3="3"] has syntax error. Unknown op code : 0.</errTrace>
-         <errTrace>java.lang.ArrayIndexOutOfBoundsException: -1</errTrace>
+         <errTrace>java.lang.ArrayIndexOutOfBoundsException</errTrace>
       </outResult>
    </testResult>
    <testResult status="pass" testName="xsl-document-0302"/>
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 051c05480..d25226055 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_regex-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/misc/_regex-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:21Z" fail="12" name="regex" pass="32" skipped="1" statusUnknown="0" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:57Z" fail="12" name="regex" pass="32" skipped="1" statusUnknown="0" totalRun="44">
    <testResult status="pass" testName="regex-001"/>
    <testResult status="fail" testName="regex-002"/>
    <testResult status="pass" testName="regex-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
index a5a575a50..150905ea2 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:18Z" fail="25" name="boolean" pass="87" skipped="0" statusUnknown="0" totalRun="112">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:33Z" fail="25" name="boolean" pass="87" skipped="0" statusUnknown="0" totalRun="112">
    <testResult status="pass" testName="boolean-001"/>
    <testResult status="pass" testName="boolean-002"/>
    <testResult status="pass" testName="boolean-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml
index 2c8129c56..d311b77ec 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_date-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:18Z" fail="28" name="date" pass="56" skipped="0" statusUnknown="1" totalRun="85">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:40Z" fail="28" name="date" pass="56" skipped="0" statusUnknown="1" totalRun="85">
    <testResult status="pass" testName="date-001"/>
    <testResult status="pass" testName="date-002"/>
    <testResult status="pass" testName="date-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
index a36eac5d6..50f8a850f 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:18Z" fail="15" name="node" pass="17" skipped="0" statusUnknown="0" totalRun="32">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:36Z" fail="15" name="node" pass="17" skipped="0" statusUnknown="0" totalRun="32">
    <testResult status="pass" testName="node-0101"/>
    <testResult status="pass" testName="node-0201"/>
    <testResult status="fail" testName="node-0301">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
index 4e0ba0999..4a2a683a2 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-06T11:56:18Z" fail="8" name="string" pass="128" skipped="0" statusUnknown="0" totalRun="136">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-09-08T17:32:37Z" fail="8" name="string" pass="128" skipped="0" statusUnknown="0" totalRun="136">
    <testResult status="pass" testName="string-001"/>
    <testResult status="pass" testName="string-002"/>
    <testResult status="pass" testName="string-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml
index 5a9324e67..5746af250 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/w3c_xslt3_testsuite_xalan-j_result.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<testResult dateTime="2025-09-06T11:56:32Z" desc="W3C XSLT 3.0 test suite results" fail="781" pass="1635" skipped="66" success="67.23%" totalRun="2432" xslt_processor="Xalan-J XSLT 3.0 development code">
+<testResult dateTime="2025-09-08T17:33:26Z" desc="W3C XSLT 3.0 test suite results" fail="781" pass="1635" skipped="66" success="67.23%" totalRun="2432" xslt_processor="Xalan-J XSLT 3.0 development code">
   <attr>
     <as fail="31" pass="73" skipped="4" success="69.52%" totalRun="105"/>
     <avt fail="15" pass="20" skipped="0" success="57.14%" totalRun="35"/>
@@ -35,11 +35,11 @@
   </fn>
   <insn>
     <analyze-string fail="14" pass="39" skipped="5" success="73.58%" totalRun="53"/>
-    <apply-templates fail="24" pass="22" skipped="4" success="47.83%" totalRun="46"/>
+    <apply-templates fail="25" pass="21" skipped="4" success="45.65%" totalRun="46"/>
     <attribute fail="21" pass="8" skipped="0" success="26.67%" totalRun="30"/>
     <call-template fail="14" pass="27" skipped="1" success="65.85%" totalRun="41"/>
     <choose fail="3" pass="20" skipped="0" success="83.33%" totalRun="24"/>
-    <copy fail="32" pass="27" skipped="0" success="45.0%" totalRun="60"/>
+    <copy fail="31" pass="28" skipped="0" success="46.67%" totalRun="60"/>
     <element fail="18" pass="11" skipped="0" success="37.93%" totalRun="29"/>
     <for-each-group fail="24" pass="49" skipped="4" success="66.22%" totalRun="74"/>
     <iterate fail="25" pass="19" skipped="0" success="43.18%" totalRun="44"/>
diff --git a/src/test/java/org/apache/xalan/tests/xslt3/XslCopySelectTests.java b/src/test/java/org/apache/xalan/tests/xslt3/XslCopyTests.java
similarity index 52%
rename from src/test/java/org/apache/xalan/tests/xslt3/XslCopySelectTests.java
rename to src/test/java/org/apache/xalan/tests/xslt3/XslCopyTests.java
index e4ef69816..0dd92c5c2 100644
--- a/src/test/java/org/apache/xalan/tests/xslt3/XslCopySelectTests.java
+++ b/src/test/java/org/apache/xalan/tests/xslt3/XslCopyTests.java
@@ -23,14 +23,14 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
- * XSL stylesheet test case to test, xsl:copy instruction's 
- * 'select' attribute.
+ * XSL stylesheet test case to test, xsl:copy and xsl:copy-of 
+ * instructions.
  * 
  * @author Mukul Gandhi <mu...@apache.org>
  * 
  * @xsl.usage advanced
  */
-public class XslCopySelectTests extends XslTransformTestsUtil {
+public class XslCopyTests extends XslTransformTestsUtil {
     
     private static final String XSL_TRANSFORM_INPUT_DIRPATH = XSLTestConstants.XSL_TRANSFORM_INPUT_DIRPATH_PREFIX + "xsl_copy/";
     
@@ -50,7 +50,7 @@ public class XslCopySelectTests extends XslTransformTestsUtil {
     }
 
     @Test
-    public void xslCopySelectTest1() {
+    public void xslCopyTest1() {
         String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test1.xml"; 
         String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test1.xsl";
         
@@ -60,7 +60,7 @@ public class XslCopySelectTests extends XslTransformTestsUtil {
     }
     
     @Test
-    public void xslCopySelectTest2() {
+    public void xslCopyTest2() {
         String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test1.xml"; 
         String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test2.xsl";
         
@@ -68,5 +68,55 @@ public class XslCopySelectTests extends XslTransformTestsUtil {
         
         runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);   
     }
+    
+    @Test
+    public void xslCopyTest3() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test2.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test3.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test3.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);   
+    }
+    
+    @Test
+    public void xslCopyTest4() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test2.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test4.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test4.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);   
+    }
+    
+    @Test
+    public void xslCopyTest5() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test3.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test5.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test5.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);   
+    }
+    
+    @Test
+    public void xslCopyTest6() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test3.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test6.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test6.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);   
+    }
+    
+    @Test
+    public void xslCopyTest7() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test3.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test7.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test7.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);   
+    }
 
 }
diff --git a/src/test/resources/xsl_copy/gold/test3.out b/src/test/resources/xsl_copy/gold/test3.out
new file mode 100644
index 000000000..450c55282
--- /dev/null
+++ b/src/test/resources/xsl_copy/gold/test3.out
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?><result>
+  <one>
+    <with-namespaces>
+      <c xmlns:a1="http://a1" xmlns:b1="http://b1" xmlns:c1="http://c1" a="1" b="2"/>
+    </with-namespaces>
+    <without-namespaces>
+      <c a="1" b="2"/>
+    </without-namespaces>
+  </one>
+  <two>
+    <with-namespaces>
+      <c xmlns:a1="http://a1" xmlns:b1="http://b1" xmlns:c1="http://c1" a="1" b="2"/>
+    </with-namespaces>
+    <without-namespaces>
+      <c a="1" b="2"/>
+    </without-namespaces>
+  </two>
+</result>
diff --git a/src/test/resources/xsl_copy/gold/test4.out b/src/test/resources/xsl_copy/gold/test4.out
new file mode 100644
index 000000000..500f51ec6
--- /dev/null
+++ b/src/test/resources/xsl_copy/gold/test4.out
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><result>
+  <one>
+    <c xmlns:a1="http://a1" xmlns:b1="http://b1" xmlns:c1="http://c1" a="1" b="2">
+       <d xmlns:d1="http://d1"/>
+    </c>
+  </one>
+  <two>
+    <c a="1" b="2">
+       <d/>
+    </c>
+  </two>
+</result>
diff --git a/src/test/resources/xsl_copy/gold/test5.out b/src/test/resources/xsl_copy/gold/test5.out
new file mode 100644
index 000000000..2ca7fcb9f
--- /dev/null
+++ b/src/test/resources/xsl_copy/gold/test5.out
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><result>
+  <one>
+    <c xmlns="http://a1" a="1" b="2">
+       <d/>
+    </c>
+  </one>
+  <two>
+    <c xmlns="http://a1" a="1" b="2">
+       <d/>
+    </c>
+  </two>
+</result>
diff --git a/src/test/resources/xsl_copy/gold/test6.out b/src/test/resources/xsl_copy/gold/test6.out
new file mode 100644
index 000000000..0fd090e53
--- /dev/null
+++ b/src/test/resources/xsl_copy/gold/test6.out
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?><result xmlns="http://a1">
+  <one>
+    <c>
+      <newElem/>
+    </c>
+  </one>
+  <two>
+    <c/>
+  </two>
+</result>
diff --git a/src/test/resources/xsl_copy/gold/test7.out b/src/test/resources/xsl_copy/gold/test7.out
new file mode 100644
index 000000000..0fd090e53
--- /dev/null
+++ b/src/test/resources/xsl_copy/gold/test7.out
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?><result xmlns="http://a1">
+  <one>
+    <c>
+      <newElem/>
+    </c>
+  </one>
+  <two>
+    <c/>
+  </two>
+</result>
diff --git a/src/test/resources/xsl_copy/test2.xml b/src/test/resources/xsl_copy/test2.xml
new file mode 100644
index 000000000..a5b2559ce
--- /dev/null
+++ b/src/test/resources/xsl_copy/test2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<a xmlns:a1="http://a1">
+  <b xmlns:b1="http://b1">
+    <c a="1" b="2" xmlns:c1="http://c1">
+       <d xmlns:d1="http://d1"/>
+    </c>
+  </b>
+</a>
diff --git a/src/test/resources/xsl_copy/test3.xml b/src/test/resources/xsl_copy/test3.xml
new file mode 100644
index 000000000..3f338ccb4
--- /dev/null
+++ b/src/test/resources/xsl_copy/test3.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<a xmlns="http://a1">
+  <b>
+    <c a="1" b="2">
+       <d/>
+    </c>
+  </b>
+</a>
diff --git a/src/test/resources/xsl_copy/test3.xsl b/src/test/resources/xsl_copy/test3.xsl
new file mode 100644
index 000000000..88509090c
--- /dev/null
+++ b/src/test/resources/xsl_copy/test3.xsl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="3.0">
+                
+    <!-- Author: mukulg@apache.org -->                
+				
+    <!-- use with test2.xml -->
+    
+    <!-- An XSL stylesheet test case, to test xsl:copy instruction's 
+         attribute 'copy-namespaces'. -->				
+
+    <xsl:output method="xml" indent="yes"/>
+    
+	<xsl:template match="/a">
+       <result>
+	      <one>
+			  <with-namespaces>
+				 <xsl:copy select="b/c">
+					<xsl:copy-of select="@*"/>
+				 </xsl:copy>
+			  </with-namespaces>
+			  <without-namespaces>
+				 <xsl:copy select="b/c" copy-namespaces="no">
+					<xsl:copy-of select="@*"/>
+				 </xsl:copy>
+			  </without-namespaces> 
+          </one>
+          <two>
+			  <with-namespaces>
+				 <xsl:apply-templates select="b/c" mode="m1"/>
+			  </with-namespaces>
+			  <without-namespaces>
+				 <xsl:apply-templates select="b/c" mode="m2"/>
+			  </without-namespaces> 
+          </two>		  
+       </result>
+    </xsl:template>
+	
+	<xsl:template match="b/c" mode="m1">
+	   <xsl:copy>
+	      <xsl:copy-of select="@*"/>
+	   </xsl:copy>
+	</xsl:template>
+	
+	<xsl:template match="b/c" mode="m2">
+	   <xsl:copy copy-namespaces="no">
+	      <xsl:copy-of select="@*"/>
+	   </xsl:copy>
+	</xsl:template>
+	
+	<!--
+      * Licensed to the Apache Software Foundation (ASF) under one
+      * or more contributor license agreements. See the NOTICE file
+      * distributed with this work for additional information
+      * regarding copyright ownership. The ASF licenses this file
+      * to you under the Apache License, Version 2.0 (the "License");
+      * you may not use this file except in compliance with the License.
+      * You may obtain a copy of the License at
+      *
+      *     http://www.apache.org/licenses/LICENSE-2.0
+      *
+      * Unless required by applicable law or agreed to in writing, software
+      * distributed under the License is distributed on an "AS IS" BASIS,
+      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      * See the License for the specific language governing permissions and
+      * limitations under the License.
+    -->
+	
+</xsl:stylesheet>
diff --git a/src/test/resources/xsl_copy/test4.xsl b/src/test/resources/xsl_copy/test4.xsl
new file mode 100644
index 000000000..c5ea3d568
--- /dev/null
+++ b/src/test/resources/xsl_copy/test4.xsl
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="3.0">
+                
+    <!-- Author: mukulg@apache.org -->                
+				
+    <!-- use with test2.xml -->
+    
+    <!-- An XSL stylesheet test case, to test xsl:copy-of instruction's 
+         attribute 'copy-namespaces'. -->				
+
+    <xsl:output method="xml" indent="yes"/>
+    
+	<xsl:template match="/a">
+       <result>
+		  <one>
+		     <xsl:copy-of select="b/c"/>
+		  </one>
+		  <two>
+			 <xsl:copy-of select="b/c" copy-namespaces="no"/>
+		  </two> 		  
+       </result>
+    </xsl:template>
+    
+    <!--
+      * Licensed to the Apache Software Foundation (ASF) under one
+      * or more contributor license agreements. See the NOTICE file
+      * distributed with this work for additional information
+      * regarding copyright ownership. The ASF licenses this file
+      * to you under the Apache License, Version 2.0 (the "License");
+      * you may not use this file except in compliance with the License.
+      * You may obtain a copy of the License at
+      *
+      *     http://www.apache.org/licenses/LICENSE-2.0
+      *
+      * Unless required by applicable law or agreed to in writing, software
+      * distributed under the License is distributed on an "AS IS" BASIS,
+      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      * See the License for the specific language governing permissions and
+      * limitations under the License.
+    -->
+	
+</xsl:stylesheet>
diff --git a/src/test/resources/xsl_copy/test5.xsl b/src/test/resources/xsl_copy/test5.xsl
new file mode 100644
index 000000000..041ec5773
--- /dev/null
+++ b/src/test/resources/xsl_copy/test5.xsl
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xpath-default-namespace="http://a1"
+                version="3.0">
+                
+    <!-- Author: mukulg@apache.org -->                
+				
+    <!-- use with test3.xml -->
+    
+    <!-- An XSL stylesheet test case, to test xsl:copy-of instruction's 
+         attribute 'copy-namespaces'. -->				
+
+    <xsl:output method="xml" indent="yes"/>
+    
+	<xsl:template match="/a">
+       <result>
+		  <one>
+            <xsl:copy-of select="b/c"/>
+          </one>
+          <two>
+		    <xsl:copy-of select="b/c" copy-namespaces="no"/>
+		  </two>
+       </result>
+    </xsl:template>
+    
+    <!--
+      * Licensed to the Apache Software Foundation (ASF) under one
+      * or more contributor license agreements. See the NOTICE file
+      * distributed with this work for additional information
+      * regarding copyright ownership. The ASF licenses this file
+      * to you under the Apache License, Version 2.0 (the "License");
+      * you may not use this file except in compliance with the License.
+      * You may obtain a copy of the License at
+      *
+      *     http://www.apache.org/licenses/LICENSE-2.0
+      *
+      * Unless required by applicable law or agreed to in writing, software
+      * distributed under the License is distributed on an "AS IS" BASIS,
+      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      * See the License for the specific language governing permissions and
+      * limitations under the License.
+    -->
+	
+</xsl:stylesheet>
diff --git a/src/test/resources/xsl_copy/test6.xsl b/src/test/resources/xsl_copy/test6.xsl
new file mode 100644
index 000000000..f746a5b67
--- /dev/null
+++ b/src/test/resources/xsl_copy/test6.xsl
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:a1="http://a1"
+				xmlns="http://a1"
+				exclude-result-prefixes="a1"
+                version="3.0">
+                
+    <!-- Author: mukulg@apache.org -->                
+				
+    <!-- use with test3.xml -->
+    
+    <!-- An XSL stylesheet test case, to test xsl:copy instruction's 
+         attribute 'copy-namespaces'. -->				
+
+    <xsl:output method="xml" indent="yes"/>
+    
+	<xsl:template match="/a1:a">
+       <result>
+		  <one>
+            <xsl:apply-templates select="a1:b/a1:c" mode="m1"/>
+          </one>
+          <two>
+		    <xsl:apply-templates select="a1:b/a1:c" mode="m2"/>
+		  </two>
+       </result>
+    </xsl:template>
+	
+	<xsl:template match="a1:b/a1:c" mode="m1">
+	   <xsl:copy>
+	     <newElem/>
+	   </xsl:copy>
+	</xsl:template>
+	
+	<xsl:template match="a1:b/a1:c" mode="m2">
+	   <xsl:copy copy-namespaces="no"/>
+	</xsl:template>
+	
+	<!--
+      * Licensed to the Apache Software Foundation (ASF) under one
+      * or more contributor license agreements. See the NOTICE file
+      * distributed with this work for additional information
+      * regarding copyright ownership. The ASF licenses this file
+      * to you under the Apache License, Version 2.0 (the "License");
+      * you may not use this file except in compliance with the License.
+      * You may obtain a copy of the License at
+      *
+      *     http://www.apache.org/licenses/LICENSE-2.0
+      *
+      * Unless required by applicable law or agreed to in writing, software
+      * distributed under the License is distributed on an "AS IS" BASIS,
+      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      * See the License for the specific language governing permissions and
+      * limitations under the License.
+    -->
+	
+</xsl:stylesheet>
diff --git a/src/test/resources/xsl_copy/test7.xsl b/src/test/resources/xsl_copy/test7.xsl
new file mode 100644
index 000000000..ee9d53d0f
--- /dev/null
+++ b/src/test/resources/xsl_copy/test7.xsl
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xpath-default-namespace="http://a1"
+				xmlns="http://a1"
+                version="3.0">
+                
+    <!-- Author: mukulg@apache.org -->                
+				
+    <!-- use with test3.xml -->
+    
+    <!-- An XSL stylesheet test case, to test xsl:copy instruction's 
+         attribute 'copy-namespaces'. -->				
+
+    <xsl:output method="xml" indent="yes"/>
+    
+	<xsl:template match="/a">
+       <result>
+		  <one>
+            <xsl:apply-templates select="b/c" mode="m1"/>
+          </one>
+          <two>
+		    <xsl:apply-templates select="b/c" mode="m2"/>
+		  </two>
+       </result>
+    </xsl:template>
+	
+	<xsl:template match="b/c" mode="m1">
+	   <xsl:copy>
+	     <newElem/>
+	   </xsl:copy>
+	</xsl:template>
+	
+	<xsl:template match="b/c" mode="m2">
+	   <xsl:copy copy-namespaces="no"/>
+	</xsl:template>
+	
+	<!--
+      * Licensed to the Apache Software Foundation (ASF) under one
+      * or more contributor license agreements. See the NOTICE file
+      * distributed with this work for additional information
+      * regarding copyright ownership. The ASF licenses this file
+      * to you under the Apache License, Version 2.0 (the "License");
+      * you may not use this file except in compliance with the License.
+      * You may obtain a copy of the License at
+      *
+      *     http://www.apache.org/licenses/LICENSE-2.0
+      *
+      * Unless required by applicable law or agreed to in writing, software
+      * distributed under the License is distributed on an "AS IS" BASIS,
+      * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      * See the License for the specific language governing permissions and
+      * limitations under the License.
+    -->
+	
+</xsl:stylesheet>


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