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><?xml version="1.0" encoding="UTF-8"?>
@@ -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><?xml version="1.0" encoding="UTF-8"?><out/></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