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 2023/10/17 17:26:47 UTC

[xalan-java] branch xalan-j_xslt3.0 updated: improving xalanj implementation on this dev repos branch, where now xpath 3.1 inline function expressions within their function body, can call stylesheet 'xsl:function' functions. committing few new related working test cases as well. also doing minor refactoring of xslt 3.0 test suite on this xalanj dev repos branch, and few other minor codebase enhancements as well.

This is an automated email from the ASF dual-hosted git repository.

mukulg pushed a commit to branch xalan-j_xslt3.0
in repository https://gitbox.apache.org/repos/asf/xalan-java.git


The following commit(s) were added to refs/heads/xalan-j_xslt3.0 by this push:
     new 66529185 improving xalanj implementation on this dev repos branch, where now xpath 3.1 inline function expressions within their function body, can call stylesheet 'xsl:function' functions. committing few new related working test cases as well. also doing minor refactoring of xslt 3.0 test suite on this xalanj dev repos branch, and few other minor codebase enhancements as well.
     new 0af10aaf Merge pull request #104 from mukulga/xalan-j_xslt3.0_mukul
66529185 is described below

commit 66529185de4f502d666f97cf9f5b9ac995ae54b2
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Tue Oct 17 22:50:58 2023 +0530

    improving xalanj implementation on this dev repos branch, where now xpath 3.1 inline function expressions within their function body, can call stylesheet 'xsl:function' functions. committing few new related working test cases as well. also doing minor refactoring of xslt 3.0 test suite on this xalanj dev repos branch, and few other minor codebase enhancements as well.
---
 .../apache/xalan/templates/ElemForEachGroup.java   |  7 +-
 src/org/apache/xalan/templates/StylesheetRoot.java | 18 +++++-
 .../xalan/templates/XSConstructorFunctionUtil.java |  9 ++-
 .../xpath/composite/SequenceTypeSupport.java       | 15 +++--
 .../apache/xpath/functions/FuncExtFunction.java    | 30 ++++-----
 tests/inline_function_expr/gold/test10.out         |  1 +
 tests/inline_function_expr/gold/test11.out         | 15 +++++
 tests/inline_function_expr/gold/test12.out         | 17 +++++
 tests/inline_function_expr/test10.xsl              | 47 ++++++++++++++
 tests/inline_function_expr/test11.xsl              | 62 ++++++++++++++++++
 tests/inline_function_expr/test12.xsl              | 74 ++++++++++++++++++++++
 tests/inline_function_expr/test1_e.xml             |  9 +++
 .../xalan/xpath3/InlineFunctionItemExprTests.java  | 30 +++++++++
 tests/org/apache/xalan/xslt3/Xsl3TestSuite1.java   |  7 +-
 tests/org/apache/xalan/xslt3/Xsl3TestSuite2.java   |  6 +-
 15 files changed, 315 insertions(+), 32 deletions(-)

diff --git a/src/org/apache/xalan/templates/ElemForEachGroup.java b/src/org/apache/xalan/templates/ElemForEachGroup.java
index 58f833f7..4d552cd3 100644
--- a/src/org/apache/xalan/templates/ElemForEachGroup.java
+++ b/src/org/apache/xalan/templates/ElemForEachGroup.java
@@ -50,6 +50,7 @@ import org.apache.xpath.objects.XString;
 import org.apache.xpath.operations.Variable;
 import org.apache.xpath.xs.types.XSBoolean;
 import org.apache.xpath.xs.types.XSDate;
+import org.apache.xpath.xs.types.XSDateTime;
 import org.apache.xpath.xs.types.XSNumericType;
 import org.apache.xpath.xs.types.XSString;
 
@@ -800,8 +801,8 @@ public class ElemForEachGroup extends ElemTemplateElement
    * into a normalized data typed value of type java.lang.Object.
    * 
    * For the purpose of, evaluating grouping key XPath expressions for xsl:for-each-group, 
-   * the grouping keys are treated as of type string, number, boolean or xs:date. Any other 
-   * data type for grouping key is converted to a string value.
+   * the grouping keys are treated as of type string, number, boolean, xs:date or 
+   * xs:dateTime. Any other data type for grouping key is converted to a string value.
    */
   private Object getXPathEvaluationRawResult(XObject xpathEvalResult) {
       Object xpathRawResult = null;
@@ -825,7 +826,7 @@ public class ElemForEachGroup extends ElemTemplateElement
       else if (xpathEvalResult instanceof XSBoolean) {
           xpathRawResult = Boolean.valueOf(((XSBoolean)xpathEvalResult).value());
       }
-      else if (xpathEvalResult instanceof XSDate) {
+      else if ((xpathEvalResult instanceof XSDate) || (xpathEvalResult instanceof XSDateTime)) {
           xpathRawResult = xpathEvalResult;
       }
       else {
diff --git a/src/org/apache/xalan/templates/StylesheetRoot.java b/src/org/apache/xalan/templates/StylesheetRoot.java
index 9ac49c54..bed6ffc1 100644
--- a/src/org/apache/xalan/templates/StylesheetRoot.java
+++ b/src/org/apache/xalan/templates/StylesheetRoot.java
@@ -85,6 +85,12 @@ public class StylesheetRoot extends StylesheetComposed
     private Map<QName, InlineFunction> m_inlineFunctionVarMap = 
                                                   new HashMap<QName, InlineFunction>();
     
+    /*
+     * Within an object of this class, this class field keeps reference of 
+     * an XSLT transformation wide TransformerImpl object.  
+     */
+    private TransformerImpl m_transformerImpl = null;
+    
   /**
    * Uses an XSL stylesheet document.
    * @throws TransformerConfigurationException if the baseIdentifier can not be resolved to a URL.
@@ -207,7 +213,9 @@ public class StylesheetRoot extends StylesheetComposed
    */
   public Transformer newTransformer()
   {
-    return new TransformerImpl(this);
+    m_transformerImpl = new TransformerImpl(this); 
+    
+    return m_transformerImpl;
   }
   
 
@@ -1431,4 +1439,12 @@ public class StylesheetRoot extends StylesheetComposed
         this.m_inlineFunctionVarMap = inlineFunctionVarMap;
     }
 
+    public TransformerImpl getTransformerImpl() {
+        return m_transformerImpl;
+    }
+
+    public void setTransformerImpl(TransformerImpl transformerImpl) {
+        this.m_transformerImpl = transformerImpl;
+    }
+
 }
diff --git a/src/org/apache/xalan/templates/XSConstructorFunctionUtil.java b/src/org/apache/xalan/templates/XSConstructorFunctionUtil.java
index 5d8f5115..235afdb0 100644
--- a/src/org/apache/xalan/templates/XSConstructorFunctionUtil.java
+++ b/src/org/apache/xalan/templates/XSConstructorFunctionUtil.java
@@ -71,8 +71,9 @@ public class XSConstructorFunctionUtil {
      *  XPath function calls having other non-null XML namespaces are handling by XalanJ's
      *  extension function handling mechanism. 
      */
-    public static XObject processFuncExtFunctionOrXPathOpn(XPathContext xctxt, Expression expr, TransformerImpl transformer)
-                                                                                                              throws TransformerException, SAXException {        
+    public static XObject processFuncExtFunctionOrXPathOpn(XPathContext xctxt, Expression expr, 
+                                                           TransformerImpl transformer) 
+                                                                                        throws TransformerException, SAXException {        
         XObject evalResult = null;
         
         SourceLocator srcLocator = xctxt.getSAXLocator();
@@ -92,6 +93,10 @@ public class XSConstructorFunctionUtil {
             
             StylesheetRoot stylesheetRoot = (StylesheetRoot)stylesheetRootNode;
             
+            if (transformer == null) {
+               transformer = stylesheetRoot.getTransformerImpl();  
+            }
+            
             TemplateList templateList = stylesheetRoot.getTemplateListComposed();
             
             ElemTemplate elemTemplate = templateList.getTemplate(new QName(funcNamespace, funcName));
diff --git a/src/org/apache/xpath/composite/SequenceTypeSupport.java b/src/org/apache/xpath/composite/SequenceTypeSupport.java
index e1fa6cff..56997fef 100644
--- a/src/org/apache/xpath/composite/SequenceTypeSupport.java
+++ b/src/org/apache/xpath/composite/SequenceTypeSupport.java
@@ -804,12 +804,12 @@ public class SequenceTypeSupport {
         }
         else { 
             ResultSequence convertedResultSeq = new ResultSequence();
-            
-            DTMIterator dtmIter = xdmNodeSet.iterRaw();
+
+            DTMIterator dtmIter = (DTMIterator)xdmNodeSet; 
             
             int nextNodeDtmHandle;
                    
-            while ((nextNodeDtmHandle = dtmIter.nextNode()) != DTM.NULL) {               
+            while ((nextNodeDtmHandle = dtmIter.nextNode()) != DTM.NULL) {
                XNodeSet nodeSetItem = new XNodeSet(nextNodeDtmHandle, xctxt);
                
                String sequenceTypeNewXPathExprStr = null;
@@ -821,7 +821,14 @@ public class SequenceTypeSupport {
                }
                
                if (sequenceTypeKindTest != null) {
-                  DTM dtm = dtmIter.getDTM(nextNodeDtmHandle);
+                  DTM dtm = null;
+                  DTMManager dtmMgr = (DTMManager)xctxt; 
+                  if (dtmMgr != null) {
+                     dtm = dtmMgr.getDTM(nextNodeDtmHandle);
+                  }
+                  else {
+                     dtm = dtmIter.getDTM(nextNodeDtmHandle);
+                  }
                   
                   String nodeName = dtm.getNodeName(nextNodeDtmHandle);
                   String nodeNsUri = dtm.getNamespaceURI(nextNodeDtmHandle);
diff --git a/src/org/apache/xpath/functions/FuncExtFunction.java b/src/org/apache/xpath/functions/FuncExtFunction.java
index 0f41796a..95aaffd0 100644
--- a/src/org/apache/xpath/functions/FuncExtFunction.java
+++ b/src/org/apache/xpath/functions/FuncExtFunction.java
@@ -22,7 +22,6 @@ package org.apache.xpath.functions;
 
 import java.util.Vector;
 
-import javax.xml.XMLConstants;
 import javax.xml.transform.TransformerException;
 
 import org.apache.xalan.res.XSLMessages;
@@ -195,23 +194,22 @@ public class FuncExtFunction extends Function
       
     XObject result = null;
     
-    if (XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(this.getNamespace())) {
-       // An XPath 3.1 constructor function call, is syntactically similar
-       // to XalanJ extension function call (both have, syntax like 
-       // nsPrefix:functionName(..)). If the XML namespace of XPath function 
-       // name is http://www.w3.org/2001/XMLSchema, this class implements that
-       // as an XPath 3.1 constructor function call within this section of code.
-       try {
-          result = XSConstructorFunctionUtil.processFuncExtFunctionOrXPathOpn(
+    try {
+       // Attempting to resolve this function call, as XSLT stylesheet function call (i.e, for
+       // functions defined with XSLT stylesheet element xsl:function), or as XPath 3.1 
+       // constructor function call (i.e, function calls with syntax xs:type_name(..), where the 
+       // XML namespace prefix 'xs' is bound to XML namespace uri http://www.w3.org/2001/XMLSchema).
+       result = XSConstructorFunctionUtil.processFuncExtFunctionOrXPathOpn(
                                                                         xctxt, this, null);
-       } 
-       catch (TransformerException ex) {        
-          throw new TransformerException(ex.getMessage(), xctxt.getSAXLocator());
-       } 
-       catch (SAXException ex) {        
-          throw new TransformerException(ex.getMessage(), xctxt.getSAXLocator());
-       }
+    } 
+    catch (TransformerException ex) {        
+       throw new TransformerException(ex.getMessage(), xctxt.getSAXLocator());
+    } 
+    catch (SAXException ex) {        
+       throw new TransformerException(ex.getMessage(), xctxt.getSAXLocator());
+    }
        
+    if (result != null) {
        return result;
     }
     
diff --git a/tests/inline_function_expr/gold/test10.out b/tests/inline_function_expr/gold/test10.out
new file mode 100644
index 00000000..591b3b6b
--- /dev/null
+++ b/tests/inline_function_expr/gold/test10.out
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><result>hello world</result>
diff --git a/tests/inline_function_expr/gold/test11.out b/tests/inline_function_expr/gold/test11.out
new file mode 100644
index 00000000..b540bc0a
--- /dev/null
+++ b/tests/inline_function_expr/gold/test11.out
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?><result>
+  <elems a="1">
+    <elem>A</elem>
+    <elem>D</elem>
+    <elem>E</elem>
+    <elem>G</elem>
+  </elems>
+  <elems a="2">
+    <elem>B</elem>
+    <elem>C</elem>
+  </elems>
+  <elems a="3">
+    <elem>F</elem>
+  </elems>
+</result>
diff --git a/tests/inline_function_expr/gold/test12.out b/tests/inline_function_expr/gold/test12.out
new file mode 100644
index 00000000..d43bcd4a
--- /dev/null
+++ b/tests/inline_function_expr/gold/test12.out
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?><result>
+  <A/>
+  <elems a="1">
+    <elem>A</elem>
+    <elem>D</elem>
+    <elem>E</elem>
+    <elem>G</elem>
+  </elems>
+  <elems a="2">
+    <elem>B</elem>
+    <elem>C</elem>
+  </elems>
+  <elems a="3">
+    <elem>F</elem>
+  </elems>
+  <B/>
+</result>
diff --git a/tests/inline_function_expr/test10.xsl b/tests/inline_function_expr/test10.xsl
new file mode 100644
index 00000000..22c06036
--- /dev/null
+++ b/tests/inline_function_expr/test10.xsl
@@ -0,0 +1,47 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xs="http://www.w3.org/2001/XMLSchema"
+                xmlns:fn0="http://fn0"
+                exclude-result-prefixes="xs fn0"
+                version="3.0">
+                
+  <!-- Author: mukulg@apache.org -->
+  
+  <!-- An XSLT stylesheet test case, that tests an XPath 3.1 inline 
+       function expression calling a stylesheet 'xsl:function' function. 
+  -->                
+                
+  <xsl:output method="xml" indent="yes"/>
+  
+  <xsl:variable name="func1" select="function($a as xs:string) as xs:string { fn0:getMesg($a) }"/>
+  
+  <xsl:template match="/">     
+     <result>
+        <xsl:value-of select="$func1('world')"/>   
+     </result>
+  </xsl:template>
+  
+  <xsl:function name="fn0:getMesg" as="xs:string">
+     <xsl:param name="mesg" as="xs:string"/>
+    
+     <xsl:sequence select="'hello ' || $mesg"/>
+  </xsl:function>
+  
+  <!--
+      * 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>
\ No newline at end of file
diff --git a/tests/inline_function_expr/test11.xsl b/tests/inline_function_expr/test11.xsl
new file mode 100644
index 00000000..99412907
--- /dev/null
+++ b/tests/inline_function_expr/test11.xsl
@@ -0,0 +1,62 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xs="http://www.w3.org/2001/XMLSchema"
+                xmlns:fn0="http://fn0"
+                exclude-result-prefixes="xs fn0"
+                version="3.0">
+                
+  <!-- Author: mukulg@apache.org -->
+  
+  <!-- use with test1_e.xml -->
+  
+  <!-- An XSLT stylesheet test case, that tests an XPath 3.1 inline 
+       function expression calling a stylesheet 'xsl:function' function.
+       This stylesheet test case also illustrates that, an XPath inline
+       function expression can produce XML complex content via xsl:function
+       calls.
+  -->                
+                
+  <xsl:output method="xml" indent="yes"/>
+  
+  <xsl:variable name="func1" select="function($nodeSet as element()*) as element()* { fn0:makeGroups($nodeSet) }"/>
+  
+  <xsl:template match="/info">     
+     <result>
+        <xsl:copy-of select="$func1(elem)"/>   
+     </result>
+  </xsl:template>
+  
+  <xsl:function name="fn0:makeGroups" as="element()*">
+    <xsl:param name="nodeSet" as="element()*"/>
+    
+    <xsl:for-each-group select="$nodeSet" group-by="xs:integer(@a)">
+      <elems a="{current-grouping-key()}">
+         <xsl:apply-templates select="current-group()"/>
+      </elems>
+    </xsl:for-each-group>
+  </xsl:function>
+  
+  <xsl:template match="elem">
+    <elem>
+       <xsl:copy-of select="node()"/>
+    </elem>
+  </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>
\ No newline at end of file
diff --git a/tests/inline_function_expr/test12.xsl b/tests/inline_function_expr/test12.xsl
new file mode 100644
index 00000000..b3de129b
--- /dev/null
+++ b/tests/inline_function_expr/test12.xsl
@@ -0,0 +1,74 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xs="http://www.w3.org/2001/XMLSchema"
+                xmlns:fn0="http://fn0"
+                exclude-result-prefixes="xs fn0"
+                version="3.0">
+                
+  <!-- Author: mukulg@apache.org -->
+  
+  <!-- use with test1_e.xml -->
+  
+  <!-- An XSLT stylesheet test case, that tests an XPath 3.1 inline 
+       function expression calling a stylesheet 'xsl:function' function.
+       This stylesheet test case also illustrates that, an XPath inline
+       function expression can produce XML complex content via xsl:function
+       calls.
+  -->                
+                
+  <xsl:output method="xml" indent="yes"/>
+  
+  <!-- This XPath inline function expression reference, concatenates results 
+       of multiple stylesheet function calls. 
+  -->
+  <xsl:variable name="func1" select="function($nodeSet as element()*) as element()* { (fn0:GetElemA(), fn0:makeGroups($nodeSet), 
+                                                                                                                    fn0:GetElemB()) }"/>
+  
+  <xsl:template match="/info">     
+     <result>
+        <xsl:copy-of select="$func1(elem)"/>   
+     </result>
+  </xsl:template>
+  
+  <xsl:function name="fn0:makeGroups" as="element()*">
+    <xsl:param name="nodeSet" as="element()*"/>
+    
+    <xsl:for-each-group select="$nodeSet" group-by="xs:integer(@a)">
+      <elems a="{current-grouping-key()}">
+         <xsl:apply-templates select="current-group()"/>
+      </elems>
+    </xsl:for-each-group>
+  </xsl:function>
+  
+  <xsl:function name="fn0:GetElemA" as="element()">
+    <A/>
+  </xsl:function>
+  
+  <xsl:function name="fn0:GetElemB" as="element()">
+    <B/>
+  </xsl:function>
+  
+  <xsl:template match="elem">
+    <elem>
+       <xsl:copy-of select="node()"/>
+    </elem>
+  </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>
\ No newline at end of file
diff --git a/tests/inline_function_expr/test1_e.xml b/tests/inline_function_expr/test1_e.xml
new file mode 100644
index 00000000..c7ebfd5f
--- /dev/null
+++ b/tests/inline_function_expr/test1_e.xml
@@ -0,0 +1,9 @@
+<info>
+  <elem a="1">A</elem>
+  <elem a="2">B</elem>
+  <elem a="2">C</elem>
+  <elem a="1">D</elem>
+  <elem a="1">E</elem>
+  <elem a="3">F</elem>
+  <elem a="1">G</elem>
+</info>
\ No newline at end of file
diff --git a/tests/org/apache/xalan/xpath3/InlineFunctionItemExprTests.java b/tests/org/apache/xalan/xpath3/InlineFunctionItemExprTests.java
index c123b006..4579ef6c 100644
--- a/tests/org/apache/xalan/xpath3/InlineFunctionItemExprTests.java
+++ b/tests/org/apache/xalan/xpath3/InlineFunctionItemExprTests.java
@@ -137,5 +137,35 @@ public class InlineFunctionItemExprTests extends XslTransformTestsUtil {
         
         runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);
     }
+    
+    @Test
+    public void xslInlineFunctionExprTest10() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test10.xsl"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test10.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test10.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);
+    }
+    
+    @Test
+    public void xslInlineFunctionExprTest11() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test1_e.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test11.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test11.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);
+    }
+    
+    @Test
+    public void xslInlineFunctionExprTest12() {
+        String xmlFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test1_e.xml"; 
+        String xslFilePath = XSL_TRANSFORM_INPUT_DIRPATH + "test12.xsl";
+        
+        String goldFilePath = XSL_TRANSFORM_GOLD_DIRPATH + "test12.out";                
+        
+        runXslTransformAndAssertOutput(xmlFilePath, xslFilePath, goldFilePath, null);
+    }
 
 }
diff --git a/tests/org/apache/xalan/xslt3/Xsl3TestSuite1.java b/tests/org/apache/xalan/xslt3/Xsl3TestSuite1.java
index db4f362a..6d037382 100644
--- a/tests/org/apache/xalan/xslt3/Xsl3TestSuite1.java
+++ b/tests/org/apache/xalan/xslt3/Xsl3TestSuite1.java
@@ -18,6 +18,9 @@ package org.apache.xalan.xslt3;
 
 import org.apache.xalan.xpath3.FnDataTests;
 import org.apache.xalan.xpath3.FnDocTests;
+import org.apache.xalan.xpath3.FnForEachTests;
+import org.apache.xalan.xpath3.InlineFunctionItemExprTests;
+import org.apache.xalan.xpath3.ValueComparisonTests;
 import org.apache.xalan.xpath3.XsDateTimeTests;
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
@@ -32,7 +35,9 @@ import org.junit.runners.Suite.SuiteClasses;
  */
 @RunWith(Suite.class)
 @SuiteClasses({ FnDocTests.class, FnDataTests.class, RecursiveFunctionTests.class,
-                XslFunctionTests.class, HigherOrderFunctionTests.class, XsDateTimeTests.class })
+                XslFunctionTests.class, HigherOrderFunctionTests.class, XsDateTimeTests.class,
+                ValueComparisonTests.class, InlineFunctionItemExprTests.class, 
+                FnForEachTests.class })
 public class Xsl3TestSuite1 {
 
 }
diff --git a/tests/org/apache/xalan/xslt3/Xsl3TestSuite2.java b/tests/org/apache/xalan/xslt3/Xsl3TestSuite2.java
index 2c586496..093f8ec9 100644
--- a/tests/org/apache/xalan/xslt3/Xsl3TestSuite2.java
+++ b/tests/org/apache/xalan/xslt3/Xsl3TestSuite2.java
@@ -29,7 +29,6 @@ import org.apache.xalan.xpath3.FnFilterTests;
 import org.apache.xalan.xpath3.FnFoldLeftTests;
 import org.apache.xalan.xpath3.FnFoldRightTests;
 import org.apache.xalan.xpath3.FnForEachPairTests;
-import org.apache.xalan.xpath3.FnForEachTests;
 import org.apache.xalan.xpath3.FnIndexOfTests;
 import org.apache.xalan.xpath3.FnMaxTests;
 import org.apache.xalan.xpath3.FnMinTests;
@@ -43,7 +42,6 @@ import org.apache.xalan.xpath3.FnTokenizeTests;
 import org.apache.xalan.xpath3.FnUnparsedTextTests;
 import org.apache.xalan.xpath3.ForExprTests;
 import org.apache.xalan.xpath3.IfExprTests;
-import org.apache.xalan.xpath3.InlineFunctionItemExprTests;
 import org.apache.xalan.xpath3.InstanceOfExprTests;
 import org.apache.xalan.xpath3.LetExprTests;
 import org.apache.xalan.xpath3.NodeComparisonTests;
@@ -56,7 +54,6 @@ import org.apache.xalan.xpath3.SimpleMapOperatorTests;
 import org.apache.xalan.xpath3.StringConcatExprTests;
 import org.apache.xalan.xpath3.StringTests;
 import org.apache.xalan.xpath3.TrignometricAndExponentialFunctionTests;
-import org.apache.xalan.xpath3.ValueComparisonTests;
 import org.apache.xalan.xpath3.XPathArithmeticOnDurationValuesTests;
 import org.apache.xalan.xpath3.XsConstructorFunctionTests;
 import org.apache.xalan.xpath3.XsDurationComponentExtractionFunctionTests;
@@ -77,8 +74,7 @@ import org.junit.runners.Suite.SuiteClasses;
                 FnUnparsedTextTests.class, FnTokenizeTests.class, FnStringJoinTests.class,
                 FnAbsTests.class, StringTests.class, XsConstructorFunctionTests.class, 
                 FnIndexOfTests.class, SequenceTests.class, RangeExprTests.class, 
-                W3c_xslt30_IterateTests.class, W3c_xslt30_AxesTests.class, XslIterateTests.class,
-                ValueComparisonTests.class, InlineFunctionItemExprTests.class, FnForEachTests.class, 
+                W3c_xslt30_IterateTests.class, W3c_xslt30_AxesTests.class, XslIterateTests.class,                 
                 FnFilterTests.class, DynamicFunctionCallTests.class, IfExprTests.class, 
                 ForExprTests.class, LetExprTests.class, FnDistinctValuesTests.class,
                 TrignometricAndExponentialFunctionTests.class, BuiltinFunctionsNamespceTests.class,


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