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/06/05 15:58:23 UTC
(xalan-java) branch xalan-j_xslt3.0_mvn updated: committing few implementation improvements to xpath 'castable as' expression and compliance with related w3c xslt 3.0 test cases as well
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 9fafb8f85 committing few implementation improvements to xpath 'castable as' expression and compliance with related w3c xslt 3.0 test cases as well
9fafb8f85 is described below
commit 9fafb8f853be08c1b19203f27b69071c5bd713e4
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Thu Jun 5 21:28:05 2025 +0530
committing few implementation improvements to xpath 'castable as' expression and compliance with related w3c xslt 3.0 test cases as well
---
.../xpath/composite/SequenceTypeSupport.java | 60 ++++++++++++++++++----
.../org/apache/xpath/operations/CastableAs.java | 51 ++++++++++++++++--
.../result/decl/_character-map-test-set_result.xml | 2 +-
.../result/decl/_function-test-set_result.xml | 2 +-
.../xslt3/result/expr/_axes-test-set_result.xml | 2 +-
.../result/expr/_castable-test-set_result.xml | 22 ++------
.../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 +-
.../w3c/xslt3/result/fn/_key-test-set_result.xml | 2 +-
.../xslt3/result/fn/_position-test-set_result.xml | 2 +-
.../w3c/xslt3/result/fn/_root-test-set_result.xml | 2 +-
.../insn/_analyze-string-test-set_result.xml | 2 +-
.../insn/_apply-templates-test-set_result.xml | 2 +-
.../result/insn/_attribute-test-set_result.xml | 2 +-
.../result/insn/_call-template-test-set_result.xml | 2 +-
.../xslt3/result/insn/_choose-test-set_result.xml | 2 +-
.../xslt3/result/insn/_copy-test-set_result.xml | 2 +-
.../xslt3/result/insn/_element-test-set_result.xml | 2 +-
.../insn/_for-each-group-test-set_result.xml | 2 +-
.../xslt3/result/insn/_iterate-test-set_result.xml | 2 +-
.../result/insn/_sequence-test-set_result.xml | 2 +-
.../xslt3/result/insn/_sort-test-set_result.xml | 2 +-
.../w3c/xslt3/result/insn/_try-test-set_result.xml | 2 +-
.../xslt3/result/type/_boolean-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 | 4 +-
33 files changed, 133 insertions(+), 62 deletions(-)
diff --git a/src/main/java/org/apache/xpath/composite/SequenceTypeSupport.java b/src/main/java/org/apache/xpath/composite/SequenceTypeSupport.java
index 84aad249c..8707fe904 100644
--- a/src/main/java/org/apache/xpath/composite/SequenceTypeSupport.java
+++ b/src/main/java/org/apache/xpath/composite/SequenceTypeSupport.java
@@ -18,6 +18,7 @@ package org.apache.xpath.composite;
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -403,7 +404,17 @@ public class SequenceTypeSupport {
srcLocator = xctxt.getSAXLocator();
}
- try {
+ try {
+ if ((srcValue instanceof XMLNodeCursorImpl) && (expectedSeqTypeData != null)) {
+ if (expectedSeqTypeData.getBuiltInSequenceType() > 0) {
+ // When XPath "cast as" operator's LHS is a node and RHS is a built-in
+ // simple type, we check "cast as" on string value of node.
+ srcValue = srcValue.getFresh();
+ String strValue = XslTransformEvaluationHelper.getStrVal(srcValue);
+ srcValue = new XSString(strValue);
+ }
+ }
+
XPath seqTypeXPath = null;
XObject seqTypeExpressionEvalResult = null;
SequenceTypeData seqExpectedTypeData = null;
@@ -896,13 +907,11 @@ public class SequenceTypeSupport {
}
else if (srcValue instanceof XSUntyped) {
String srcStrVal = ((XSUntyped)srcValue).stringValue();
- // Recursive call to this function
result = castXdmValueToAnotherType(new XSString(srcStrVal), sequenceTypeXPathExprStr,
expectedSeqTypeData, xctxt);
}
else if (srcValue instanceof XSUntypedAtomic) {
String srcStrVal = ((XSUntypedAtomic)srcValue).stringValue();
- // Recursive call to this function
result = castXdmValueToAnotherType(new XSString(srcStrVal), sequenceTypeXPathExprStr,
expectedSeqTypeData, xctxt);
}
@@ -919,7 +928,6 @@ public class SequenceTypeSupport {
else if (srcValue instanceof ResultSequence) {
ResultSequence srcResultSeq = (ResultSequence)srcValue;
if (srcResultSeq.size() == 1) {
- // Recursive call to this function
result = castXdmValueToAnotherType(srcResultSeq.item(0), sequenceTypeXPathExprStr, expectedSeqTypeData, xctxt);
}
else if ((srcResultSeq.size() == 0) && (itemTypeOccurenceIndicator == 0)) {
@@ -1205,8 +1213,11 @@ public class SequenceTypeSupport {
result = new XSBoolean(true);
}
}
- else if (expectedType == XS_DECIMAL) {
- result = new XSDecimal(srcStrVal);
+ else if (expectedType == XS_DECIMAL) {
+ boolean isStrValueNumeric = isStrValueNumericFormat(srcStrVal);
+ if (isStrValueNumeric) {
+ result = new XSDecimal(srcStrVal);
+ }
}
else if (expectedType == XS_INTEGER) {
result = new XSInteger(srcStrVal);
@@ -1247,11 +1258,17 @@ public class SequenceTypeSupport {
else if (expectedType == XS_UNSIGNED_BYTE) {
result = new XSUnsignedByte(srcStrVal);
}
- else if (expectedType == XS_DOUBLE) {
- result = new XSDouble(srcStrVal);
+ else if (expectedType == XS_DOUBLE) {
+ boolean isStrValueNumeric = isStrValueNumericFormat(srcStrVal);
+ if (isStrValueNumeric) {
+ result = new XSDouble(srcStrVal);
+ }
}
- else if (expectedType == XS_FLOAT) {
- result = new XSFloat(srcStrVal);
+ else if (expectedType == XS_FLOAT) {
+ boolean isStrValueNumeric = isStrValueNumericFormat(srcStrVal);
+ if (isStrValueNumeric) {
+ result = new XSFloat(srcStrVal);
+ }
}
else if (expectedType == XS_DATE) {
result = XSDate.parseDate(srcStrVal);
@@ -1259,6 +1276,9 @@ public class SequenceTypeSupport {
else if (expectedType == XS_DATETIME) {
result = XSDateTime.parseDateTime(srcStrVal);
}
+ else if (expectedType == XS_TIME) {
+ result = XSTime.parseTime(srcStrVal);
+ }
else if (expectedType == XS_DURATION) {
result = XSDuration.parseDuration(srcStrVal);
}
@@ -1298,6 +1318,26 @@ public class SequenceTypeSupport {
return result;
}
+
+ /**
+ * Method definition to check whether, the supplied string value
+ * is formatted as number.
+ *
+ * @param strValue The supplied string value
+ * @return
+ */
+ private static boolean isStrValueNumericFormat(String strValue) {
+ boolean isStrValueNumeric = true;
+
+ try {
+ BigDecimal bigDecimal = new BigDecimal(strValue);
+ }
+ catch (NumberFormatException ex) {
+ isStrValueNumeric = false;
+ }
+
+ return isStrValueNumeric;
+ }
/**
* This method does numeric type conversion, and numeric type promotion as
diff --git a/src/main/java/org/apache/xpath/operations/CastableAs.java b/src/main/java/org/apache/xpath/operations/CastableAs.java
index fb0e854e5..a36637934 100644
--- a/src/main/java/org/apache/xpath/operations/CastableAs.java
+++ b/src/main/java/org/apache/xpath/operations/CastableAs.java
@@ -29,7 +29,12 @@ import org.apache.xpath.composite.SequenceTypeData;
import org.apache.xpath.composite.SequenceTypeSupport;
import org.apache.xpath.objects.XObject;
+import xml.xpath31.processor.types.XSAnyAtomicType;
import xml.xpath31.processor.types.XSBoolean;
+import xml.xpath31.processor.types.XSDecimal;
+import xml.xpath31.processor.types.XSDouble;
+import xml.xpath31.processor.types.XSDuration;
+import xml.xpath31.processor.types.XSFloat;
/**
* The XPath 3.1 "castable as" operation.
@@ -60,8 +65,42 @@ public class CastableAs extends Operation
SequenceTypeData seqTypedData = (SequenceTypeData)right;
- try {
- result = SequenceTypeSupport.castXdmValueToAnotherType(left, seqTypedData, true);
+ try {
+ if ((left instanceof XSAnyAtomicType) && ((seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.STRING) ||
+ (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_UNTYPED_ATOMIC))) {
+ result = new XSBoolean(true);
+
+ return result;
+ }
+ else if ((left instanceof XSBoolean) && ((seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_FLOAT) ||
+ (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_DOUBLE) ||
+ (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_DECIMAL) ||
+ (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_INTEGER))) {
+ result = new XSBoolean(true);
+
+ return result;
+ }
+ else if ((left instanceof XSFloat) && (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_DECIMAL)) {
+ result = new XSBoolean(true);
+
+ return result;
+ }
+ else if (((left instanceof XSDecimal) || (left instanceof XSFloat) || (left instanceof XSDouble)) &&
+ (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_INTEGER)) {
+ result = new XSBoolean(true);
+
+ return result;
+ }
+ else if ((left instanceof XSDuration) && ((seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_DAYTIME_DURATION) ||
+ (seqTypedData.getBuiltInSequenceType() == SequenceTypeSupport.XS_YEARMONTH_DURATION))) {
+ result = new XSBoolean(true);
+
+ return result;
+ }
+ else {
+ result = SequenceTypeSupport.castXdmValueToAnotherType(left, seqTypedData, true);
+ }
+
if (result != null) {
result = new XSBoolean(true);
}
@@ -69,15 +108,19 @@ public class CastableAs extends Operation
XSTypeDefinition typeDefn = seqTypedData.getXsTypeDefinition();
if ((typeDefn != null) && (typeDefn instanceof XSSimpleType)) {
XSSimpleTypeDecl simpleTypeDecl = (XSSimpleTypeDecl)typeDefn;
- java.lang.String inpValue = XslTransformEvaluationHelper.getStrVal(left);
+ java.lang.String inpStrValue = XslTransformEvaluationHelper.getStrVal(left);
try {
- simpleTypeDecl.validate(inpValue, null, null);
+ simpleTypeDecl.validate(inpStrValue, null, null);
+
result = new XSBoolean(true);
}
catch (InvalidDatatypeValueException ex) {
result = new XSBoolean(false);
}
}
+ else {
+ result = new XSBoolean(false);
+ }
}
}
catch (javax.xml.transform.TransformerException ex) {
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 c7b23fdd1..298ae10af 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_character-map-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:15Z" fail="12" name="character-map" pass="15" skipped="0" statusUnknown="2" totalRun="29">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:12Z" fail="12" name="character-map" pass="15" skipped="0" statusUnknown="2" totalRun="29">
<testResult status="pass" testName="character-map-001"/>
<testResult status="pass" testName="character-map-002"/>
<testResult status="pass" testName="character-map-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/decl/_function-test-set_result.xml
index 60d87a5f0..9456bb5d4 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-06-05T10:25:15Z" fail="39" name="function" pass="22" skipped="4" statusUnknown="5" totalRun="70">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:12Z" fail="39" name="function" pass="22" skipped="4" statusUnknown="5" totalRun="70">
<testResult status="fail" testName="function-0001">
<outResult/>
</testResult>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
index 743ecae97..c772c3551 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_axes-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:15Z" fail="29" name="axes" pass="172" skipped="0" statusUnknown="0" totalRun="201">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:12Z" fail="29" name="axes" pass="172" 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 c48586f92..9912ee011 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,20 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:15Z" fail="9" name="castable" pass="0" skipped="0" statusUnknown="0" totalRun="9">
- <testResult status="fail" testName="castable-001"/>
- <testResult status="fail" testName="castable-002">
- <outResult>
- <errTrace>XTTE0570 : The source xdm sequence cannot be cast to the provided sequence type.</errTrace>
- </outResult>
- </testResult>
- <testResult status="fail" testName="castable-003">
- <outResult>
- <errTrace>XTTE0570 : The source xdm sequence cannot be cast to the provided sequence type.</errTrace>
- </outResult>
- </testResult>
- <testResult status="fail" testName="castable-004">
- <outResult>
- <errTrace>XTTE0570 : The source xdm sequence cannot be cast to the provided sequence type.</errTrace>
- </outResult>
- </testResult>
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:13Z" 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"/>
+ <testResult status="pass" testName="castable-004"/>
<testResult status="fail" testName="castable-005">
<outResult>
<errTrace>Failed calling setNamespace method</errTrace>
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 67533b923..4ec87e928 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_expression-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:15Z" fail="0" name="expression" pass="9" skipped="0" statusUnknown="1" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:13Z" 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 dc0c8758d..00e032ecb 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_for-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:16Z" fail="2" name="for" pass="1" skipped="0" statusUnknown="1" totalRun="4">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:14Z" 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 365eebcd1..3199f71db 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_higher-order-functions-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:18Z" fail="6" name="higher-order-functions" pass="18" skipped="0" statusUnknown="1" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:17Z" fail="6" name="higher-order-functions" pass="18" skipped="0" statusUnknown="1" totalRun="25">
<testResult status="pass" testName="higher-order-functions-001"/>
<testResult status="pass" testName="higher-order-functions-002"/>
<testResult status="pass" testName="higher-order-functions-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
index a91a9b0e2..4bc5e6666 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_math-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:17Z" fail="39" name="math" pass="108" skipped="0" statusUnknown="1" totalRun="148">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:16Z" fail="39" name="math" pass="108" skipped="0" statusUnknown="1" totalRun="148">
<testResult status="pass" testName="math-0101"/>
<testResult status="fail" testName="math-0102">
<outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
index 1cffb7e26..6fea8a865 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_nodetest-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:18Z" fail="36" name="nodetest" pass="2" skipped="0" statusUnknown="0" totalRun="38">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:17Z" 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 da9f13bf5..f3a8a2d22 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_path-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:18Z" fail="3" name="path" pass="7" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:17Z" 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 ff60c0024..1477e019a 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/expr/_predicate-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:19Z" fail="7" name="predicate" pass="50" skipped="0" statusUnknown="0" totalRun="57">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:18Z" 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 4b6b47434..7703b69b8 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_deep-equal-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:19Z" fail="0" name="deep-equal" pass="2" skipped="0" statusUnknown="0" totalRun="2">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:19Z" 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/_key-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
index 28edfbe83..cbb828ff5 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_key-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:20Z" fail="3" name="key" pass="21" skipped="0" statusUnknown="1" totalRun="25">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:21Z" fail="3" name="key" pass="21" skipped="0" statusUnknown="1" totalRun="25">
<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 7e45fedf4..bb6ea5b98 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_position-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:19Z" fail="8" name="position" pass="108" skipped="0" statusUnknown="1" totalRun="117">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:19Z" fail="8" name="position" pass="108" skipped="0" statusUnknown="1" totalRun="117">
<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 5b7f19c59..0fc79e862 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/fn/_root-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:20Z" fail="4" name="root" pass="6" skipped="0" statusUnknown="0" totalRun="10">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:21Z" fail="4" name="root" pass="6" skipped="0" statusUnknown="0" totalRun="10">
<testResult status="fail" testName="root-0101"/>
<testResult status="fail" testName="root-0102"/>
<testResult status="pass" testName="root-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
index 49b4e3b5e..24ee30288 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_analyze-string-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:07Z" fail="17" name="analyze-string" pass="36" skipped="5" statusUnknown="0" totalRun="58">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:52:57Z" fail="17" name="analyze-string" pass="36" skipped="5" statusUnknown="0" totalRun="58">
<testResult status="pass" testName="analyze-string-001"/>
<testResult status="pass" testName="analyze-string-002"/>
<testResult status="pass" testName="analyze-string-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
index 83bcf1609..24f33a794 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_apply-templates-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:07Z" fail="26" name="apply-templates" pass="22" skipped="2" statusUnknown="0" totalRun="50">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:52:59Z" fail="26" name="apply-templates" pass="22" skipped="2" statusUnknown="0" totalRun="50">
<testResult status="fail" testName="apply-templates-001">
<outResult><?xml version="1.0" encoding="UTF-8"?>
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 8c1dc503a..98657a889 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_attribute-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:08Z" fail="12" name="attribute" pass="7" skipped="0" statusUnknown="2" totalRun="21">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:01Z" fail="12" name="attribute" pass="7" skipped="0" statusUnknown="2" totalRun="21">
<testResult status="fail" testName="attribute-0001"/>
<testResult status="fail" testName="attribute-0002">
<outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
index e1de80ddb..3460a383e 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_call-template-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:09Z" fail="15" name="call-template" pass="26" skipped="1" statusUnknown="0" totalRun="42">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:02Z" fail="15" name="call-template" pass="26" skipped="1" statusUnknown="0" totalRun="42">
<testResult status="fail" testName="call-template-0001">
<outResult>
<errTrace>XPTY0004 : An error occured while evaluating an XPath expression ancestor-or-self::*.</errTrace>
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 4cb052bdb..1a025c21e 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_choose-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:09Z" fail="6" name="choose" pass="17" skipped="0" statusUnknown="1" totalRun="24">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:03Z" fail="6" name="choose" pass="17" skipped="0" statusUnknown="1" totalRun="24">
<testResult status="pass" testName="choose-0101"/>
<testResult status="pass" testName="choose-0102"/>
<testResult status="fail" testName="choose-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
index 9d2f0962d..abcb669f3 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_copy-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:11Z" fail="43" name="copy" pass="16" skipped="0" statusUnknown="1" totalRun="60">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:06Z" fail="43" name="copy" pass="16" skipped="0" statusUnknown="1" totalRun="60">
<testResult status="fail" testName="copy-0101"/>
<testResult status="pass" testName="copy-0102"/>
<testResult status="fail" testName="copy-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
index 8a5cdb227..c1b6daf0c 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_element-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:13Z" fail="14" name="element" pass="8" skipped="0" statusUnknown="1" totalRun="23">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:10Z" fail="14" name="element" pass="8" skipped="0" statusUnknown="1" totalRun="23">
<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 19dcfa902..4ea701f64 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_for-each-group-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:08Z" fail="29" name="for-each-group" pass="44" skipped="4" statusUnknown="1" totalRun="78">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:52:59Z" fail="29" name="for-each-group" pass="44" skipped="4" statusUnknown="1" totalRun="78">
<testResult status="pass" testName="for-each-group-001"/>
<testResult status="skipped" xsltVersion="2.0 only"/>
<testResult status="pass" testName="for-each-group-002"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
index 21473964f..12e1942dd 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_iterate-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:11Z" fail="32" name="iterate" pass="11" skipped="0" statusUnknown="1" totalRun="44">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:07Z" fail="32" name="iterate" pass="11" skipped="0" statusUnknown="1" totalRun="44">
<testResult status="pass" testName="iterate-001"/>
<testResult status="pass" testName="iterate-002"/>
<testResult status="pass" testName="iterate-003"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
index 81cbf8582..e3cd677a7 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sequence-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:12Z" fail="19" name="sequence" pass="7" skipped="0" statusUnknown="1" totalRun="27">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:08Z" fail="19" name="sequence" pass="7" skipped="0" statusUnknown="1" totalRun="27">
<testResult status="fail" testName="sequence-0101"/>
<testResult status="fail" testName="sequence-0102"/>
<testResult status="pass" testName="sequence-0103"/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
index 7e3ef98a4..fbb9cd5fd 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_sort-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:14Z" fail="44" name="sort" pass="35" skipped="0" statusUnknown="1" totalRun="80">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:12Z" fail="44" name="sort" pass="35" skipped="0" statusUnknown="1" totalRun="80">
<testResult status="pass" testName="sort-001"/>
<testResult status="pass" testName="sort-002"/>
<testResult status="fail" testName="sort-003">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
index 33cff3b14..563403177 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/insn/_try-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:08Z" fail="26" name="try" pass="11" skipped="5" statusUnknown="0" totalRun="42">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:01Z" fail="26" name="try" pass="11" skipped="5" statusUnknown="0" totalRun="42">
<testResult status="pass" testName="try-001"/>
<testResult status="fail" testName="try-002">
<outResult/>
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
index b59c3d64a..deb7bbadc 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_boolean-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:19Z" fail="22" name="boolean" pass="90" skipped="0" statusUnknown="0" totalRun="112">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:19Z" fail="22" name="boolean" pass="90" 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/_node-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
index dfb96f6b8..2451153e3 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_node-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:19Z" fail="17" name="node" pass="15" skipped="0" statusUnknown="0" totalRun="32">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:19Z" fail="17" name="node" pass="15" skipped="0" statusUnknown="0" totalRun="32">
<testResult status="pass" testName="node-0101"/>
<testResult status="pass" testName="node-0201"/>
<testResult status="fail" testName="node-0301">
diff --git a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
index b83bcd52a..69beb7ea5 100644
--- a/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
+++ b/src/test/java/org/apache/xalan/tests/w3c/xslt3/result/type/_string-test-set_result.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T10:25:19Z" fail="8" name="string" pass="128" skipped="0" statusUnknown="0" totalRun="136">
+<?xml version="1.0" encoding="UTF-8"?><testrun dateTime="2025-06-05T15:53:19Z" 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 308664d1e..e5d0020f8 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,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<testResult dateTime="2025-06-05T10:25:35Z" desc="W3C XSLT 3.0 test suite results" fail="527" pass="1014" skipped="21" success="65.34%" totalRun="1584" xslt_processor="Xalan-J XSLT 3.0 development code">
+<testResult dateTime="2025-06-05T15:53:34Z" desc="W3C XSLT 3.0 test suite results" fail="523" pass="1018" skipped="21" success="65.59%" totalRun="1584" xslt_processor="Xalan-J XSLT 3.0 development code">
<decl>
<character-map fail="12" pass="15" skipped="0" success="51.72%" totalRun="29"/>
<function fail="39" pass="22" skipped="4" success="37.14%" totalRun="70"/>
</decl>
<expr>
<axes fail="29" pass="172" skipped="0" success="85.57%" totalRun="201"/>
- <castable fail="9" pass="0" skipped="0" success="0.0%" totalRun="9"/>
+ <castable fail="5" pass="4" skipped="0" success="44.44%" totalRun="9"/>
<expression fail="0" pass="9" skipped="0" success="90.0%" totalRun="10"/>
<for fail="2" pass="1" skipped="0" success="25.0%" totalRun="4"/>
<higher-order-functions fail="6" pass="18" skipped="0" success="72.0%" totalRun="25"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xalan.apache.org
For additional commands, e-mail: commits-help@xalan.apache.org