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 2026/01/02 12:32:21 UTC

(xalan-java) branch xalan-j_xslt3.0_mvn updated: committing few xalan-j xslt 3.0 implementation improvements and deleting javadocs @serial annotation from implementation

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 0d6b56927 committing few xalan-j xslt 3.0 implementation improvements and deleting javadocs @serial annotation from implementation
0d6b56927 is described below

commit 0d6b5692737ecbe4d8c7d3e69482f23b9fec1795
Author: Mukul Gandhi <ga...@gmail.com>
AuthorDate: Fri Jan 2 18:01:46 2026 +0530

    committing few xalan-j xslt 3.0 implementation improvements and deleting javadocs @serial annotation from implementation
---
 .../apache/xalan/client/XSLTProcessorApplet.java   |  18 +--
 .../xalan/processor/ProcessorImportSchema.java     |   2 +-
 .../apache/xalan/processor/ProcessorInclude.java   |   2 +-
 .../org/apache/xalan/processor/XSLTSchema.java     |   7 +-
 src/main/java/org/apache/xalan/templates/AVT.java  |  10 +-
 .../org/apache/xalan/templates/AVTPartSimple.java  |   2 +-
 .../xalan/templates/DecimalFormatProperties.java   |   4 +-
 .../apache/xalan/templates/ElemAttributeSet.java   |   2 +-
 .../apache/xalan/templates/ElemCallTemplate.java   |   6 +-
 .../apache/xalan/templates/ElemExtensionCall.java  |  10 +-
 .../apache/xalan/templates/ElemExtensionDecl.java  |   6 +-
 .../xalan/templates/ElemExtensionScript.java       |   4 +-
 .../java/org/apache/xalan/templates/ElemIf.java    |   2 +-
 .../apache/xalan/templates/ElemLiteralResult.java  |  18 +--
 .../org/apache/xalan/templates/ElemNumber.java     |  18 +--
 .../java/org/apache/xalan/templates/ElemSort.java  |  12 +-
 .../xalan/templates/ElemTemplateElement.java       |  26 +--
 .../java/org/apache/xalan/templates/ElemUse.java   |   2 +-
 .../org/apache/xalan/templates/ElemValueOf.java    |   2 +-
 .../org/apache/xalan/templates/ElemVariable.java   |   4 +-
 .../java/org/apache/xalan/templates/ElemWhen.java  |   2 +-
 .../org/apache/xalan/templates/ElemWithParam.java  |   4 +-
 .../org/apache/xalan/templates/KeyDeclaration.java |   6 +-
 .../org/apache/xalan/templates/NamespaceAlias.java |   8 +-
 .../apache/xalan/templates/OutputProperties.java   |   2 +-
 .../org/apache/xalan/templates/WhiteSpaceInfo.java |   2 +-
 .../java/org/apache/xalan/templates/XMLNSDecl.java |   6 +-
 .../xalan/templates/XUnresolvedVariable.java       |   2 +-
 .../transformer/ForEachGroupXslSortSorter.java     | 180 +++++----------------
 .../org/apache/xalan/transformer/KeyIterator.java  |   4 +-
 .../apache/xalan/transformer/KeyRefIterator.java   |   2 +-
 .../org/apache/xalan/transformer/NodeSorter.java   |  47 +++---
 .../XslForEachGroupNodeCompareElem.java            | 144 +++++++++++++++++
 src/main/java/org/apache/xml/dtm/DTMException.java |   4 +-
 .../java/org/apache/xml/serializer/utils/URI.java  |  14 +-
 .../serializer/utils/WrappedRuntimeException.java  |   2 +-
 src/main/java/org/apache/xml/utils/NameSpace.java  |   6 +-
 src/main/java/org/apache/xml/utils/NodeVector.java |   8 +-
 src/main/java/org/apache/xml/utils/ObjectPool.java |   4 +-
 src/main/java/org/apache/xml/utils/QName.java      |   8 +-
 .../org/apache/xml/utils/SAXSourceLocator.java     |   2 +-
 .../apache/xml/utils/SerializableLocatorImpl.java  |   8 +-
 .../java/org/apache/xml/utils/StringVector.java    |   8 +-
 src/main/java/org/apache/xml/utils/URI.java        |  14 +-
 .../apache/xml/utils/WrappedRuntimeException.java  |   2 +-
 src/main/java/org/apache/xpath/NodeSet.java        |  10 +-
 src/main/java/org/apache/xpath/NodeSetDTM.java     |   2 +-
 src/main/java/org/apache/xpath/VariableStack.java  |   8 +-
 src/main/java/org/apache/xpath/XPathException.java |   4 +-
 .../java/org/apache/xpath/axes/AxesWalker.java     |   4 +-
 .../org/apache/xpath/axes/FilterExprIterator.java  |   2 +-
 .../org/apache/xpath/axes/LocPathIterator.java     |   6 +-
 .../org/apache/xpath/axes/PredicatedNodeTest.java  |   4 +-
 .../org/apache/xpath/axes/UnionPathIterator.java   |   4 +-
 .../org/apache/xpath/axes/WalkingIterator.java     |   4 +-
 .../XSL3ConstructorOrExtensionFunction.java        |   8 +-
 .../apache/xpath/operations/UnaryOperation.java    |   2 +-
 .../org/apache/xpath/patterns/FunctionPattern.java |   2 +-
 .../java/org/apache/xpath/patterns/NodeTest.java   |  10 +-
 .../org/apache/xpath/patterns/UnionPattern.java    |   2 +-
 src/main/java/org/apache/xpath/regex/Pattern.java  |   4 +-
 61 files changed, 387 insertions(+), 335 deletions(-)

diff --git a/src/main/java/org/apache/xalan/client/XSLTProcessorApplet.java b/src/main/java/org/apache/xalan/client/XSLTProcessorApplet.java
index 349bf0781..4fffffd80 100644
--- a/src/main/java/org/apache/xalan/client/XSLTProcessorApplet.java
+++ b/src/main/java/org/apache/xalan/client/XSLTProcessorApplet.java
@@ -71,12 +71,12 @@ public class XSLTProcessorApplet extends Applet
   transient TransformerFactory m_tfactory = null;
 
   /**
-   * @serial
+   * 
    */
   private String m_styleURL;
 
   /**
-   * @serial
+   * 
    */
   private String m_documentURL;
 
@@ -85,12 +85,12 @@ public class XSLTProcessorApplet extends Applet
   //--------------------------------------------------------------------------
 
   /**
-   * @serial
+   * 
    */
   private final String PARAM_styleURL = "styleURL";
 
   /**
-   * @serial
+   * 
    */
   private final String PARAM_documentURL = "documentURL";
 
@@ -99,29 +99,29 @@ public class XSLTProcessorApplet extends Applet
   // are cached.
 
   /**
-   * @serial
+   * 
    */
   private String m_styleURLOfCached = null;
 
   /**
-   * @serial
+   * 
    */
   private String m_documentURLOfCached = null;
 
   /**
    * Save this for use on the worker thread; may not be necessary.
-   * @serial
+   * 
    */
   private URL m_codeBase = null;
   
   /**
-   * @serial
+   * 
    */
   private String m_treeURL = null;
 
   /** 
    * DocumentBase URL
-   * @serial       
+   *        
    */
   private URL m_documentBase = null;
 
diff --git a/src/main/java/org/apache/xalan/processor/ProcessorImportSchema.java b/src/main/java/org/apache/xalan/processor/ProcessorImportSchema.java
index 47e2eed0d..10a7802ef 100644
--- a/src/main/java/org/apache/xalan/processor/ProcessorImportSchema.java
+++ b/src/main/java/org/apache/xalan/processor/ProcessorImportSchema.java
@@ -54,7 +54,7 @@ public class ProcessorImportSchema extends XSLTElementProcessor
   
   /**
    * The base URL of the XSL document.
-   * @serial
+   * 
    */
   private String m_href = null;
 
diff --git a/src/main/java/org/apache/xalan/processor/ProcessorInclude.java b/src/main/java/org/apache/xalan/processor/ProcessorInclude.java
index d5992eaec..6bbb83b0f 100644
--- a/src/main/java/org/apache/xalan/processor/ProcessorInclude.java
+++ b/src/main/java/org/apache/xalan/processor/ProcessorInclude.java
@@ -65,7 +65,7 @@ public class ProcessorInclude extends XSLTElementProcessor
 
   /**
    * The base URL of the XSL document.
-   * @serial
+   * 
    */
   private String m_href = null;
 
diff --git a/src/main/java/org/apache/xalan/processor/XSLTSchema.java b/src/main/java/org/apache/xalan/processor/XSLTSchema.java
index af6f167cd..cc26dd9db 100644
--- a/src/main/java/org/apache/xalan/processor/XSLTSchema.java
+++ b/src/main/java/org/apache/xalan/processor/XSLTSchema.java
@@ -423,12 +423,7 @@ public class XSLTSchema extends XSLTElementDef
     // Default: "node()"
     // xsl:apply-templates                                           
     XSLTAttributeDef selectAttrDefNode = new XSLTAttributeDef(null, "select",
-                                           XSLTAttributeDef.T_EXPR, false, XSLTAttributeDef.ERROR, "node()");
-    // Optional
-    // Default: "."
-    // xsl:sort                                        
-    XSLTAttributeDef selectAttrDefDot = new XSLTAttributeDef(null, "select",
-                                          XSLTAttributeDef.T_EXPR, false, XSLTAttributeDef.ERROR, ".");    
+                                           XSLTAttributeDef.T_EXPR, false, XSLTAttributeDef.ERROR, "node()");   
     
     // xsl:key                                      
     XSLTAttributeDef matchAttrRequired = new XSLTAttributeDef(null, "match",
diff --git a/src/main/java/org/apache/xalan/templates/AVT.java b/src/main/java/org/apache/xalan/templates/AVT.java
index b25319ce9..2e5bfefba 100644
--- a/src/main/java/org/apache/xalan/templates/AVT.java
+++ b/src/main/java/org/apache/xalan/templates/AVT.java
@@ -56,13 +56,13 @@ public class AVT implements java.io.Serializable, XSLTVisitable
   
   /**
    * If the AVT is not complex, just hold the simple string.
-   * @serial
+   * 
    */
   private String m_simpleString = null;
 
   /**
    * If the AVT is complex, hold a Vector of AVTParts.
-   * @serial
+   * 
    */
   private Vector m_parts = null;
   
@@ -70,7 +70,7 @@ public class AVT implements java.io.Serializable, XSLTVisitable
 
   /**
    * The name of the attribute.
-   * @serial
+   * 
    */
   private String m_rawName;
 
@@ -96,7 +96,7 @@ public class AVT implements java.io.Serializable, XSLTVisitable
 
   /**
    * The name of the attribute.
-   * @serial
+   * 
    */
   private String m_name;
 
@@ -122,7 +122,7 @@ public class AVT implements java.io.Serializable, XSLTVisitable
 
   /**
    * The namespace URI of the owning attribute.
-   * @serial
+   * 
    */
   private String m_uri;
 
diff --git a/src/main/java/org/apache/xalan/templates/AVTPartSimple.java b/src/main/java/org/apache/xalan/templates/AVTPartSimple.java
index c42fe0b3a..85be8810b 100644
--- a/src/main/java/org/apache/xalan/templates/AVTPartSimple.java
+++ b/src/main/java/org/apache/xalan/templates/AVTPartSimple.java
@@ -33,7 +33,7 @@ public class AVTPartSimple extends AVTPart
 
   /**
    * Simple string value;
-   * @serial
+   * 
    */
   private String m_val;
 
diff --git a/src/main/java/org/apache/xalan/templates/DecimalFormatProperties.java b/src/main/java/org/apache/xalan/templates/DecimalFormatProperties.java
index 84adc2607..7b24dd68d 100644
--- a/src/main/java/org/apache/xalan/templates/DecimalFormatProperties.java
+++ b/src/main/java/org/apache/xalan/templates/DecimalFormatProperties.java
@@ -50,7 +50,7 @@ public class DecimalFormatProperties extends ElemTemplateElement
     static final long serialVersionUID = -6559409339256269446L;
 
   /** An instance of DecimalFormatSymbols for this element.
-   *  @serial       */
+   *         */
   DecimalFormatSymbols m_dfs;
 
   /**
@@ -96,7 +96,7 @@ public class DecimalFormatProperties extends ElemTemplateElement
   /**
    * If there is a name attribute, then the element declares a named
    * decimal-format; otherwise, it declares the default decimal-format.
-   * @serial
+   * 
    */
   private QName m_qname = null;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemAttributeSet.java b/src/main/java/org/apache/xalan/templates/ElemAttributeSet.java
index a6c903601..ee7ae1f4d 100644
--- a/src/main/java/org/apache/xalan/templates/ElemAttributeSet.java
+++ b/src/main/java/org/apache/xalan/templates/ElemAttributeSet.java
@@ -46,7 +46,7 @@ public class ElemAttributeSet extends ElemUse
 
   /**
    * The name attribute specifies the name of the attribute set.
-   * @serial
+   * 
    */
   public QName m_qname = null;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java b/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java
index bb0b2b4ae..bc0f9bda2 100644
--- a/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java
+++ b/src/main/java/org/apache/xalan/templates/ElemCallTemplate.java
@@ -47,7 +47,7 @@ public class ElemCallTemplate extends ElemForEach
   /**
    * An xsl:call-template element invokes a template by name;
    * it has a required name attribute that identifies the template to be invoked.
-   * @serial
+   * 
    */
   public QName m_templateName = null;
 
@@ -77,7 +77,7 @@ public class ElemCallTemplate extends ElemForEach
 
   /**
    * The template which is named by QName.
-   * @serial
+   * 
    */
   private ElemTemplate m_template = null;
   
@@ -362,7 +362,7 @@ public class ElemCallTemplate extends ElemForEach
   }
   
   /** Vector of xsl:param elements associated with this element. 
-   *  @serial */
+   *   */
   protected ElemWithParam[] m_paramElems = null;
 
   /**
diff --git a/src/main/java/org/apache/xalan/templates/ElemExtensionCall.java b/src/main/java/org/apache/xalan/templates/ElemExtensionCall.java
index 0e3f2e657..b7f1e3ea7 100644
--- a/src/main/java/org/apache/xalan/templates/ElemExtensionCall.java
+++ b/src/main/java/org/apache/xalan/templates/ElemExtensionCall.java
@@ -40,23 +40,23 @@ public class ElemExtensionCall extends ElemLiteralResult
     static final long serialVersionUID = 3171339708500216920L;
 
   /** The Namespace URI for this extension call element.
-   *  @serial          */
+   *            */
   String m_extns;
 
   /** Language used by extension.
-   *  @serial          */
+   *            */
   String m_lang;
 
   /** URL pointing to extension.
-   *  @serial          */
+   *            */
   String m_srcURL;
 
   /** Source for script.
-   *  @serial          */
+   *            */
   String m_scriptSrc;
 
   /** Declaration for Extension element. 
-   *  @serial          */
+   *            */
   ElemExtensionDecl m_decl = null;
 
   /**
diff --git a/src/main/java/org/apache/xalan/templates/ElemExtensionDecl.java b/src/main/java/org/apache/xalan/templates/ElemExtensionDecl.java
index 322e22c9b..3f56f0a01 100644
--- a/src/main/java/org/apache/xalan/templates/ElemExtensionDecl.java
+++ b/src/main/java/org/apache/xalan/templates/ElemExtensionDecl.java
@@ -48,7 +48,7 @@ public class ElemExtensionDecl extends ElemTemplateElement
   }
 
   /** Prefix string for this extension element.
-   *  @serial         */
+   *           */
   private String m_prefix = null;
 
   /**
@@ -74,7 +74,7 @@ public class ElemExtensionDecl extends ElemTemplateElement
   }
 
   /** StringVector holding the names of functions defined in this extension.
-   *  @serial     */
+   *       */
   private StringVector m_functions = new StringVector();
 
   /**
@@ -130,7 +130,7 @@ public class ElemExtensionDecl extends ElemTemplateElement
   }
 
   /** StringVector of elements defined in this extension.
-   *  @serial         */
+   *           */
   private StringVector m_elements = null;
 
   /**
diff --git a/src/main/java/org/apache/xalan/templates/ElemExtensionScript.java b/src/main/java/org/apache/xalan/templates/ElemExtensionScript.java
index ce3d189c7..6d2a84d24 100644
--- a/src/main/java/org/apache/xalan/templates/ElemExtensionScript.java
+++ b/src/main/java/org/apache/xalan/templates/ElemExtensionScript.java
@@ -39,7 +39,7 @@ public class ElemExtensionScript extends ElemTemplateElement
   }
 
   /** Language used in extension.
-   *  @serial          */
+   *            */
   private String m_lang = null;
 
   /**
@@ -65,7 +65,7 @@ public class ElemExtensionScript extends ElemTemplateElement
   }
 
   /** Extension handler.
-   *  @serial          */
+   *            */
   private String m_src = null;
 
   /**
diff --git a/src/main/java/org/apache/xalan/templates/ElemIf.java b/src/main/java/org/apache/xalan/templates/ElemIf.java
index 37dcbd967..8f0a4faaa 100644
--- a/src/main/java/org/apache/xalan/templates/ElemIf.java
+++ b/src/main/java/org/apache/xalan/templates/ElemIf.java
@@ -48,7 +48,7 @@ public class ElemIf extends ElemTemplateElement
 
   /**
    * The xsl:if element must have a test attribute, which specifies an expression.
-   * @serial
+   * 
    */
   private XPath m_test = null;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemLiteralResult.java b/src/main/java/org/apache/xalan/templates/ElemLiteralResult.java
index df097e16e..6bf37c623 100644
--- a/src/main/java/org/apache/xalan/templates/ElemLiteralResult.java
+++ b/src/main/java/org/apache/xalan/templates/ElemLiteralResult.java
@@ -70,7 +70,7 @@ public class ElemLiteralResult extends ElemUse
    * Tells if this element represents a root element
    * that is also the stylesheet element.
    * TODO: This should be a derived class.
-   * @serial
+   * 
    */
   private boolean isLiteralResultAsStylesheet = false;
 
@@ -127,12 +127,12 @@ public class ElemLiteralResult extends ElemUse
    * The created element node will have the attribute nodes
    * that were present on the element node in the stylesheet tree,
    * other than attributes with names in the XSLT namespace.
-   * @serial
+   * 
    */
   private List m_avts = null;
 
   /** List of attributes with the XSLT namespace.
-   *  @serial */
+   *   */
   private List m_xslAttr = null;
 
   /**
@@ -423,7 +423,7 @@ public class ElemLiteralResult extends ElemUse
 
   /**
    * The namespace of the element to be created.
-   * @serial
+   * 
    */
   private String m_namespace;
 
@@ -459,7 +459,7 @@ public class ElemLiteralResult extends ElemUse
 
   /**
    * The local name of the element to be created.
-   * @serial
+   * 
    */
   private String m_localName;
 
@@ -490,7 +490,7 @@ public class ElemLiteralResult extends ElemUse
 
   /**
    * The raw name of the element to be created.
-   * @serial
+   * 
    */
   private String m_rawName;
 
@@ -596,7 +596,7 @@ public class ElemLiteralResult extends ElemUse
 
   /**
    * The "extension-element-prefixes" property, actually contains URIs.
-   * @serial
+   * 
    */
   private StringVector m_ExtensionElementURIs;
 
@@ -1286,7 +1286,7 @@ public class ElemLiteralResult extends ElemUse
 
   /**
    * The XSLT version as specified by this element.
-   * @serial
+   * 
    */
   private String m_version;
 
@@ -1314,7 +1314,7 @@ public class ElemLiteralResult extends ElemUse
 
   /**
    * The "exclude-result-prefixes" property.
-   * @serial
+   * 
    */
   private StringVector m_excludeResultPrefixes;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemNumber.java b/src/main/java/org/apache/xalan/templates/ElemNumber.java
index 3003e23bb..24d977909 100644
--- a/src/main/java/org/apache/xalan/templates/ElemNumber.java
+++ b/src/main/java/org/apache/xalan/templates/ElemNumber.java
@@ -131,7 +131,7 @@ public class ElemNumber extends ElemTemplateElement
     
   /**
    * Only nodes are counted that match this pattern.
-   * @serial
+   * 
    */
   private XPath m_countMatchPattern = null;
 
@@ -176,7 +176,7 @@ public class ElemNumber extends ElemTemplateElement
    * For level="any:
    * Only nodes after the first node before the
    * current node that match the from pattern are considered.
-   * @serial
+   * 
    */
   private XPath m_fromMatchPattern = null;
 
@@ -238,7 +238,7 @@ public class ElemNumber extends ElemTemplateElement
    * the union of the members of the preceding and ancestor-or-self axes). If the
    * from attribute is specified, then only nodes after the first node before the
    * current node that match the from pattern are considered.
-   * @serial
+   * 
    */
   private int m_level = Constants.NUMBERLEVEL_SINGLE;
 
@@ -272,7 +272,7 @@ public class ElemNumber extends ElemTemplateElement
    * The value attribute contains an expression. The expression is evaluated
    * and the resulting object is converted to a number as if by a call to the
    * number function.
-   * @serial
+   * 
    */
   private XPath m_valueExpr = null;
 
@@ -306,7 +306,7 @@ public class ElemNumber extends ElemTemplateElement
    * The "format" attribute is used to control conversion of a list of
    * numbers into a string.
    * @see <a href="http://www.w3.org/TR/xslt#convert">convert in XSLT Specification</a>
-   * @serial
+   * 
    */
   private AVT m_format_avt = null;
 
@@ -365,7 +365,7 @@ public class ElemNumber extends ElemTemplateElement
   /**
    * When numbering with an alphabetic sequence, the lang attribute
    * specifies which language's alphabet is to be used.
-   * @serial
+   * 
    */
   private AVT m_lang_avt = null;
 
@@ -430,7 +430,7 @@ public class ElemNumber extends ElemTemplateElement
   /**
    * The letter-value attribute disambiguates between numbering
    * sequences that use letters.
-   * @serial
+   * 
    */
   private AVT m_lettervalue_avt = null;
 
@@ -464,7 +464,7 @@ public class ElemNumber extends ElemTemplateElement
    * The grouping-separator attribute gives the separator
    * used as a grouping (e.g. thousands) separator in decimal
    * numbering sequences.
-   * @serial
+   * 
    */
   private AVT m_groupingSeparator_avt = null;
 
@@ -498,7 +498,7 @@ public class ElemNumber extends ElemTemplateElement
 
   /**
    * The optional grouping-size specifies the size (normally 3) of the grouping.
-   * @serial
+   * 
    */
   private AVT m_groupingSize_avt = null;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemSort.java b/src/main/java/org/apache/xalan/templates/ElemSort.java
index 693261ef7..d5e8b03bd 100644
--- a/src/main/java/org/apache/xalan/templates/ElemSort.java
+++ b/src/main/java/org/apache/xalan/templates/ElemSort.java
@@ -37,7 +37,7 @@ public class ElemSort extends ElemTemplateElement
 
   /**
    * xsl:sort has a select attribute whose value is an expression.
-   * @serial
+   * 
    */
   private XPath m_selectExpression = null;
 
@@ -85,7 +85,7 @@ public class ElemSort extends ElemTemplateElement
 
   /**
    * lang specifies the language of the sort keys.
-   * @serial
+   * 
    */
   private AVT m_lang_avt = null;
 
@@ -118,7 +118,7 @@ public class ElemSort extends ElemTemplateElement
   /**
    * data-type specifies the data type of the
    * strings to be sorted.
-   * @serial
+   * 
    */
   private AVT m_dataType_avt = null;
 
@@ -199,7 +199,7 @@ public class ElemSort extends ElemTemplateElement
   /**
    * order specifies whether the strings should be sorted in ascending
    * or descending order.
-   * @serial
+   * 
    */
   private AVT m_order_avt = null;
 
@@ -232,7 +232,7 @@ public class ElemSort extends ElemTemplateElement
   /**
    * case-order has the value upper-first or lower-first.
    * The default value is language dependent.
-   * @serial
+   * 
    */
   private AVT m_caseorder_avt = null;
 
@@ -247,7 +247,7 @@ public class ElemSort extends ElemTemplateElement
    *
    * @param v The value to set for the "case-order" attribute
    * 
-   * @serial
+   * 
    */
   public void setCaseOrder(AVT v)
   {
diff --git a/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java b/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
index 4fcbd2cc4..346f817b4 100644
--- a/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
+++ b/src/main/java/org/apache/xalan/templates/ElemTemplateElement.java
@@ -759,11 +759,11 @@ public class ElemTemplateElement extends UnImplNode
   }
 
   /** line number where the current document event ends.
-   *  @serial         */
+   *           */
   private int m_lineNumber;
 
   /** line number where the current document event ends.
-   *  @serial         */
+   *           */
   private int m_endLineNumber;
 
   /**
@@ -791,11 +791,11 @@ public class ElemTemplateElement extends UnImplNode
   }
 
   /** the column number where the current document event ends.
-   *  @serial        */
+   *          */
   private int m_columnNumber;
 
   /** the column number where the current document event ends.
-   *  @serial        */
+   *          */
   private int m_endColumnNumber;
 
   /**
@@ -877,19 +877,19 @@ public class ElemTemplateElement extends UnImplNode
   /**
    * Tell if this element has the default space handling
    * turned off or on according to the xml:space attribute.
-   * @serial
+   * 
    */
   private boolean m_defaultSpace = true;
 
   /**
    * Tell if this element only has one text child, for optimization purposes.
-   * @serial
+   * 
    */
   private boolean m_hasTextLitOnly = false;
 
   /**
    * Tell if this element only has one text child, for optimization purposes.
-   * @serial
+   * 
    */
   protected boolean m_hasVariableDecl = false;
   
@@ -931,7 +931,7 @@ public class ElemTemplateElement extends UnImplNode
 
   /**
    * The list of namespace declarations for this element only.
-   * @serial
+   * 
    */
   private List m_declaredPrefixes;
 
@@ -1072,7 +1072,7 @@ public class ElemTemplateElement extends UnImplNode
   /**
    * The table of {@link XMLNSDecl}s for this element
    * and all parent elements, screened for excluded prefixes.
-   * @serial
+   * 
    */
   private List m_prefixTable;
 
@@ -1375,7 +1375,7 @@ public class ElemTemplateElement extends UnImplNode
   }
   
   /** The *relative* document order number of this element.
-   *  @serial */
+   *   */
   protected int m_docOrderNumber = -1;
   
   /**
@@ -1401,7 +1401,7 @@ public class ElemTemplateElement extends UnImplNode
 
   /**
    * Parent node.
-   * @serial
+   * 
    */
   protected ElemTemplateElement m_parentNode;
 
@@ -1437,7 +1437,7 @@ public class ElemTemplateElement extends UnImplNode
 
   /**
    * Next sibling.
-   * @serial
+   * 
    */
   ElemTemplateElement m_nextSibling;
 
@@ -1526,7 +1526,7 @@ public class ElemTemplateElement extends UnImplNode
 
   /**
    * First child.
-   * @serial
+   * 
    */
   ElemTemplateElement m_firstChild;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemUse.java b/src/main/java/org/apache/xalan/templates/ElemUse.java
index 8d666eb29..8a00c6fb4 100644
--- a/src/main/java/org/apache/xalan/templates/ElemUse.java
+++ b/src/main/java/org/apache/xalan/templates/ElemUse.java
@@ -43,7 +43,7 @@ public class ElemUse extends ElemTemplateElement
 
   /**
    * The value of the "use-attribute-sets" attribute.
-   * @serial
+   * 
    */
   private QName m_attributeSetsNames[] = null;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemValueOf.java b/src/main/java/org/apache/xalan/templates/ElemValueOf.java
index 58d27368d..c70c2fdfb 100644
--- a/src/main/java/org/apache/xalan/templates/ElemValueOf.java
+++ b/src/main/java/org/apache/xalan/templates/ElemValueOf.java
@@ -162,7 +162,7 @@ public class ElemValueOf extends ElemTemplateElement {
 
   /**
    * Tells if this element should disable escaping.
-   * @serial
+   * 
    */
   private boolean m_disableOutputEscaping = false;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemVariable.java b/src/main/java/org/apache/xalan/templates/ElemVariable.java
index 96d967654..ad2634eaf 100644
--- a/src/main/java/org/apache/xalan/templates/ElemVariable.java
+++ b/src/main/java/org/apache/xalan/templates/ElemVariable.java
@@ -163,7 +163,7 @@ public class ElemVariable extends ElemTemplateElement
 
   /**
    * The value of the "select" attribute.
-   * @serial
+   * 
    */
   private XPath m_selectPattern;
 
@@ -199,7 +199,7 @@ public class ElemVariable extends ElemTemplateElement
 
   /**
    * The value of the "name" attribute.
-   * @serial
+   * 
    */
   protected QName m_qname;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemWhen.java b/src/main/java/org/apache/xalan/templates/ElemWhen.java
index c2c5e98ec..2aeb20523 100644
--- a/src/main/java/org/apache/xalan/templates/ElemWhen.java
+++ b/src/main/java/org/apache/xalan/templates/ElemWhen.java
@@ -41,7 +41,7 @@ public class ElemWhen extends ElemTemplateElement
   /**
    * Each xsl:when element has a single attribute, test,
    * which specifies an expression.
-   * @serial
+   * 
    */
   private XPath m_test;
 
diff --git a/src/main/java/org/apache/xalan/templates/ElemWithParam.java b/src/main/java/org/apache/xalan/templates/ElemWithParam.java
index 5dd454de5..29c0ec50c 100644
--- a/src/main/java/org/apache/xalan/templates/ElemWithParam.java
+++ b/src/main/java/org/apache/xalan/templates/ElemWithParam.java
@@ -60,7 +60,7 @@ public class ElemWithParam extends ElemTemplateElement
   /**
    * The "select" attribute, which specifies the value of the
    * argument, if element content is not specified.
-   * @serial
+   * 
    */
   private XPath m_selectPattern = null;
   
@@ -104,7 +104,7 @@ public class ElemWithParam extends ElemTemplateElement
    * parameter (the variable the value of whose binding is
    * to be replaced). The value of the name attribute is a QName,
    * which is expanded as described in [2.4 Qualified Names].
-   * @serial
+   * 
    */
   private QName m_qname = null;
   
diff --git a/src/main/java/org/apache/xalan/templates/KeyDeclaration.java b/src/main/java/org/apache/xalan/templates/KeyDeclaration.java
index 4b3d1d8b8..df2d0de3d 100644
--- a/src/main/java/org/apache/xalan/templates/KeyDeclaration.java
+++ b/src/main/java/org/apache/xalan/templates/KeyDeclaration.java
@@ -50,7 +50,7 @@ public class KeyDeclaration extends ElemTemplateElement
 
   /**
    * The "name" property.
-   * @serial
+   * 
    */
   private QName m_name;
 
@@ -93,7 +93,7 @@ public class KeyDeclaration extends ElemTemplateElement
 
   /**
    * The "match" attribute.
-   * @serial
+   * 
    */
   private XPath m_matchPattern = null;
 
@@ -127,7 +127,7 @@ public class KeyDeclaration extends ElemTemplateElement
 
   /**
    * The "use" attribute.
-   * @serial
+   * 
    */
   private XPath m_use;
 
diff --git a/src/main/java/org/apache/xalan/templates/NamespaceAlias.java b/src/main/java/org/apache/xalan/templates/NamespaceAlias.java
index 5bfba638f..6bb141e28 100644
--- a/src/main/java/org/apache/xalan/templates/NamespaceAlias.java
+++ b/src/main/java/org/apache/xalan/templates/NamespaceAlias.java
@@ -44,7 +44,7 @@ public class NamespaceAlias extends ElemTemplateElement
 
   /**
    * The "stylesheet-prefix" attribute.
-   * @serial
+   * 
    */
   private String m_StylesheetPrefix;
 
@@ -70,7 +70,7 @@ public class NamespaceAlias extends ElemTemplateElement
   
   /**
    * The namespace in the stylesheet space.
-   * @serial
+   * 
    */
   private String m_StylesheetNamespace;
 
@@ -96,7 +96,7 @@ public class NamespaceAlias extends ElemTemplateElement
 
   /**
    * The "result-prefix" attribute.
-   * @serial
+   * 
    */
   private String m_ResultPrefix;
 
@@ -122,7 +122,7 @@ public class NamespaceAlias extends ElemTemplateElement
   
   /**
    * The result namespace.
-   * @serial
+   * 
    */
   private String m_ResultNamespace;
 
diff --git a/src/main/java/org/apache/xalan/templates/OutputProperties.java b/src/main/java/org/apache/xalan/templates/OutputProperties.java
index 5c9ada009..2aa5d559a 100644
--- a/src/main/java/org/apache/xalan/templates/OutputProperties.java
+++ b/src/main/java/org/apache/xalan/templates/OutputProperties.java
@@ -668,7 +668,7 @@ public class OutputProperties extends ElemTemplateElement
   }
 
   /** The output properties.
-   *  @serial */
+   *   */
   private Properties m_properties = null;
 
     /**
diff --git a/src/main/java/org/apache/xalan/templates/WhiteSpaceInfo.java b/src/main/java/org/apache/xalan/templates/WhiteSpaceInfo.java
index 01998661a..551b267a5 100644
--- a/src/main/java/org/apache/xalan/templates/WhiteSpaceInfo.java
+++ b/src/main/java/org/apache/xalan/templates/WhiteSpaceInfo.java
@@ -34,7 +34,7 @@ public class WhiteSpaceInfo extends ElemTemplate
     static final long serialVersionUID = 6389208261999943836L;
 
   /** Flag indicating whether whitespaces should be stripped.
-   *  @serial        */
+   *          */
   private boolean m_shouldStripSpace;
 
   /**
diff --git a/src/main/java/org/apache/xalan/templates/XMLNSDecl.java b/src/main/java/org/apache/xalan/templates/XMLNSDecl.java
index 76d1906e3..56f132762 100644
--- a/src/main/java/org/apache/xalan/templates/XMLNSDecl.java
+++ b/src/main/java/org/apache/xalan/templates/XMLNSDecl.java
@@ -44,7 +44,7 @@ public class XMLNSDecl
   }
 
   /** non-null reference to prefix, using "" for default namespace.
-   *  @serial */
+   *   */
   private String m_prefix;
 
   /**
@@ -58,7 +58,7 @@ public class XMLNSDecl
   }
 
   /** non-null reference to namespace URI.
-   *  @serial  */
+   *    */
   private String m_uri;
 
   /**
@@ -71,7 +71,7 @@ public class XMLNSDecl
   }
 
   /** true if this namespace declaration should normally be excluded.
-   *  @serial  */
+   *    */
   private boolean m_isExcluded;
 
   /**
diff --git a/src/main/java/org/apache/xalan/templates/XUnresolvedVariable.java b/src/main/java/org/apache/xalan/templates/XUnresolvedVariable.java
index 84c21dd95..7a35af365 100644
--- a/src/main/java/org/apache/xalan/templates/XUnresolvedVariable.java
+++ b/src/main/java/org/apache/xalan/templates/XUnresolvedVariable.java
@@ -52,7 +52,7 @@ public class XUnresolvedVariable extends XObject
   transient private int m_varStackContext;
   
   /** true if this variable or parameter is a global.
-   *  @serial */
+   *   */
   private boolean m_isGlobal;
   
   /** true if this variable or parameter is not currently being evaluated. */
diff --git a/src/main/java/org/apache/xalan/transformer/ForEachGroupXslSortSorter.java b/src/main/java/org/apache/xalan/transformer/ForEachGroupXslSortSorter.java
index c742acb24..f8b1bddff 100644
--- a/src/main/java/org/apache/xalan/transformer/ForEachGroupXslSortSorter.java
+++ b/src/main/java/org/apache/xalan/transformer/ForEachGroupXslSortSorter.java
@@ -15,9 +15,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/*
- * $Id$
- */
 package org.apache.xalan.transformer;
 
 import java.text.CollationKey;
@@ -33,14 +30,16 @@ import javax.xml.transform.TransformerException;
 import org.apache.xalan.templates.ElemForEachGroup;
 import org.apache.xalan.templates.GroupingKeyAndGroupPair;
 import org.apache.xml.dtm.DTM;
-import org.apache.xml.dtm.DTMCursorIterator;
 import org.apache.xpath.XPathContext;
-import org.apache.xpath.objects.XMLNodeCursorImpl;
 import org.apache.xpath.objects.XObject;
 
 /**
- * An instance of this class, shall sort xsl:for-each-group groups, according to 
- * xsl:sort element(s) within xsl:for-each-group element.
+ * An instance of this class, shall sort xsl:for-each-group's groups, 
+ * according to xsl:sort elements contained within xsl:for-each-group
+ * instruction.
+ * 
+ *  An implementation of this class, follows design of xsl:for-each 
+ *  instruction's xsl:sort element.
  * 
  * @author Mukul Gandhi <mu...@apache.org>
  * 
@@ -50,24 +49,26 @@ public class ForEachGroupXslSortSorter
 {
 
   /** Reference to the current xsl:for-each-group element */
-  ElemForEachGroup m_elemForEachGroup;
+  private ElemForEachGroup m_elemForEachGroup;
   
   /** Current XPath context */
-  XPathContext m_execContext;
+  private XPathContext m_xctxt;
 
   /** Vector of NodeSortKeys */
-  Vector m_keys;
+  private Vector m_keys;
 
+  
   /**
-   * Constructor for this class.
+   * Class constructor.
    *
-   * @param xpathContext       XPath context to use
+   * @param xctxt                     An XPath context object
    * 
-   * @param elemForEachGroup   reference to current xsl:for-each-group element
+   * @param elemForEachGroup          An xsl:for-each-group instruction's object
+   *                                  reference.
    */
-  public ForEachGroupXslSortSorter(XPathContext xpathContext, ElemForEachGroup elemForEachGroup)
+  public ForEachGroupXslSortSorter(XPathContext xctxt, ElemForEachGroup elemForEachGroup)
   {
-      m_execContext = xpathContext;
+      m_xctxt = xctxt;
       m_elemForEachGroup = elemForEachGroup; 
   }
 
@@ -75,13 +76,13 @@ public class ForEachGroupXslSortSorter
    * Given an object representing xsl:for-each-group groups to be sorted, sort these groups 
    * according to the criteria represented by the xsl:sort element(s).
    * 
-   * @param forEachGroups     groups to be sorted.
-   * @param sortKeys          a vector of NodeSortKeys.
-   * @param xpathContext      XPath context to use
+   * @param forEachGroups                   Reference of groups to be sorted
+   * @param sortKeys                        Vector of sort key objects
+   * @param xctxt                           An XPath context object
    *
    * @throws javax.xml.transform.TransformerException
    */
-  public List<GroupingKeyAndGroupPair> sort(Object forEachGroups, Vector sortKeys, XPathContext xpathContext)
+  public List<GroupingKeyAndGroupPair> sort(Object forEachGroups, Vector sortKeys, XPathContext xctxt)
                                                     throws javax.xml.transform.TransformerException {
       
         List<GroupingKeyAndGroupPair> groupingKeyAndGroupPairList = new ArrayList<GroupingKeyAndGroupPair>();
@@ -122,21 +123,24 @@ public class ForEachGroupXslSortSorter
         Vector nodeCompareElements = new Vector();
     
         for (int idx = 0; idx < numberOfGroups; idx++) {
-            NodeCompareElem elem = new NodeCompareElem(groupingKeyAndGroupPairList.get(idx));
+            XslForEachGroupNodeCompareElem elem = new XslForEachGroupNodeCompareElem(m_elemForEachGroup, 
+            		                                                                 groupingKeyAndGroupPairList.get(idx),
+            		                                                                 m_keys,
+            		                                                                 xctxt);
     
             nodeCompareElements.addElement(elem);
         }
     
         Vector scratchVector = new Vector();
     
-        mergesort(nodeCompareElements, scratchVector, 0, numberOfGroups - 1, xpathContext);
+        mergesort(nodeCompareElements, scratchVector, 0, numberOfGroups - 1, xctxt);
         
         groupingKeyAndGroupPairList.clear();
         
         int size2 = nodeCompareElements.size();
         for (int idx = 0; idx < size2; idx++)
         {
-            GroupingKeyAndGroupPair groupingKeyAndGroupPair = ((NodeCompareElem)nodeCompareElements.get(idx)).
+            GroupingKeyAndGroupPair groupingKeyAndGroupPair = ((XslForEachGroupNodeCompareElem)nodeCompareElements.get(idx)).
                                                                         getGroupingKeyAndGroupPair();
             groupingKeyAndGroupPairList.add(groupingKeyAndGroupPair);
         }
@@ -148,18 +152,18 @@ public class ForEachGroupXslSortSorter
   /**
    * Return the results of a compare of two xsl:for-each-group groups.
    *
-   * @param n1              first node to use for compare
-   * @param n2              second node to use for compare
-   * @param kIndex          index of NodeSortKey to use for sort
-   * @param xpathContext    XPath context to use
+   * @param n1                    first node to use for compare
+   * @param n2                    second node to use for compare
+   * @param kIndex                index of NodeSortKey to use for sort
+   * @param xctxt                 An XPath context object
    *
-   * @return    The result of comparing two xsl:for-each-group groups, for the purpose of sorting 
-   *            with xsl:sort element(s).
+   * @return                      The result of comparing relative sort order between 
+   *                              two xsl:for-each-group groups.
    *
    * @throws TransformerException
    */
-  int compare(NodeCompareElem n1, NodeCompareElem n2, int kIndex, 
-                                        XPathContext xpathContext) throws TransformerException {
+  private int compare(XslForEachGroupNodeCompareElem n1, XslForEachGroupNodeCompareElem n2, int kIndex, 
+                                                                                      XPathContext xctxt) throws TransformerException {
 
     int result = 0;
     
@@ -185,9 +189,9 @@ public class ForEachGroupXslSortSorter
       else
       {
         // get values dynamically
-        XObject r1 = k.m_selectPat.execute(m_execContext, n1ContextNode,
+        XObject r1 = k.m_selectPat.execute(m_xctxt, n1ContextNode,
                                            k.m_namespaceContext);
-        XObject r2 = k.m_selectPat.execute(m_execContext, n2ContextNode,
+        XObject r2 = k.m_selectPat.execute(m_xctxt, n2ContextNode,
                                            k.m_namespaceContext);
         n1Num = r1.num();
         
@@ -196,7 +200,7 @@ public class ForEachGroupXslSortSorter
 
       if ((n1Num == n2Num) && ((kIndex + 1) < m_keys.size()))
       {
-        result = compare(n1, n2, kIndex + 1, xpathContext);
+        result = compare(n1, n2, kIndex + 1, xctxt);
       }
       else
       {
@@ -235,9 +239,9 @@ public class ForEachGroupXslSortSorter
       else
       {
         // get values dynamically
-        XObject r1 = k.m_selectPat.execute(m_execContext, n1ContextNode,
+        XObject r1 = k.m_selectPat.execute(m_xctxt, n1ContextNode,
                                            k.m_namespaceContext);
-        XObject r2 = k.m_selectPat.execute(m_execContext, n2ContextNode,
+        XObject r2 = k.m_selectPat.execute(m_xctxt, n2ContextNode,
                                            k.m_namespaceContext);
 
         n1String = k.m_col.getCollationKey(r1.str());
@@ -269,12 +273,12 @@ public class ForEachGroupXslSortSorter
     if (0 == result) {
       if ((kIndex + 1) < m_keys.size())
       {
-        result = compare(n1, n2, kIndex + 1, xpathContext);
+        result = compare(n1, n2, kIndex + 1, xctxt);
       }
     }
 
     if (0 == result) {
-        DTM dtm = xpathContext.getDTM(n1ContextNode);
+        DTM dtm = xctxt.getDTM(n1ContextNode);
         result = dtm.isNodeAfter(n1ContextNode, n2ContextNode) ? -1 : 1;
     }
 
@@ -293,7 +297,7 @@ public class ForEachGroupXslSortSorter
    *
    * @throws TransformerException
    */
-  void mergesort(Vector a, Vector b, int l, int r, XPathContext xpathContext)
+  private void mergesort(Vector a, Vector b, int l, int r, XPathContext xpathContext)
                                                          throws TransformerException {
 
         if ((r - l) > 0) {
@@ -329,8 +333,8 @@ public class ForEachGroupXslSortSorter
                   if (i == j)
                      compVal = -1;
                   else
-                     compVal = compare((NodeCompareElem) b.elementAt(i),
-                                           (NodeCompareElem) b.elementAt(j), 0, xpathContext);
+                     compVal = compare((XslForEachGroupNodeCompareElem) b.elementAt(i),
+                                           (XslForEachGroupNodeCompareElem) b.elementAt(j), 0, xpathContext);
         
                   if (compVal < 0) {
                      a.setElementAt(b.elementAt(i), k);        
@@ -343,101 +347,5 @@ public class ForEachGroupXslSortSorter
               }
         }
   }
-
-  /**
-   * This class stores the value(s) produced by evaluating the given
-   * xsl:for-each-group group with the sort key(s).
-   *  
-   * @xsl.usage internal
-   */
-  class NodeCompareElem {
-    
-        /** This maxkey value was chosen arbitrarily. We're assuming that the    
-            maxkey + 1 keys will only occur fairly rarely and therefore, we will 
-            get the node values for those keys dynamically.
-        */
-        int maxkey = 2;
-    
-        /** Value from first sort key */
-        Object m_key1Value;
-    
-        /** Value from second sort key */
-        Object m_key2Value;
-        
-        GroupingKeyAndGroupPair m_groupingKeyAndGroupPair;
-
-        /**
-         * Constructor function, of this class.
-         *
-         * @param groupingKeyAndGroupPair    current GroupingKeyAndGroupPair object
-         *
-         * @throws javax.xml.transform.TransformerException
-         */
-        NodeCompareElem(GroupingKeyAndGroupPair groupingKeyAndGroupPair) throws 
-                                                               javax.xml.transform.TransformerException {
-            
-              this.m_groupingKeyAndGroupPair = groupingKeyAndGroupPair; 
-            
-              int contextNodeDtmHandle = ((groupingKeyAndGroupPair.getGroupNodeDtmHandles()).
-                                                                                      get(0)).intValue();
-              
-              TransformerImpl transformer = (TransformerImpl) m_execContext.getOwnerObject();
-              m_elemForEachGroup.setGroupingKey(groupingKeyAndGroupPair.getGroupingKey());
-              m_elemForEachGroup.setGroupNodesDtmHandles(groupingKeyAndGroupPair.getGroupNodeDtmHandles());
-              transformer.setCurrentElement(m_elemForEachGroup);
-              
-              // for the xsl:sort element select expression's evaluation, the context item is the 
-              // initial item of the group.
-              m_execContext.pushCurrentNode(contextNodeDtmHandle);
-              
-              if (!m_keys.isEmpty()) {
-                    NodeSortKey k1 = (NodeSortKey) m_keys.elementAt(0);
-                    XObject r = (k1.m_selectPat).execute(m_execContext, contextNodeDtmHandle,
-                                                                                k1.m_namespaceContext);
-            
-                    double d;
-            
-                    if (k1.m_treatAsNumbers) {
-                          d = r.num();
-                          m_key1Value = new Double(d);
-                    }
-                    else {
-                          m_key1Value = k1.m_col.getCollationKey(r.str());
-                    }
-            
-                    if (r.getType() == XObject.CLASS_NODESET) {
-                          DTMCursorIterator ni = ((XMLNodeCursorImpl)r).iterRaw();
-                          int current = ni.getCurrentNode();
-                          if(DTM.NULL == current) {
-                             current = ni.nextNode();
-                          }
-                    }
-            
-                    if (m_keys.size() > 1) {
-                          NodeSortKey k2 = (NodeSortKey) m_keys.elementAt(1);
-                
-                          XObject r2 = (k2.m_selectPat).execute(m_execContext, contextNodeDtmHandle,
-                                                              k2.m_namespaceContext);
-                
-                          if (k2.m_treatAsNumbers) {
-                              d = r2.num();
-                              m_key2Value = new Double(d);
-                          } else {
-                              m_key2Value = k2.m_col.getCollationKey(r2.str());
-                          }
-                    }
-              }   
-        }
-
-        public GroupingKeyAndGroupPair getGroupingKeyAndGroupPair() {
-            return m_groupingKeyAndGroupPair;
-        }
-
-        public void setGroupingKeyAndGroupPair(GroupingKeyAndGroupPair 
-                                                             groupingKeyAndGroupPair) {
-            this.m_groupingKeyAndGroupPair = groupingKeyAndGroupPair;
-        }
-    
-  }
   
 }
diff --git a/src/main/java/org/apache/xalan/transformer/KeyIterator.java b/src/main/java/org/apache/xalan/transformer/KeyIterator.java
index 1900e84ff..fdeb06767 100644
--- a/src/main/java/org/apache/xalan/transformer/KeyIterator.java
+++ b/src/main/java/org/apache/xalan/transformer/KeyIterator.java
@@ -44,7 +44,7 @@ public class KeyIterator extends OneStepIteratorForward
     static final long serialVersionUID = -1349109910100249661L;
 
   /** Key name.
-   *  @serial           */
+   *             */
   private QName m_name;
 
   /**
@@ -59,7 +59,7 @@ public class KeyIterator extends OneStepIteratorForward
   }
 
   /** Vector of Key declarations in the stylesheet.
-   *  @serial          */
+   *            */
   private Vector m_keyDeclarations;
 
   /**
diff --git a/src/main/java/org/apache/xalan/transformer/KeyRefIterator.java b/src/main/java/org/apache/xalan/transformer/KeyRefIterator.java
index a6505ab7a..7c7db3556 100644
--- a/src/main/java/org/apache/xalan/transformer/KeyRefIterator.java
+++ b/src/main/java/org/apache/xalan/transformer/KeyRefIterator.java
@@ -164,7 +164,7 @@ public class KeyRefIterator extends org.apache.xpath.axes.ChildTestIterator
   protected QName m_name;
 
   /** Vector of Key declarations in the stylesheet.
-   *  @serial          */
+   *            */
   protected Vector m_keyDeclarations;
 
 }
diff --git a/src/main/java/org/apache/xalan/transformer/NodeSorter.java b/src/main/java/org/apache/xalan/transformer/NodeSorter.java
index af4a0ca78..4f8c0fa63 100644
--- a/src/main/java/org/apache/xalan/transformer/NodeSorter.java
+++ b/src/main/java/org/apache/xalan/transformer/NodeSorter.java
@@ -43,7 +43,7 @@ public class NodeSorter
 {
 
   /** Current XPath context           */
-  XPathContext m_execContext;
+  XPathContext m_xctxt;
 
   /** Vector of NodeSortKeys          */
   Vector m_keys;
@@ -53,11 +53,11 @@ public class NodeSorter
    * so it can know how to get the node data according to
    * the proper whitespace rules.
    *
-   * @param p Xpath context to use
+   * @param xctxt               An XPath context object
    */
-  public NodeSorter(XPathContext p)
+  public NodeSorter(XPathContext xctxt)
   {
-    m_execContext = p;
+      m_xctxt = xctxt;
   }
 
   /**
@@ -181,9 +181,9 @@ public class NodeSorter
 		  else
 		  {
 			  // Get values dynamically
-			  XObject r1 = k.m_selectPat.execute(m_execContext, n1.m_node,
+			  XObject r1 = k.m_selectPat.execute(m_xctxt, n1.m_node,
 					                             k.m_namespaceContext);
-			  XObject r2 = k.m_selectPat.execute(m_execContext, n2.m_node,
+			  XObject r2 = k.m_selectPat.execute(m_xctxt, n2.m_node,
 					                             k.m_namespaceContext);
 			  n1Num = r1.num();
 
@@ -234,13 +234,16 @@ public class NodeSorter
 		  else
 		  {
 			  // Get values dynamically
-			  XObject r1 = k.m_selectPat.execute(m_execContext, n1.m_node,
+			  XObject r1 = k.m_selectPat.execute(m_xctxt, n1.m_node,
 					                             k.m_namespaceContext);
-			  XObject r2 = k.m_selectPat.execute(m_execContext, n2.m_node,
+			  XObject r2 = k.m_selectPat.execute(m_xctxt, n2.m_node,
 					                             k.m_namespaceContext);
 
-			  n1String = k.m_col.getCollationKey(r1.str());
-			  n2String = k.m_col.getCollationKey(r2.str());
+			  String str1 = XslTransformEvaluationHelper.getStrVal(r1);
+			  String str2 = XslTransformEvaluationHelper.getStrVal(r2);
+			  
+			  n1String = k.m_col.getCollationKey(str1);
+			  n2String = k.m_col.getCollationKey(str2);
 		  }
 
 		  // Use collation keys for faster compare, but note that whitespaces 
@@ -418,7 +421,7 @@ public class NodeSorter
     	if (!m_keys.isEmpty())
     	{
     		NodeSortKey k1 = (NodeSortKey) m_keys.elementAt(0);
-    		XObject r = k1.m_selectPat.execute(m_execContext, node, k1.m_namespaceContext);
+    		XObject r = k1.m_selectPat.execute(m_xctxt, node, k1.m_namespaceContext);
 
     		double d;
 
@@ -452,14 +455,15 @@ public class NodeSorter
     		{
     			NodeSortKey k2 = (NodeSortKey) m_keys.elementAt(1);
 
-    			XObject r2 = k2.m_selectPat.execute(m_execContext, node,
+    			XObject r2 = k2.m_selectPat.execute(m_xctxt, node,
     					k2.m_namespaceContext);
 
     			if (k2.m_treatAsNumbers) {
     				d = r2.num();
     				m_key2Value = new Double(d);
     			} else {
-    				m_key2Value = k2.m_col.getCollationKey(r2.str());
+    				String str2 = XslTransformEvaluationHelper.getStrVal(r2);
+    				m_key2Value = k2.m_col.getCollationKey(str2);
     			}
     		}        
     	}  // end if not empty    
@@ -480,15 +484,15 @@ public class NodeSorter
     	{
     		NodeSortKey k1 = (NodeSortKey) m_keys.elementAt(0);
     		
-    		XObject prevXctxtItem = m_execContext.getXPath3ContextItem();    		
+    		XObject prevXctxtItem = m_xctxt.getXPath3ContextItem();    		
     		XObject r = null;
     		
     		try {
-    			m_execContext.setXPath3ContextItem(xObj);    		
-    			r = k1.m_selectPat.execute(m_execContext, DTM.NULL, k1.m_namespaceContext);
+    			m_xctxt.setXPath3ContextItem(xObj);    		
+    			r = k1.m_selectPat.execute(m_xctxt, DTM.NULL, k1.m_namespaceContext);
     		}
     		finally {    		
-    			m_execContext.setXPath3ContextItem(prevXctxtItem);
+    			m_xctxt.setXPath3ContextItem(prevXctxtItem);
     		}
 
     		double d = 0.0;
@@ -523,14 +527,14 @@ public class NodeSorter
     		{
     			NodeSortKey k2 = (NodeSortKey) m_keys.elementAt(1);
 
-    			m_execContext.setXPath3ContextItem(xObj);
+    			m_xctxt.setXPath3ContextItem(xObj);
     			XObject r2 = null;
     			
     			try {
-    				r2 = k2.m_selectPat.execute(m_execContext, DTM.NULL, k2.m_namespaceContext);
+    				r2 = k2.m_selectPat.execute(m_xctxt, DTM.NULL, k2.m_namespaceContext);
     			}
     			finally {
-    				m_execContext.setXPath3ContextItem(prevXctxtItem);
+    				m_xctxt.setXPath3ContextItem(prevXctxtItem);
     			}
 
     			if (k2.m_treatAsNumbers) {    				
@@ -545,7 +549,8 @@ public class NodeSorter
 
     				m_key2Value = new Double(d);
     			} else {
-    				m_key2Value = k2.m_col.getCollationKey(r2.str());
+    				String str2 = XslTransformEvaluationHelper.getStrVal(r2);
+    				m_key2Value = k2.m_col.getCollationKey(str2);
     			}
     		}        
     	}  // end if not empty
diff --git a/src/main/java/org/apache/xalan/transformer/XslForEachGroupNodeCompareElem.java b/src/main/java/org/apache/xalan/transformer/XslForEachGroupNodeCompareElem.java
new file mode 100644
index 000000000..e9290fe2c
--- /dev/null
+++ b/src/main/java/org/apache/xalan/transformer/XslForEachGroupNodeCompareElem.java
@@ -0,0 +1,144 @@
+/*
+ * 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.
+ */
+package org.apache.xalan.transformer;
+
+import java.util.Vector;
+
+import org.apache.xalan.templates.ElemForEachGroup;
+import org.apache.xalan.templates.GroupingKeyAndGroupPair;
+import org.apache.xalan.xslt.util.XslTransformEvaluationHelper;
+import org.apache.xml.dtm.DTM;
+import org.apache.xml.dtm.DTMCursorIterator;
+import org.apache.xpath.XPathContext;
+import org.apache.xpath.objects.XMLNodeCursorImpl;
+import org.apache.xpath.objects.XObject;
+
+/**
+ * This class is used for xsl:for-each-group instruction's
+ * xsl:sort implementation.
+ * 
+ * The code for this class, follows design of xsl:for-each instruction's
+ * xsl:sort implementation.
+ * 
+ * @author Mukul Gandhi <mu...@apache.org>
+ * 
+ * @xsl.usage internal
+ */
+public class XslForEachGroupNodeCompareElem {
+
+	/** This maxkey value was chosen arbitrarily. We're assuming that the    
+        maxkey + 1 keys will only occur fairly rarely and therefore, we will 
+        get the node values for those keys dynamically.
+	 */
+	private int maxkey = 2;
+
+	/** Value from first sort key */
+	Object m_key1Value;
+
+	/** Value from second sort key */
+	Object m_key2Value;
+
+	private GroupingKeyAndGroupPair m_groupingKeyAndGroupPair;
+
+	/**
+	 * Class constructor.
+	 *
+	 * @param elemForEachGrp                       Reference to xsl:for-each-group instruction 
+	 *                                             object.
+	 * @param groupingKeyAndGroupPair              An object instance, representing mapping between
+	 *                                             a group and its grouping key.
+	 * @param sortKeys                             Vector of sort key objects
+	 * @param xctxt                                An XPath context object
+	 *
+	 * @throws javax.xml.transform.TransformerException
+	 */
+	public XslForEachGroupNodeCompareElem(ElemForEachGroup elemForEachGrp, GroupingKeyAndGroupPair 
+			                                                                                      groupingKeyAndGroupPair, 
+			                                                                                      Vector sortKeys, 
+			                                                                                      XPathContext xctxt) throws javax.xml.transform.TransformerException {
+
+		this.m_groupingKeyAndGroupPair = groupingKeyAndGroupPair; 
+
+		int currentNode = ((m_groupingKeyAndGroupPair.getGroupNodeDtmHandles()).get(0)).intValue();
+
+		TransformerImpl transformer = (TransformerImpl)(xctxt.getOwnerObject());
+		elemForEachGrp.setGroupingKey(groupingKeyAndGroupPair.getGroupingKey());
+		elemForEachGrp.setGroupNodesDtmHandles(groupingKeyAndGroupPair.getGroupNodeDtmHandles());
+		transformer.setCurrentElement(elemForEachGrp);
+		
+		/**
+		 * For xsl:for-each-group's xsl:sort implementation, an XPath context 
+		 * item for xsl:sort's XPath expression is initial xdm item of the 
+		 * group.
+		 */
+		
+		try {
+			xctxt.pushCurrentNode(currentNode);
+
+			if (!sortKeys.isEmpty()) {
+				NodeSortKey k1 = (NodeSortKey) sortKeys.elementAt(0);
+				XObject r = (k1.m_selectPat).execute(xctxt, currentNode, k1.m_namespaceContext);
+
+				double d;
+
+				if (k1.m_treatAsNumbers) {
+					d = r.num();
+					m_key1Value = new Double(d);
+				}
+				else {
+					String str1 = XslTransformEvaluationHelper.getStrVal(r);
+					m_key1Value = k1.m_col.getCollationKey(str1);
+				}
+
+				if (r.getType() == XObject.CLASS_NODESET) {
+					DTMCursorIterator ni = ((XMLNodeCursorImpl)r).iterRaw();
+					int current = ni.getCurrentNode();
+					if(DTM.NULL == current) {
+						current = ni.nextNode();
+					}
+				}
+
+				if (sortKeys.size() > 1) {
+					NodeSortKey k2 = (NodeSortKey) sortKeys.elementAt(1);
+
+					XObject r2 = (k2.m_selectPat).execute(xctxt, currentNode, k2.m_namespaceContext);
+
+					if (k2.m_treatAsNumbers) {
+						d = r2.num();
+						m_key2Value = new Double(d);
+					} else {
+						String str1 = XslTransformEvaluationHelper.getStrVal(r2);
+						m_key2Value = k2.m_col.getCollationKey(str1);
+					}
+				}
+			}
+		}
+        finally {
+		   xctxt.popCurrentNode();
+        }
+	}
+
+	public GroupingKeyAndGroupPair getGroupingKeyAndGroupPair() {
+		return m_groupingKeyAndGroupPair;
+	}
+
+	public void setGroupingKeyAndGroupPair(GroupingKeyAndGroupPair groupingKeyAndGroupPair) {
+		this.m_groupingKeyAndGroupPair = groupingKeyAndGroupPair;
+	}
+
+}
diff --git a/src/main/java/org/apache/xml/dtm/DTMException.java b/src/main/java/org/apache/xml/dtm/DTMException.java
index 65b3e7659..342d09ceb 100644
--- a/src/main/java/org/apache/xml/dtm/DTMException.java
+++ b/src/main/java/org/apache/xml/dtm/DTMException.java
@@ -38,7 +38,7 @@ public class DTMException extends RuntimeException {
     static final long serialVersionUID = -775576419181334734L;
 
     /** Field locator specifies where the error occured.
-     *  @serial */
+     *   */
     SourceLocator locator;
 
     /**
@@ -62,7 +62,7 @@ public class DTMException extends RuntimeException {
     }
 
     /** Field containedException specifies a wrapped exception.  May be null.
-     *  @serial */
+     *   */
     Throwable containedException;
 
     /**
diff --git a/src/main/java/org/apache/xml/serializer/utils/URI.java b/src/main/java/org/apache/xml/serializer/utils/URI.java
index e79c5a249..241a6dd76 100644
--- a/src/main/java/org/apache/xml/serializer/utils/URI.java
+++ b/src/main/java/org/apache/xml/serializer/utils/URI.java
@@ -112,34 +112,34 @@ final class URI
   private static final String USERINFO_CHARACTERS = ";:&=+$,";
 
   /** Stores the scheme (usually the protocol) for this URI.
-   *  @serial */
+   *   */
   private String m_scheme = null;
 
   /** If specified, stores the userinfo for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_userinfo = null;
 
   /** If specified, stores the host for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_host = null;
 
   /** If specified, stores the port for this URI; otherwise -1.
-   *  @serial */
+   *   */
   private int m_port = -1;
 
   /** If specified, stores the path for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_path = null;
 
   /**
    * If specified, stores the query string for this URI; otherwise
    *   null. 
-   * @serial 
+   *  
    */
   private String m_queryString = null;
 
   /** If specified, stores the fragment for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_fragment = null;
 
   /** Indicate whether in DEBUG mode          */
diff --git a/src/main/java/org/apache/xml/serializer/utils/WrappedRuntimeException.java b/src/main/java/org/apache/xml/serializer/utils/WrappedRuntimeException.java
index 8b7026a42..bf43ea79b 100644
--- a/src/main/java/org/apache/xml/serializer/utils/WrappedRuntimeException.java
+++ b/src/main/java/org/apache/xml/serializer/utils/WrappedRuntimeException.java
@@ -37,7 +37,7 @@ public final class WrappedRuntimeException extends RuntimeException
     static final long serialVersionUID = 7140414456714658073L;
 
   /** Primary checked exception.
-   *  @serial          */
+   *            */
   private Exception m_exception;
 
   /**
diff --git a/src/main/java/org/apache/xml/utils/NameSpace.java b/src/main/java/org/apache/xml/utils/NameSpace.java
index 85b86ca4a..883e4db52 100644
--- a/src/main/java/org/apache/xml/utils/NameSpace.java
+++ b/src/main/java/org/apache/xml/utils/NameSpace.java
@@ -33,15 +33,15 @@ public class NameSpace implements Serializable
     static final long serialVersionUID = 1471232939184881839L;
 
   /** Next NameSpace element on the stack.
-   *  @serial             */
+   *               */
   public NameSpace m_next = null;
 
   /** Prefix of this NameSpace element.
-   *  @serial          */
+   *            */
   public String m_prefix;
 
   /** Namespace URI of this NameSpace element.
-   *  @serial           */
+   *             */
   public String m_uri;  // if null, then Element namespace is empty.
 
   /**
diff --git a/src/main/java/org/apache/xml/utils/NodeVector.java b/src/main/java/org/apache/xml/utils/NodeVector.java
index 6eba45faf..2c68ba871 100644
--- a/src/main/java/org/apache/xml/utils/NodeVector.java
+++ b/src/main/java/org/apache/xml/utils/NodeVector.java
@@ -34,25 +34,25 @@ public class NodeVector implements Serializable, Cloneable
 
   /**
    * Size of blocks to allocate.
-   *  @serial          
+   *            
    */
   private int m_blocksize;
 
   /**
    * Array of nodes this points to.
-   *  @serial          
+   *            
    */
   private int m_map[];
 
   /**
    * Number of nodes in this NodeVector.
-   *  @serial          
+   *            
    */
   protected int m_firstFree = 0;
 
   /**
    * Size of the array this points to.
-   *  @serial           
+   *             
    */
   private int m_mapSize;  // lazy initialization
 
diff --git a/src/main/java/org/apache/xml/utils/ObjectPool.java b/src/main/java/org/apache/xml/utils/ObjectPool.java
index fe73bb59c..938e2d062 100644
--- a/src/main/java/org/apache/xml/utils/ObjectPool.java
+++ b/src/main/java/org/apache/xml/utils/ObjectPool.java
@@ -35,11 +35,11 @@ public class ObjectPool implements java.io.Serializable
     static final long serialVersionUID = -8519013691660936643L;
 
   /** Type of objects in this pool.
-   *  @serial          */
+   *            */
   private final Class objectType;
 
   /** Stack of given objects this points to.
-   *  @serial          */
+   *            */
   private final ArrayList freeStack;
 
   /**
diff --git a/src/main/java/org/apache/xml/utils/QName.java b/src/main/java/org/apache/xml/utils/QName.java
index 372cbc7a2..f7ead4c87 100644
--- a/src/main/java/org/apache/xml/utils/QName.java
+++ b/src/main/java/org/apache/xml/utils/QName.java
@@ -46,19 +46,19 @@ public class QName implements java.io.Serializable
 
   /**
    * The local name.
-   * @serial
+   * 
    */
   protected String _localName;
 
   /**
    * The namespace URI.
-   * @serial
+   * 
    */
   protected String _namespaceURI;
 
   /**
    * The namespace prefix.
-   * @serial
+   * 
    */
   protected String _prefix;
 
@@ -70,7 +70,7 @@ public class QName implements java.io.Serializable
 
   /**
    * The cached hashcode, which is calculated at construction time.
-   * @serial
+   * 
    */
   private int m_hashCode;
 
diff --git a/src/main/java/org/apache/xml/utils/SAXSourceLocator.java b/src/main/java/org/apache/xml/utils/SAXSourceLocator.java
index 621a3d259..3e643b461 100644
--- a/src/main/java/org/apache/xml/utils/SAXSourceLocator.java
+++ b/src/main/java/org/apache/xml/utils/SAXSourceLocator.java
@@ -38,7 +38,7 @@ public class SAXSourceLocator extends LocatorImpl
 {
     static final long serialVersionUID = 3181680946321164112L;
   /** The SAX Locator object.
-   *  @serial
+   *  
    */
   Locator m_locator;
 
diff --git a/src/main/java/org/apache/xml/utils/SerializableLocatorImpl.java b/src/main/java/org/apache/xml/utils/SerializableLocatorImpl.java
index 19577e634..de889f384 100644
--- a/src/main/java/org/apache/xml/utils/SerializableLocatorImpl.java
+++ b/src/main/java/org/apache/xml/utils/SerializableLocatorImpl.java
@@ -199,25 +199,25 @@ implements org.xml.sax.Locator, java.io.Serializable
     
     /**
      * The public ID.
-     * @serial
+     * 
      */
     private String publicId;
     
     /**
      * The system ID.
-     * @serial
+     * 
      */
     private String systemId;
     
     /**
      * The line number.
-     * @serial
+     * 
      */
     private int lineNumber;
     
     /**
      * The column number.
-     * @serial
+     * 
      */
     private int columnNumber;
     
diff --git a/src/main/java/org/apache/xml/utils/StringVector.java b/src/main/java/org/apache/xml/utils/StringVector.java
index 01cc15f64..50b06e10f 100644
--- a/src/main/java/org/apache/xml/utils/StringVector.java
+++ b/src/main/java/org/apache/xml/utils/StringVector.java
@@ -29,16 +29,16 @@ public class StringVector implements java.io.Serializable
 {
     static final long serialVersionUID = 4995234972032919748L;
 
-  /** @serial Size of blocks to allocate           */
+  /**  Size of blocks to allocate           */
   protected int m_blocksize;
 
-  /** @serial Array of strings this contains          */
+  /**  Array of strings this contains          */
   protected String m_map[];
 
-  /** @serial Number of strings this contains          */
+  /**  Number of strings this contains          */
   protected int m_firstFree = 0;
 
-  /** @serial Size of the array          */
+  /**  Size of the array          */
   protected int m_mapSize;
 
   /**
diff --git a/src/main/java/org/apache/xml/utils/URI.java b/src/main/java/org/apache/xml/utils/URI.java
index f341b2136..ccda66d03 100644
--- a/src/main/java/org/apache/xml/utils/URI.java
+++ b/src/main/java/org/apache/xml/utils/URI.java
@@ -110,34 +110,34 @@ public class URI implements Serializable
   private static final String USERINFO_CHARACTERS = ";:&=+$,";
 
   /** Stores the scheme (usually the protocol) for this URI.
-   *  @serial */
+   *   */
   private String m_scheme = null;
 
   /** If specified, stores the userinfo for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_userinfo = null;
 
   /** If specified, stores the host for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_host = null;
 
   /** If specified, stores the port for this URI; otherwise -1.
-   *  @serial */
+   *   */
   private int m_port = -1;
 
   /** If specified, stores the path for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_path = null;
 
   /**
    * If specified, stores the query string for this URI; otherwise
    *   null. 
-   * @serial 
+   *  
    */
   private String m_queryString = null;
 
   /** If specified, stores the fragment for this URI; otherwise null.
-   *  @serial */
+   *   */
   private String m_fragment = null;
 
   /** Indicate whether in DEBUG mode          */
diff --git a/src/main/java/org/apache/xml/utils/WrappedRuntimeException.java b/src/main/java/org/apache/xml/utils/WrappedRuntimeException.java
index 10bfe458c..48bb34665 100644
--- a/src/main/java/org/apache/xml/utils/WrappedRuntimeException.java
+++ b/src/main/java/org/apache/xml/utils/WrappedRuntimeException.java
@@ -30,7 +30,7 @@ public class WrappedRuntimeException extends RuntimeException
     static final long serialVersionUID = 7140414456714658073L;
 
   /** Primary checked exception.
-   *  @serial          */
+   *            */
   private Exception m_exception;
 
   /**
diff --git a/src/main/java/org/apache/xpath/NodeSet.java b/src/main/java/org/apache/xpath/NodeSet.java
index efffc7052..da1a1be59 100644
--- a/src/main/java/org/apache/xpath/NodeSet.java
+++ b/src/main/java/org/apache/xpath/NodeSet.java
@@ -769,7 +769,7 @@ public class NodeSet
   transient protected boolean m_mutable = true;
 
   /** True if this list is cached.
-   *  @serial  */
+   *    */
   transient protected boolean m_cacheNodes = true;
 
   /**
@@ -819,19 +819,19 @@ public class NodeSet
   }
   
   /** Size of blocks to allocate.
-   *  @serial          */
+   *            */
   private int m_blocksize;
 
   /** Array of nodes this points to.
-   *  @serial          */
+   *            */
   Node m_map[];
 
   /** Number of nodes in this NodeVector.
-   *  @serial          */
+   *            */
   protected int m_firstFree = 0;
 
   /** Size of the array this points to.
-   *  @serial           */
+   *             */
   private int m_mapSize;  // lazy initialization
 
   /**
diff --git a/src/main/java/org/apache/xpath/NodeSetDTM.java b/src/main/java/org/apache/xpath/NodeSetDTM.java
index 34385b9d9..059228c72 100644
--- a/src/main/java/org/apache/xpath/NodeSetDTM.java
+++ b/src/main/java/org/apache/xpath/NodeSetDTM.java
@@ -1159,7 +1159,7 @@ public class NodeSetDTM extends NodeVector
   transient protected boolean m_mutable = true;
 
   /** True if this list is cached.
-   *  @serial  */
+   *    */
   transient protected boolean m_cacheNodes = true;
   
   /** The root of the iteration, if available. */
diff --git a/src/main/java/org/apache/xpath/VariableStack.java b/src/main/java/org/apache/xpath/VariableStack.java
index 78bd3b67a..0ad7aa55a 100644
--- a/src/main/java/org/apache/xpath/VariableStack.java
+++ b/src/main/java/org/apache/xpath/VariableStack.java
@@ -82,19 +82,19 @@ public class VariableStack implements Cloneable
 
   /**
    * The stack frame where all variables and params will be kept.
-   * @serial
+   * 
    */
   XObject[] _stackFrames;
 
   /**
    * The top of the stack frame (<code>_stackFrames</code>).
-   * @serial
+   * 
    */
   int _frameTop;
 
   /**
    * The bottom index of the current frame (relative to <code>_stackFrames</code>).
-   * @serial
+   * 
    */
   private int _currentFrameBottom;
 
@@ -102,7 +102,7 @@ public class VariableStack implements Cloneable
    * The stack of frame positions.  I call 'em links because of distant
    * <a href="http://math.millikin.edu/mprogers/Courses/currentCourses/CS481-ComputerArchitecture/cs481.Motorola68000.html">
    * Motorola 68000 assembler</a> memories.  :-)
-   * @serial
+   * 
    */
   int[] _links;
 
diff --git a/src/main/java/org/apache/xpath/XPathException.java b/src/main/java/org/apache/xpath/XPathException.java
index 49c46e83a..763c98017 100644
--- a/src/main/java/org/apache/xpath/XPathException.java
+++ b/src/main/java/org/apache/xpath/XPathException.java
@@ -38,7 +38,7 @@ public class XPathException extends TransformerException
     static final long serialVersionUID = 4263549717619045963L;
 
   /** The home of the expression that caused the error.
-   *  @serial  */
+   *    */
   Object m_styleNode = null;
 
   /**
@@ -61,7 +61,7 @@ public class XPathException extends TransformerException
 
 
   /** A nested exception.
-   *  @serial   */
+   *     */
   protected Exception m_exception;
 
   /**
diff --git a/src/main/java/org/apache/xpath/axes/AxesWalker.java b/src/main/java/org/apache/xpath/axes/AxesWalker.java
index 4ebd4bd99..feabeb025 100644
--- a/src/main/java/org/apache/xpath/axes/AxesWalker.java
+++ b/src/main/java/org/apache/xpath/axes/AxesWalker.java
@@ -575,11 +575,11 @@ public class AxesWalker extends PredicatedNodeTest
   transient boolean m_isFresh;
 
   /** The next walker in the location step chain.
-   *  @serial  */
+   *    */
   protected AxesWalker m_nextWalker;
   
   /** The previous walker in the location step chain, or null.
-   *  @serial   */
+   *     */
   AxesWalker m_prevWalker;
   
   /** The traversal axis from where the nodes will be filtered. */
diff --git a/src/main/java/org/apache/xpath/axes/FilterExprIterator.java b/src/main/java/org/apache/xpath/axes/FilterExprIterator.java
index 7492273a3..e0f4b092f 100644
--- a/src/main/java/org/apache/xpath/axes/FilterExprIterator.java
+++ b/src/main/java/org/apache/xpath/axes/FilterExprIterator.java
@@ -30,7 +30,7 @@ public class FilterExprIterator extends BasicTestIterator
 {
     static final long serialVersionUID = 2552176105165737614L;
   /** The contained expression. Should be non-null.
-   *  @serial   */
+   *     */
   private Expression m_expr;
 
   /** The result of executing m_expr.  Needs to be deep cloned on clone op.  */
diff --git a/src/main/java/org/apache/xpath/axes/LocPathIterator.java b/src/main/java/org/apache/xpath/axes/LocPathIterator.java
index a9f55489a..9269452d8 100644
--- a/src/main/java/org/apache/xpath/axes/LocPathIterator.java
+++ b/src/main/java/org/apache/xpath/axes/LocPathIterator.java
@@ -972,7 +972,7 @@ public abstract class LocPathIterator extends PredicatedNodeTest
    * Value determined at compile time, indicates that this is an
    * iterator at the top level of the expression, rather than inside
    * a predicate.
-   * @serial
+   * 
    */
   private boolean m_isTopLevel = false;
 
@@ -1003,7 +1003,7 @@ public abstract class LocPathIterator extends PredicatedNodeTest
   /**
    * Fast access to the current prefix resolver.  It isn't really
    * clear that this is needed.
-   * @serial
+   * 
    */
   private PrefixResolver m_prefixResolver;
 
@@ -1040,7 +1040,7 @@ public abstract class LocPathIterator extends PredicatedNodeTest
 //   * The analysis pattern built by the WalkerFactory.
 //   * TODO: Move to LocPathIterator.
 //   * @see org.apache.xpath.axes.WalkerFactory
-//   * @serial
+//   * 
 //   */
 //  protected int m_analysis = 0x00000000;
   /**
diff --git a/src/main/java/org/apache/xpath/axes/PredicatedNodeTest.java b/src/main/java/org/apache/xpath/axes/PredicatedNodeTest.java
index 37be71363..bbede4358 100644
--- a/src/main/java/org/apache/xpath/axes/PredicatedNodeTest.java
+++ b/src/main/java/org/apache/xpath/axes/PredicatedNodeTest.java
@@ -603,7 +603,7 @@ public abstract class PredicatedNodeTest extends NodeTest implements SubContextL
   transient protected boolean m_foundLast = false;
     
   /** The owning location path iterator.
-   *  @serial */
+   *   */
   protected LocPathIterator m_lpi;
   
   /**
@@ -613,7 +613,7 @@ public abstract class PredicatedNodeTest extends NodeTest implements SubContextL
   
   /** The list of predicate expressions. Is static and does not need 
    *  to be deep cloned.
-   *  @serial 
+   *   
    */
   private Expression[] m_predicates;
 
diff --git a/src/main/java/org/apache/xpath/axes/UnionPathIterator.java b/src/main/java/org/apache/xpath/axes/UnionPathIterator.java
index e61aa8d10..18491462d 100644
--- a/src/main/java/org/apache/xpath/axes/UnionPathIterator.java
+++ b/src/main/java/org/apache/xpath/axes/UnionPathIterator.java
@@ -463,7 +463,7 @@ public class UnionPathIterator extends LocPathIterator
    * The location path iterators, one for each
    * <a href="http://www.w3.org/TR/xpath#NT-LocationPath">location
    * path</a> contained in the union expression.
-   * @serial
+   * 
    */
   protected LocPathIterator[] m_exprs;
 
@@ -472,7 +472,7 @@ public class UnionPathIterator extends LocPathIterator
    * The location path iterators, one for each
    * <a href="http://www.w3.org/TR/xpath#NT-LocationPath">location
    * path</a> contained in the union expression.
-   * @serial
+   * 
    */
   protected DTMCursorIterator[] m_iterators;
       
diff --git a/src/main/java/org/apache/xpath/axes/WalkingIterator.java b/src/main/java/org/apache/xpath/axes/WalkingIterator.java
index 876077cfa..21b58eedb 100644
--- a/src/main/java/org/apache/xpath/axes/WalkingIterator.java
+++ b/src/main/java/org/apache/xpath/axes/WalkingIterator.java
@@ -310,11 +310,11 @@ public class WalkingIterator extends LocPathIterator implements ExpressionOwner
 
   
   /** The last used step walker in the walker list.
-   *  @serial */
+   *   */
   protected AxesWalker m_lastUsedWalker;
 
   /** The head of the step walker list.
-   *  @serial */
+   *   */
   protected AxesWalker m_firstWalker;
 
   /**
diff --git a/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java b/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java
index 103185b68..850f92000 100644
--- a/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java
+++ b/src/main/java/org/apache/xpath/functions/XSL3ConstructorOrExtensionFunction.java
@@ -77,27 +77,27 @@ public class XSL3ConstructorOrExtensionFunction extends Function
   /**
    * The namespace for the extension function, which should not normally
    *  be null or empty.
-   *  @serial    
+   *      
    */
   String m_namespace;
 
   /**
    * The local name of the extension.
-   *  @serial   
+   *     
    */
   String m_extensionName;
 
   /**
    * Unique method key, which is passed to ExtensionsTable#extFunction in
    *  order to allow caching of the method.
-   *  @serial 
+   *   
    */
   Object m_methodKey;
 
   /**
    * Array of static expressions which represent the parameters to the
    *  function.
-   *  @serial   
+   *     
    */
   Vector m_argVec = new Vector();
 
diff --git a/src/main/java/org/apache/xpath/operations/UnaryOperation.java b/src/main/java/org/apache/xpath/operations/UnaryOperation.java
index 0299f0c5c..b7525c476 100644
--- a/src/main/java/org/apache/xpath/operations/UnaryOperation.java
+++ b/src/main/java/org/apache/xpath/operations/UnaryOperation.java
@@ -34,7 +34,7 @@ public abstract class UnaryOperation extends Expression implements ExpressionOwn
     static final long serialVersionUID = 6536083808424286166L;
 
   /** The operand for the operation.
-   *  @serial */
+   *   */
   protected Expression m_right;
   
   /**
diff --git a/src/main/java/org/apache/xpath/patterns/FunctionPattern.java b/src/main/java/org/apache/xpath/patterns/FunctionPattern.java
index 331081cb6..80bdccca8 100644
--- a/src/main/java/org/apache/xpath/patterns/FunctionPattern.java
+++ b/src/main/java/org/apache/xpath/patterns/FunctionPattern.java
@@ -65,7 +65,7 @@ public class FunctionPattern extends StepPattern
 
   /**
    * Should be a {@link org.apache.xpath.functions.Function expression}.
-   *  @serial   
+   *     
    */
   Expression m_functionExpr;
   
diff --git a/src/main/java/org/apache/xpath/patterns/NodeTest.java b/src/main/java/org/apache/xpath/patterns/NodeTest.java
index 30b67d5bf..a6336a660 100644
--- a/src/main/java/org/apache/xpath/patterns/NodeTest.java
+++ b/src/main/java/org/apache/xpath/patterns/NodeTest.java
@@ -54,7 +54,7 @@ public class NodeTest extends Expression
 
   /**
    * This attribute determines which node types are accepted.
-   * @serial
+   * 
    */
   protected int m_whatToShow;
 
@@ -90,7 +90,7 @@ public class NodeTest extends Expression
 
   /**
    * The namespace to be tested for, which may be null.
-   *  @serial 
+   *   
    */
   String m_namespace;
 
@@ -116,7 +116,7 @@ public class NodeTest extends Expression
 
   /**
    * The local name to be tested for.
-   *  @serial 
+   *   
    */
   protected String m_name;
 
@@ -147,7 +147,7 @@ public class NodeTest extends Expression
    *  {@link #SCORE_NSWILD},
    *  {@link #SCORE_QNAME}, or
    *  {@link #SCORE_OTHER}.
-   *  @serial
+   *  
    */
   XNumber m_score;
 
@@ -293,7 +293,7 @@ public class NodeTest extends Expression
 
   /**
    * True if this test has a null namespace and a local name of {@link #WILD}.
-   *  @serial 
+   *   
    */
   private boolean m_isTotallyWild;
   
diff --git a/src/main/java/org/apache/xpath/patterns/UnionPattern.java b/src/main/java/org/apache/xpath/patterns/UnionPattern.java
index d9f18fdd8..8a5bdcc78 100644
--- a/src/main/java/org/apache/xpath/patterns/UnionPattern.java
+++ b/src/main/java/org/apache/xpath/patterns/UnionPattern.java
@@ -36,7 +36,7 @@ public class UnionPattern extends Expression
     static final long serialVersionUID = -6670449967116905820L;
 
   /** Array of the contained step patterns to be tested.
-   *  @serial  */
+   *    */
   private StepPattern[] m_patterns;
   
   /**
diff --git a/src/main/java/org/apache/xpath/regex/Pattern.java b/src/main/java/org/apache/xpath/regex/Pattern.java
index f57b34c38..90f265cfb 100644
--- a/src/main/java/org/apache/xpath/regex/Pattern.java
+++ b/src/main/java/org/apache/xpath/regex/Pattern.java
@@ -239,14 +239,14 @@ public final class Pattern
     /**
      * The original regular-expression pattern string.
      *
-     * @serial
+     * 
      */
     private String pattern;
 
     /**
      * The original pattern flags.
      *
-     * @serial
+     * 
      */
     private int flags;
 


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